from django.db import models from django.utils import timezone from api.models import User import uuid # Create your models here. from devices.models import Device # Create your models here. class Payment(models.Model): PAYMENT_TYPES = [ ("WALLET", "Wallet"), ("TRANSFER", "Transfer"), ] id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) number_of_months = models.IntegerField() amount = models.FloatField() paid = models.BooleanField(default=False) user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="payments") paid_at = models.DateTimeField(null=True, blank=True) method = models.CharField(max_length=255, choices=PAYMENT_TYPES, default="TRANSFER") expires_at = models.DateTimeField(null=True, blank=True) created_at = models.DateTimeField(default=timezone.now) updated_at = models.DateTimeField(auto_now=True) devices = models.ManyToManyField(Device, related_name="payments") def __str__(self): return f"Payment by {self.user}" class BillFormula(models.Model): formula = models.CharField(max_length=255) base_amount = models.FloatField() discount_percentage = models.FloatField() created_at = models.DateTimeField(default=timezone.now) updated_at = models.DateTimeField(auto_now=True) def __str__(self): return self.formula class Topup(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) amount = models.FloatField() user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="topups") paid = models.BooleanField(default=False) created_at = models.DateTimeField(default=timezone.now) updated_at = models.DateTimeField(auto_now=True) def __str__(self): return f"Topup for {self.user}"