from django.core.mail import send_mail
import codecs
import sys

sender_email = 'noreply@ujonc.kszk.bme.hu'
link = 'https://ujonc.kszk.bme.hu/homework'


def get_full_name(user):
    return user.last_name + " " + user.first_name


def read_email(name):
    with codecs.open('common/emails/' + name, 'r', 'utf-8') as myfile:
        data = myfile.read()
    return data


def send_out_mail(subject, message, sender_email, receiver_email):
    if 'runserver' in sys.argv:
        # It is in development
        print("Email sent from: " + str(sender_email) + " to: " + str(receiver_email))
    else:
        send_mail(subject, message, sender_email, [receiver_email, ])


def registration(user):
    subject = "Kszképzés regisztráció"
    message = read_email('registration.txt')
    message = str.format(message % {'name': get_full_name(user)})
    send_out_mail(subject, message, sender_email, [user.email, ])
    pass


def admitted(user):
    subject = "Jelentkezés eredménye"
    message = read_email('admitted.txt')
    message = str.format(message % {'name': get_full_name(user)})
    send_out_mail(subject, message, sender_email, [user.email, ])
    pass


def denied(user):
    subject = "Jelentkezés eredménye"
    message = read_email('denied.txt')
    message = str.format(message % {'name': get_full_name(user)})
    send_out_mail(subject, message, sender_email, [user.email, ])
    pass


def new_homework(user, deadline):
    deadline = deadline.strftime('%Y-%m-%d %H:%M')
    subject = "Új házifeladat"
    message = read_email('new_homework.txt')
    message = str.format(
        message % {'name': get_full_name(user), 'link': link, 'deadline': deadline})
    send_out_mail(subject, message, sender_email, [user.email, ])
    pass


def homework_corrected(user, title, accepted):
    subject = "Házifeladat eredménye"
    if accepted:
        status = 'Elfogadva'
    else:
        status = 'Hibás'
    message = read_email('homework_corrected.txt')
    message = str.format(message % {'name': get_full_name(user),
                                    'link': link,
                                    'status': status,
                                    'title': title})
    send_out_mail(subject, message, sender_email, [user.email, ])
    pass