from django.db import models
from users.models.users import User
from package_details.models.package_details import PackageDetails
from django.utils import timezone

class UserPackage(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="package_user")
    package = models.ForeignKey(PackageDetails, on_delete=models.CASCADE, related_name="packages")
    total_ads = models.PositiveIntegerField(default=0)
    ads_posted = models.PositiveIntegerField(default=0)
    total_space = models.DecimalField(max_digits=10, decimal_places=4, default=0.0)
    used_space = models.DecimalField(max_digits=10, decimal_places=4, default=0.0)
    start_date = models.DateTimeField(auto_now_add=True)
    end_date = models.DateTimeField(null=True, blank=True)  # optional expiry

    class Meta:
        constraints = [
            models.UniqueConstraint(
                fields=["user", "package"], name="uq_userpackage_user_package"
            )
        ]

    def ads_remaining(self):
        return max(self.total_ads - self.ads_posted, 0)
    
    def is_expired(self):
        """Check if the package is expired."""
        return self.end_date and timezone.now() > self.end_date

    def __str__(self):
        return f"{self.user} ({self.ads_posted}/{self.total_ads} ads)"
