from django.db import models
from django.contrib.auth.models import User
from django.template.loader import render_to_string
from django.template import RequestContext
from dateutil.relativedelta import relativedelta

from modules.meeting_booking.signals import *
from modules.members.models import *


class Payment(models.Model):

    TYPE_CHOICES = (
        (u'registration', u'Registration'),
        (u'renewal', u'Renewal'),
        (u'arrears', u'Membership Arrears'),
        (u'donation', u'Donation'),
        (u'meeting-booking', u'Meeting Booking'),
        (u'abstract-submission', u'Abstract Submission'),
        (u'exam-application', u'Exam Application'),
        (u'job-advert', u'Job Advert'),
   )

    STATUS_CHOICES = (
        (u'pending',u'Pending'),
        (u'complete',u'Complete'),
        (u'rejected',u'Rejected'),
    )

    member              = models.ForeignKey('members.Member',blank=True,null=True,on_delete=models.SET_NULL)
    meeting_booking     = models.ForeignKey('meeting_booking.MeetingBooking',blank=True,null=True,on_delete=models.SET_NULL)
    arrears             = models.ForeignKey('members.MemberArrears',blank=True,null=True,on_delete=models.SET_NULL)
    donation            = models.ForeignKey('donations.Donation',blank=True,null=True,on_delete=models.SET_NULL)
    abstract_submission = models.ForeignKey('abstracts.AbstractSubmission',blank=True,null=True,on_delete=models.SET_NULL)
    exam_application    = models.ForeignKey('exam_application.ExamApplication',blank=True,null=True,on_delete=models.SET_NULL)
    theory_exam         = models.ForeignKey('theory_exam.TheoryExamApplication',blank=True,null=True,on_delete=models.SET_NULL)
    job_advert          = models.ForeignKey('jobs.Job', blank=True, null=True, related_name='payment_job', on_delete=models.SET_NULL)

    type            = models.CharField(max_length=50, choices=TYPE_CHOICES)
    status          = models.CharField(max_length=50, choices=STATUS_CHOICES, default='pending')
    created         = models.DateTimeField(auto_now_add=True)
    invoice         = models.CharField(max_length=100, unique=True, blank=True, null=True)

    amount          = models.CharField(max_length=100, blank=True, null=True)

    def __unicode__(self):
        if self.type == 'donation' and self.donation:
            return """%s %s""" % (self.donation.first_name,self.donation.surname)
        else:
            return """%s - %s""" % (self.created,self.status)

    def get_name(self):
        if self.member:
            return """%s %s""" % (self.member.given_name,self.member.surname)
        else:
            if self.type == 'meeting-booking' and self.meeting_booking:
                return """%s %s""" % (self.meeting_booking.given_name,self.meeting_booking.surname)
            elif self.type == 'donation' and self.donation:
                return """%s %s""" % (self.donation.first_name,self.donation.surname)
            else:
                return "Unknown"

    def is_member(self):

        if self.member:
            return True
        else:
            return False
