# vouchers/models.py

from django.db import models
from django.utils import timezone
from django.conf import settings

class TokenCache(models.Model):
    token = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

    def is_expired(self):
        return timezone.now() > self.created_at + timezone.timedelta(minutes=29)

class Brand(models.Model):
    product_code = models.CharField(max_length=100, unique=True)
    name = models.CharField(max_length=255)
    redemption_type = models.CharField(max_length=50, null=True, blank=True)
    brand_type = models.CharField(max_length=50, null=True, blank=True)  # new
    brandColor = models.CharField(max_length=50, null=True, blank=True)  # new
    online_redemption_url = models.URLField(null=True, blank=True)     # new
    image_url = models.URLField()
    category = models.TextField(blank=True)
    description = models.TextField(null=True, blank=True)
    tnc = models.TextField(blank=True)
    important_instruction = models.TextField(null=True, blank=True)     # new
    redeem_steps = models.JSONField(null=True, blank=True)              # new, assuming JSON string
    denomination_list = models.JSONField(default=list)
    stock_available = models.BooleanField(default=True)
    updated_at = models.DateTimeField(null=True, blank=True)            # new

    def __str__(self):
        return self.name



class VoucherPurchaseHistory(models.Model):
    order_id = models.CharField(max_length=100, unique=True)
    brand = models.ForeignKey(Brand, on_delete=models.CASCADE)
    denomination = models.DecimalField(max_digits=10, decimal_places=2)
    quantity = models.IntegerField()
    response = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

from django.db import models
from django.contrib.auth import get_user_model
User = get_user_model()

class Voucher(models.Model):
    voucher_code = models.CharField(max_length=50, unique=True)
    voucher_guid = models.CharField(max_length=100, null=True, blank=True)
    brand = models.ForeignKey('Brand', on_delete=models.CASCADE)
    value = models.PositiveIntegerField()
    expiry_date = models.CharField(max_length=50)  # Could be DateField if format is consistent
    product_name = models.CharField(max_length=100, null=True, blank=True)
    voucher_name = models.CharField(max_length=255)
    status = models.CharField(max_length=20, choices=[
        ('unused', 'Unused'),
        ('used', 'Used'),
        ('expired', 'Expired'),
    ], default='unused')
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f"{self.voucher_code} - ₹{self.value}"

class UserVoucher(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    voucher = models.ForeignKey(Voucher, on_delete=models.CASCADE)
    order_id = models.CharField(max_length=100)
    assigned_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f"{self.user} ➜ {self.voucher.voucher_code}"



class VoucherPullFailure(models.Model):
    order_id = models.CharField(max_length=100)
    brand_code = models.CharField(max_length=100)
    denomination = models.DecimalField(max_digits=10, decimal_places=2)
    quantity = models.IntegerField()
    reason = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
