"""Contact form email notifications."""
from django.conf import settings
from django.core.mail import send_mail

from .models import ContactMessage
from .partner_content import ORGANISATION_TYPE_LABELS

DEPARTMENT_EMAILS = {
    ContactMessage.Subject.PARTNERSHIP: 'partnership@pezajob.com',
    ContactMessage.Subject.TRAINING: 'training@pezajob.com',
    ContactMessage.Subject.RECRUITMENT: 'recruitment@pezajob.com',
}


def _contact_recipients(message):
    department_email = DEPARTMENT_EMAILS.get(message.subject)
    recipients = []
    if department_email:
        recipients.append(department_email)
    admin_email = getattr(settings, 'ADMIN_CONTACT_EMAIL', '')
    if admin_email and admin_email not in recipients:
        recipients.append(admin_email)
    return recipients


def notify_admin_contact_message(message):
    from accounts import events

    events.admin_contact_message(message)
    recipients = _contact_recipients(message)
    if not recipients:
        return

    lines = [
        f'Name: {message.full_name}',
        f'Email: {message.email}',
        f'Phone: {message.phone or "—"}',
    ]
    if message.company:
        lines.append(f'Organisation: {message.company}')
    if message.position:
        lines.append(f'Position: {message.position}')
    if message.organisation_type:
        org_label = ORGANISATION_TYPE_LABELS.get(
            message.organisation_type, message.organisation_type
        )
        lines.append(f'Organisation type: {org_label}')
    if message.partnership_areas:
        lines.append(f'Partnership areas: {message.partnership_areas}')
    if message.website:
        lines.append(f'Website: {message.website}')
    lines.append(f'Subject: {message.get_subject_display()}')
    lines.append('')
    lines.append(message.message)
    send_mail(
        subject=f'PEZAJOB contact: {message.get_subject_display()}',
        message='\n'.join(lines),
        from_email=settings.DEFAULT_FROM_EMAIL,
        recipient_list=recipients,
        fail_silently=True,
    )
