This commit is contained in:
2026-03-19 15:47:42 +01:00
parent 4e19090f0f
commit 7fc9108d2a
9 changed files with 194 additions and 30 deletions
@@ -341,6 +341,33 @@ class VirtualBoxService:
)
return list(result.scalars().all())
async def get_user_sendable_mailboxes(
self,
user_id: uuid.UUID,
tenant_id: uuid.UUID,
) -> list[Mailbox]:
"""
Restituisce le caselle PEC da cui l'utente può inviare tramite VBox.
Aggregazione delle caselle associate a tutte le VBox attive a cui
l'utente è assegnato. Filtra solo caselle in stato 'active'.
"""
result = await self.db.execute(
select(Mailbox)
.join(virtual_box_mailboxes, Mailbox.id == virtual_box_mailboxes.c.mailbox_id)
.join(VirtualBox, virtual_box_mailboxes.c.virtual_box_id == VirtualBox.id)
.join(VirtualBoxAssignment, VirtualBox.id == VirtualBoxAssignment.virtual_box_id)
.where(
VirtualBoxAssignment.user_id == user_id,
VirtualBox.tenant_id == tenant_id,
VirtualBox.is_active == True,
Mailbox.status == "active",
)
.distinct()
.order_by(Mailbox.email_address)
)
return list(result.scalars().all())
# ─── Private ─────────────────────────────────────────────────────────────
async def _load_full(self, vbox_id: uuid.UUID) -> VirtualBox | None: