from django.db import models
from django.contrib.auth.models import User
import os
from tinymce import models as tinymce_models
from model_utils import Choices

# Create your models here.
class area(models.Model):
    nombre = models.CharField(max_length=250, null=False, unique=True, verbose_name='Nombre')
    ib = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, verbose_name='Asignado IB')
    def __str__(self):
        return self.nombre
    
    class Meta:
        verbose_name = 'Area'
        verbose_name_plural = 'Areas'
        ordering = ['nombre']


class equipo(models.Model):
    nombre = models.CharField(max_length=250, null=False, unique=True, verbose_name='Nombre')
    def __str__(self):
        return self.nombre
    
    class Meta:
        verbose_name = 'Tipo de Equipo'
        verbose_name_plural = 'Tipo de Equipos'
        ordering = ['nombre']


class marca(models.Model):
    nombre = models.CharField(max_length=250, null=False, unique=True, verbose_name='Nombre')
    def __str__(self):
        return self.nombre
    
    class Meta:
        verbose_name = 'Marca'
        verbose_name_plural = 'Marcas'
        ordering = ['nombre']


class ubicacion(models.Model):
    nombre = models.CharField(max_length=200, null=False, unique=True, verbose_name='Nombre')
    def __str__(self):
        return self.nombre
    
    class Meta:
        verbose_name = 'Ubicacion'
        verbose_name_plural = 'Ubicacion'
        ordering = ['nombre']


class pieza(models.Model):
    STATUS = Choices('Nuevo', 'Usado')
    usuario = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
    n_pedido = models.CharField(max_length=200, null=True, blank=True, verbose_name='No. Pedido', default=' ')
    referencia = models.CharField(max_length=200, unique=True, null=False, verbose_name='Referencia')
    equipo = models.ForeignKey(equipo, on_delete=models.CASCADE, null=False, blank=False, verbose_name='Equipo')
    descripcion_etiqueta = tinymce_models.HTMLField(null=True, verbose_name='Descripción de Etiqueta')
    descripcion_pieza = tinymce_models.HTMLField(null=True, verbose_name='Descripción de la Pieza')
    marca = models.ForeignKey(marca, on_delete=models.CASCADE, null=False, blank=False, verbose_name='Marca')
    estatus = models.CharField(choices=STATUS, default=STATUS.Nuevo, max_length=20, verbose_name='Estatus')
    ubicacion = models.ForeignKey(ubicacion, on_delete=models.CASCADE, null=False, blank=False, verbose_name='Ubicacion')
    cantidad = models.IntegerField(null=True, blank=True, default=0, verbose_name='Cantidad')
    fecha_alta = models.DateField(auto_now_add=True, verbose_name='Fecha alta')
    fecha_actualizacion = models.DateField(auto_now=True, verbose_name='Fecha de Actualización')
    Column1 = models.CharField(max_length=100, null=True, blank=True, verbose_name='Column1', default=' ')
        
    def delete(self, *args, **kwargs):
        if os.path.isfile(self.imagen.path):
            os.remove(self.imagen.path)
        super(pieza, self).delete(*args, **kwargs)
    
    def __str__(self):
        return self.referencia
    
    class Meta:
        verbose_name = 'pieza'
        verbose_name_plural = 'piezas'
        ordering = ['ubicacion']


class rentrada(models.Model):
    usuario = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
    autor = models.CharField(max_length=250, null=True, blank=True)
    n_pedido = models.CharField(max_length=200, null=True, blank=True, verbose_name='No. Pedido')
    referencia = models.ForeignKey(pieza, on_delete=models.CASCADE, null=False, blank=False, verbose_name='Referencia')
    cantidad = models.IntegerField(verbose_name='Cantidad')
    fecha_alta = models.DateField(auto_now_add=True, verbose_name='Fecha Entrada')
        
    def __str__(self):
        return self.referencia
    
    class Meta:
        verbose_name = 'Entrada'
        verbose_name_plural = 'Entradas'
        ordering = ['-id']


class rsalida(models.Model):
    usuario = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
    autor = models.CharField(max_length=250, null=True, blank=True)
    referencia = models.ForeignKey(pieza, on_delete=models.CASCADE, null=False, blank=False, verbose_name='Referencia')
    cantidad = models.IntegerField(verbose_name='Cantidad')
    fecha_alta = models.DateField(auto_now_add=True, verbose_name='Fecha alta')
        
    def delete(self, *args, **kwargs):
        if os.path.isfile(self.imagen.path):
            os.remove(self.imagen.path)
        super(pieza, self).delete(*args, **kwargs)
    
    def __str__(self):
        return self.referencia
    
    class Meta:
        verbose_name = 'Salida'
        verbose_name_plural = 'Salidas'
        ordering = ['-id']