from typing import Callable, cast
from django.db import models
from django.db.models.deletion import CASCADE

from account.models import User

# Create your models here.
class Category(models.Model):
    title                   = models.CharField(max_length=200) 


class Post(models.Model):
    status_choice           =(
        ('open', 'open'),
        ('closed', 'closed'),
        ('pending', 'pending'),
    )

    type_choice           =(
        ('monthly', 'monthly'),
        ('yearly', 'yearly'),
        ('one_time', 'one_time'),
    )

    title                   = models.CharField(max_length=50,null=False)
    description             = models.TextField(max_length=16383,null=False)
    banner                  = models.ImageField(upload_to='campaign', null=False)
    target_amount           = models.IntegerField(null=False)
    created_time            = models.DateTimeField(auto_now=True)
    category                = models.ForeignKey(Category,on_delete=CASCADE,null=False)
    post_status             = models.CharField(max_length=50,choices=status_choice,null=False,default='pending')
    post_owner              = models.ForeignKey(User,on_delete=CASCADE,null=False)
    expiry_date             = models.DateField(null=True)
    post_type               = models.CharField(max_length=50,choices=type_choice,null=False,default='custom')
    def __str__(self):
        return self.title


class Donation(models.Model):
    amount                  = models.IntegerField(null=False)
    donor                   = models.ForeignKey(User,on_delete=CASCADE,null=False)
    donation_date           = models.DateField(auto_now_add=True)

class Comment(models.Model):
    post                    = models.ForeignKey(Post,related_name='comment',on_delete=CASCADE,null=False)
    comment                 = models.CharField(max_length=1000,null=True)
    user                    = models.ForeignKey(User,on_delete=CASCADE,null=False)
    donation                = models.ForeignKey(Donation,on_delete=CASCADE,null=True,blank=True)

class Reply(models.Model):
    reply                   = models.CharField(max_length=2000,null=False)
    comment                 = models.ForeignKey(Comment,related_name='replies',on_delete=CASCADE,null=False)
    user                    = models.ForeignKey(User,on_delete=CASCADE,null=False)


class Payment(models.Model):
    post                    = models.ForeignKey(Post,on_delete=CASCADE)
    paid_amount             = models.IntegerField(default=0)
    payment_date            = models.DateField(auto_now_add=True)
