from django.contrib.auth.models import AbstractUser
from django.db import models

# Create your models here.


class Plan(models.Model):
    name = models.CharField(max_length=255, unique=True)
    description = models.CharField(max_length=1024, null=True, blank=True)
    cost = models.IntegerField()
    product_id = models.UUIDField(null=True, blank=True)
    image = models.CharField(max_length=1024, null=True, blank=True)

    def __str__(self):
        return f"{self.name} (£{self.cost})"


class User(AbstractUser):
    # Stripe customer ID
    stripe_id = models.CharField(max_length=255, null=True, blank=True)
    subscription_id = models.CharField(max_length=255, null=True, blank=True)
    subscription_active = models.BooleanField(null=True, blank=True)
    last_payment = models.DateTimeField(null=True, blank=True)
    paid = models.BooleanField(null=True, blank=True)
    plans = models.ManyToManyField(Plan, blank=True)

    def has_plan(self, plan):
        plan_list = [plan.name for plan in self.plans.all()]
        return plan in plan_list
