"""Email notifications for new direct messages."""
from django.conf import settings
from django.core.mail import send_mail
from django.urls import reverse


def _absolute_url(path):
    return f'{settings.SITE_URL.rstrip("/")}{path}'


def notify_new_message(message):
    from accounts import events

    events.new_message(message)
    conversation = message.conversation
    recipient = conversation.other_participant(message.sender)
    if not recipient or not recipient.email:
        return

    sender_name = message.sender.get_full_name() or message.sender.email
    job_title = conversation.job.title
    preview = message.body[:200] + ('...' if len(message.body) > 200 else '')

    send_mail(
        subject=f'New message about {job_title}',
        message=(
            f'Hi {recipient.get_short_name() or recipient.email},\n\n'
            f'{sender_name} sent you a message regarding "{job_title}":\n\n'
            f'"{preview}"\n\n'
            f'Reply: {_absolute_url(reverse("messaging:inbox_conversation", kwargs={"pk": conversation.pk}))}\n\n'
            '-- PEZAJOB'
        ),
        from_email=settings.DEFAULT_FROM_EMAIL,
        recipient_list=[recipient.email],
        fail_silently=True,
    )
