from modules.notifications.models import EmailTemplate, send_mail
from django.core.urlresolvers import reverse


def cpd_record_submitted(request, cpd_submission):

    try:
        template = EmailTemplate.objects.get(key='cpd_record_submitted_admin')

        message = template.content % (
            cpd_submission.member.given_name, cpd_submission.member.surname, cpd_submission.member.membership_number, cpd_submission.member.user.email,
            request.META['HTTP_HOST'], reverse('view_member', args=[cpd_submission.member.id])
        )
        subject = template.subject

        send_mail(template.key, subject, message, template.from_address.email_address, template.get_to_addresses())
    except Exception as e:
        raise e


def cpd_record_submitted_pending(request, cpd_submission):

    # admin email
    try:
        template = EmailTemplate.objects.get(key='cpd_record_submitted_pending_admin')
        message = template.content % (
            cpd_submission.member.given_name, cpd_submission.member.surname, cpd_submission.member.membership_number, cpd_submission.member.user.email,
            request.META['HTTP_HOST'], reverse('admin_cpd_submissions')
        )
        subject = template.subject

        send_mail(template.key, subject, message, template.from_address.email_address, template.get_to_addresses())
    except Exception as e:
        raise e


def cpd_record_approved(request, cpd_submission):

    try:
        template = EmailTemplate.objects.get(key='cpd_record_approved')
        message = template.content % (cpd_submission.activity_name)
        subject = template.subject

        send_mail(template.key, subject, message, template.from_address.email_address, cpd_submission.member.user.email)
    except Exception as e:
        raise e


def cpd_record_rejected(request, cpd_submission):

    try:
        template = EmailTemplate.objects.get(key='cpd_record_rejected')
        message = template.content % (cpd_submission.activity_name)
        subject = template.subject

        send_mail(template.key, subject, message, template.from_address.email_address, cpd_submission.member.user.email)
    except Exception as e:
        raise e


def cpd_certificate_generated(request, cpd_year):

    try:
        template = EmailTemplate.objects.get(key='cpd_certificate_generated')
        message = template.content
        subject = template.subject

        if cpd_year.certificate:
            send_mail(template.key, subject, message, template.from_address.email_address, cpd_year.member.user.email, [], [cpd_year.certificate])
        else:
            send_mail(template.key, subject, message, template.from_address.email_address, cpd_year.member.user.email)

    except Exception as e:
        raise e
