from django.db import models


class Category(models.Model):
    name = models.CharField(max_length=100, unique=True)

    def __str__(self):
        return self.name

class Item(models.Model):
    category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name="items")
    name = models.CharField(max_length=200)
    price = models.DecimalField(max_digits=10, decimal_places=2)  # Precio en euros
    item_id = models.IntegerField(unique=True)  # ID del ítem en el juego
    image_url = models.URLField()  # URL de la imagen del ítem

    def __str__(self):
        return self.name

class StripeLog(models.Model):
    account_id = models.IntegerField()  # ID de la cuenta en acore_auth
    username = models.CharField(max_length=100)  # Nombre de la cuenta
    email = models.EmailField()  # Correo electrónico
    acore_ip = models.GenericIPAddressField()  # IP de acore_auth
    stripe_ip = models.GenericIPAddressField(blank=True, null=True)  # IP detectada por Stripe
    product_name = models.TextField()  # Producto comprado
    amount = models.DecimalField(max_digits=10, decimal_places=2)  # Precio total
    session_id = models.CharField(max_length=255)  # ID de la sesión de Stripe
    mode = models.CharField(max_length=10, choices=[("test", "Test"), ("live", "Live")])  # Modo de Stripe
    character_name = models.CharField(max_length=100)  # Nombre del personaje que compró
    timestamp = models.DateTimeField(auto_now_add=True)  # Fecha y hora
    fulfilled = models.BooleanField(default=False)  # Si la entrega ya se procesó (evita re-entregas)

    def __str__(self):
        return f"{self.username} compró {self.product_name} por {self.amount}€ ({self.mode})"

class Pedido(models.Model):
    transaction_id = models.CharField(max_length=100, unique=True, null=True, blank=True)
    email_cliente = models.EmailField()
    estado = models.CharField(max_length=20, default="Pendiente")
    monto = models.DecimalField(max_digits=10, decimal_places=2)

    def __str__(self):
        return f"Pedido {self.transaction_id} - {self.estado}"
