"""Employee invitation emails sent from the platform domain.""" from __future__ import annotations from sqlalchemy.ext.asyncio import AsyncSession from app.config import get_settings from app.models import Account from app.services.domain_provisioning import get_domain_by_name from app.services.email_templates import BRAND_NAME, build_employee_invitation_email from app.services.mail_sender import deliver_email async def send_employee_invitation( session: AsyncSession, *, member: Account, manager: Account, initial_password: str, force_password_change: bool, ) -> None: if not member.invitation_email: raise ValueError("Invitation email is required.") settings = get_settings() platform_domain = await get_domain_by_name(session, settings.platform_domain) if platform_domain is None: raise ValueError("Platform mail domain is not configured.") login_url = f"https://{settings.app_public_host}/login" manager_name = f"{manager.first_name} {manager.last_name}".strip() company = member.company_domain or settings.platform_domain subject, body_text, body_html = build_employee_invitation_email( member_first_name=member.first_name, member_email=member.email, manager_name=manager_name, manager_email=manager.email, company_domain=company, login_url=login_url, initial_password=initial_password, force_password_change=force_password_change, ) sender = f"{BRAND_NAME} " await deliver_email( sender=sender, recipients=[member.invitation_email], cc=[], bcc=[], subject=subject, body_text=body_text, body_html=body_html, domain=platform_domain, reply_to=manager.email, )