from django.db import models
from api.models.savings_plan import FundSource
from simple_history.models import HistoricalRecords


# Create your models here.('weekly', 'W'),
class PaystackPlan(models.Model):
    paystack_interval = (('daily', 'D'), ('weekly', 'W'), ('monthly', 'M'),
                         ('biannually', 'B'), ('annually', 'A'))
    name = models.CharField(max_length=100)
    currency = models.CharField(max_length=100, default="NGN")
    # key = models.CharField(max_length=100)
    interval = models.FloatField(max_length=8, choices=paystack_interval)
    amount = models.FloatField(default=0)
    code = models.CharField(max_length=200, blank=True, null=True)
    invoice_limit = models.IntegerField(blank=True, null=True)
    receivedData = models.CharField(max_length=500, blank=True, null=True)
    # RELATIONS
    fundSource = models.OneToOneField(FundSource,
                                      on_delete=models.CASCADE,
                                      blank=True,
                                      null=True,
                                      related_name='paystack_plan')
    history = HistoricalRecords()

    def __str__(self):
        return self.name

    class Meta:
        ordering = ('pk', )


class Subscription(models.Model):
    email = models.CharField(max_length=50)
    reference = models.CharField(max_length=100, unique=True)
    plan_code = models.CharField(max_length=100)
    email_token = models.CharField(max_length=100)
    subscription_code = models.CharField(max_length=100)

    # RELATIONS
    paystack_plan = models.OneToOneField(PaystackPlan,
                                         on_delete=models.CASCADE,
                                         blank=True,
                                         null=True,
                                         related_name='plan_subscription')

    def __str__(self):
        return self.reference

    class Meta:
        ordering = ('pk', )


class SubscriptionHistory(models.Model):
    data = models.CharField(max_length=400)
    dateReceived = models.DateTimeField(auto_now_add=True)

    #RELATIONS
    subscription = models.ForeignKey(Subscription,
                                     on_delete=models.CASCADE,
                                     related_name="sub_history",
                                     blank=True,
                                     null=True)

    def __str__(self):
        return self.dateReceived

    class Meta:
        ordering = ('pk', )


class FAQ(models.Model):
    question = models.CharField(max_length=400)
    answer = models.CharField(max_length=400)

    def __str__(self):
        return self.question

    class Meta:
        ordering = ('pk', )


class Testimonial(models.Model):
    email = models.CharField(max_length=100)
    photoUrl = models.CharField(max_length=200)
    content = models.CharField(max_length=400)

    def __str__(self):
        return self.email

    class Meta:
        ordering = ('pk', )
