Добрый день!
Умные люди, подскажите изящное решение задачи.
Есть список пользователей (Recipiеnt),
таблица с рассылками (MassMail)
и таблица связи LinkRecipiеntToMassMail.
Задача: в редакторе рассылки мне нужно вывести полный список пользователей с галкой, которая означает, что пользователь подписан на на рассылку.
Управление подпиской на рассылку должно быть на одной странице. Как-то так выглядит:
Это попытка миграции старого приложения, по этому, нужно что бы в LinkRecipiеntToMassMail появилась строка: id пользователя - id рассылки и удалить ее, если галку сняли. Те буквально или есть запись в таблице или нет, без признака ON/OFF. Запись есть - значит подписан.
Как я решил задачу: в базе я сделал редактируемую вьюху (все рассылки + все пользователи) + с тот самый left join LinkRecipiеntToMassMail. В jmix прописал ее как entity, и в целом, все устраивает. Но если мне потребуется вывести все рассылки с Подписанными на них пользователями, у меня, естественно, выводятся все пользователи включая не подписанных (left join же).
В итоге, я сделал 3 entity в jmix для каждой таблицы с связью association many to one. Теперь, для вывода рассылки+подписанные пользователи использую эту связку.
Как-то это можно реализовать попроще, к примеру, как-то подправить запрос в лоадере?
И второй вопрос: таблица вывода всех рассылок и подписанных пользователей. Такой код:
<table id="edoTypesTable"
[...]
<column id="recipientsList" caption="Получатели уведомлений" width="280"/>
<column id="recipientsList.recipientIdLink.fullName" caption="Имя получателя" width="280"/>
<column id="recipientsList.recipientIdLink.eMail" caption="Адрес получателя" width="280"/>
В recipientsList - выводится имя сущности LinkRecipiеntToMassMail так же как и в recipientsList.recipientIdLink.fullName и eMail.
Как вывести поля отдельно? Запрос в лоадере править нужно, верно я понимаю?