from django.db import models
from django.contrib.auth.models import User
import time
from datetime import datetime
from PIL import Image

class Categoria_stock_fixo(models.Model):
    id_anfitriao = models.IntegerField(null=True)
    categoria = models.CharField(max_length=100)
    imagem = models.ImageField(upload_to='categoria_farmacia',null=True)
    caixa = models.IntegerField(null=True)
    status = models.IntegerField(null=True,default=1)

    def save(self,*args,**kwargs):
        super().save(*args,**kwargs)
        try:
            img = Image.open(self.imagem.path)
            if img.height > 300 or img.weight > 300:
                output_size = (600,600)
                img.thumbnail(output_size)
                img.save(self.imagem.path)
        except:
                try:
                    output_size = (600,600)
                    img.thumbnail(output_size)
                    img.save(self.imagem.path)
                except:pass
        else:pass

class Stok_fixo(models.Model):
    data = time.strftime('%d/%m/%y')
    hora = time.strftime('%H:%M:%S')
    id_anfitriao = models.IntegerField(null=True)
    id_categoria = models.IntegerField(null=True,default=0)

    produto = models.CharField(max_length=100)
    imagem = models.ImageField(upload_to='produtos_farmacia',null=True)
    preco = models.IntegerField()
    lucro = models.IntegerField(null=True,default=0)

    categoria = models.CharField(max_length=100,null=True)
    data_venda = models.CharField(max_length=20,default=data)
    hora_venda = models.CharField(max_length=20,default=hora)
    responsavel = models.CharField(max_length=100,null=True)

    def __str__(self):
        return f'{self.produto}'

    def save(self,*args,**kwargs):
        super().save(*args,**kwargs)
        try:
            img = Image.open(self.imagem.path)
            if img.height > 300 or img.weight > 300:
                output_size = (600,600)
                img.thumbnail(output_size)
                img.save(self.imagem.path)
        except:
                try:
                    output_size = (600,600)
                    img.thumbnail(output_size)
                    img.save(self.imagem.path)
                except:pass
        else:pass

class Produto_vendido_fixo(models.Model):
    data = time.strftime('%d/%m/%y')
    hora = time.strftime('%H:%M:%S')
    id_anfitriao = models.IntegerField(null=True,verbose_name="Anfitriao")
    produto = models.CharField(max_length=100,verbose_name="Produto")
    imagem = models.ImageField(upload_to='produtos_farmacia')
    quantidade = models.IntegerField(verbose_name="Quantidade")
    preco = models.IntegerField(verbose_name="preco")
    lucro = models.IntegerField(null=True,default=0,verbose_name="lucro")

    data_venda = models.CharField(max_length=20,default=data)
    hora_venda = models.CharField(max_length=20,default=hora)
    responsavel = models.CharField(max_length=100,null=True)

    def __str__(self):
        return f'{self.produto}'

class Feixo_diario_fixo(models.Model):
    data = time.strftime('%d/%m/%y')
    hora = time.strftime('%H:%M:%S')
    id_anfitriao = models.IntegerField(null=True,verbose_name="Anfitriao")
    produto = models.CharField(max_length=100,verbose_name="Produto")
    imagem = models.ImageField(upload_to='produtos_farmacia')
    quantidade = models.IntegerField(verbose_name="Quantidade")
    preco = models.IntegerField(verbose_name="preco")
    lucro = models.IntegerField(null=True,default=0,verbose_name="lucro")

    data_venda = models.CharField(max_length=20,default=data)
    hora_venda = models.CharField(max_length=20,default=hora)
    responsavel = models.CharField(max_length=100,null=True)
    
############ tela stock
class Categoria_stock(models.Model):
    id_anfitriao = models.IntegerField(null=True)
    categoria = models.CharField(max_length=100)
    imagem = models.ImageField(upload_to='categoria_farmacia',null=True)
    caixa = models.IntegerField(null=True)
    status = models.IntegerField(null=True,default=1)

    def save(self,*args,**kwargs):
        super().save(*args,**kwargs)
        try:
            img = Image.open(self.imagem.path)
            if img.height > 300 or img.weight > 300:
                output_size = (600,600)
                img.thumbnail(output_size)
                img.save(self.imagem.path)
        except:
                try:
                    output_size = (600,600)
                    img.thumbnail(output_size)
                    img.save(self.imagem.path)
                except:pass
        else:pass
    
class Stok(models.Model):
    id_anfitriao = models.IntegerField(null=True)
    id_categoria = models.IntegerField(null=True,default=0)
    nome_generico = models.CharField(max_length=100)
    nome_comercial = models.CharField(max_length=100)
    unidade_medida = models.CharField(max_length=100,null=True)
    subcateg = models.CharField(max_length=100,null=True)
    
    importadora = models.CharField(max_length=100,null=True)
    
    categoria = models.CharField(max_length=100,null=True) # grupofarmacologico
    
    quantidade = models.IntegerField()
    preco = models.IntegerField()
    lucro = models.IntegerField(null=True,default=0)
    imagem = models.ImageField(upload_to='stock_farmacia')

    lote = models.CharField(max_length=20,null=True)

    data_validade = models.CharField(max_length=20,null=True)


    data_venda = models.CharField(max_length=20)
    hora_venda = models.CharField(max_length=20)
    responsavel = models.CharField(max_length=100,null=True)

    def __str__(self):
        return f'{self.nome_generico}'

    def save(self,*args,**kwargs):
        super().save(*args,**kwargs)
        try:
            img = Image.open(self.imagem.path)
            if img.height > 300 or img.weight > 300:
                output_size = (600,600)
                img.thumbnail(output_size)
                img.save(self.imagem.path)
        except:
                try:
                    output_size = (600,600)
                    img.thumbnail(output_size)
                    img.save(self.imagem.path)
                except:pass
        else:pass

class Stok_Armazem(models.Model):
    id_anfitriao = models.IntegerField(null=True)
    id_stock = models.IntegerField(null=True)
    id_categoria = models.IntegerField(null=True,default=0)
    nome_generico = models.CharField(max_length=100)
    nome_comercial = models.CharField(max_length=100)
    unidade_medida = models.CharField(max_length=100,null=True)
    subcateg = models.CharField(max_length=100,null=True)

    categoria = models.CharField(max_length=100,null=True) # grupofarmacologico
    
    quantidade = models.IntegerField(null=True)
    preco = models.IntegerField(null=True)
    lucro = models.IntegerField(null=True,default=0)


    def __str__(self):
        return f'{self.nome_generico}'

    


# eventos diarios

class Produto_vendido(models.Model):
    id_anfitriao = models.IntegerField(null=True)
    nome_comercial = models.CharField(max_length=100)
    nome_generico = models.CharField(max_length=100)
    unidade_medida = models.CharField(max_length=100)
    subcateg = models.CharField(max_length=100,null=True)

    
    categoria = models.CharField(max_length=100,null=True)
    imagem = models.ImageField(upload_to='stock_farmacia')
    quantidade = models.IntegerField()
    preco = models.IntegerField()
    lucro = models.IntegerField(null=True,default=0)

    data_venda = models.CharField(max_length=20)
    hora_venda = models.CharField(max_length=20)
    responsavel = models.CharField(max_length=100,null=True)
    
class Facturas_diarias(models.Model):
    id_anfitriao = models.IntegerField(null=True,default=0)
    id_resp = models.IntegerField(null=True,default=0)
    factura = models.TextField(null=True,default='')
    preco = models.TextField(null=True,default='')
    quantidade = models.TextField(null=True,default='')
    data = models.CharField(max_length=20)
    total = models.IntegerField(null=True,default=0)
    responsavel = models.CharField(max_length=100,null=True)
# carinho
class Produto_vendido_carinho(models.Model):
    id_P = models.IntegerField(null=True)
    
    id_anfitriao = models.IntegerField(null=True)
    nome_comercial = models.CharField(max_length=100)
    nome_generico = models.CharField(max_length=100)
    unidade_medida = models.CharField(max_length=100)
    subcateg = models.CharField(max_length=100,null=True)
    
    categoria = models.CharField(max_length=100,null=True)
    imagem = models.ImageField(upload_to='stock_farmacia')
    quantidade = models.IntegerField()
    preco = models.IntegerField()
    lucro = models.IntegerField(null=True,default=0)


    data_venda = models.CharField(max_length=20)
    hora_venda = models.CharField(max_length=20)
    responsavel = models.CharField(max_length=100,null=True)

class Feixo_data(models.Model):
    id_anfitriao = models.IntegerField(null=True,default=0)
    id_resp = models.IntegerField(null=True,default=0)
    factura = models.CharField(max_length=5000)
    quantidade = models.IntegerField()
    data = models.CharField(max_length=20)
    total = models.IntegerField(null=True,default=0)
    responsavel = models.CharField(max_length=100,null=True)

class Feixo_diario(models.Model):
    id_anfitriao = models.IntegerField(null=True)
    nome_comercial = models.CharField(max_length=100)
    nome_generico = models.CharField(max_length=100)
    unidade_medida = models.CharField(max_length=100)
    subcateg = models.CharField(max_length=100,null=True)
    
    categoria = models.CharField(max_length=100,null=True)
    imagem = models.ImageField(upload_to='stock_farmacia')
    quantidade = models.IntegerField()
    preco = models.IntegerField()
    lucro = models.IntegerField(null=True,default=0)


    data_venda = models.CharField(max_length=20)
    hora_venda = models.CharField(max_length=20)
    responsavel = models.CharField(max_length=100,null=True)

class Facturas(models.Model):
    id_anfitriao = models.IntegerField(null=True,default=0)
    id_resp = models.IntegerField(null=True,default=0)
    factura = models.TextField(null=True,default='')
    preco = models.TextField(null=True,default='')
    quantidade = models.TextField(null=True,default='')
    data = models.CharField(max_length=20)
    total = models.IntegerField(null=True,default=0)
    responsavel = models.CharField(max_length=100,null=True)

class ControlGraficoAdmin(models.Model):
    id_anfitriao = models.IntegerField(null=True)
    nome = models.CharField(max_length=50)
    dados = models.IntegerField()

    class Meta:
        verbose_name_plural = 'Dados do grafico'

    def __str__(self):
        return f'{self.nome}-{self.dados}'




class Todos_Eventos(models.Model):
    id_anfitriao = models.IntegerField(null=True)
    id_resp = models.IntegerField(null=True,default=0)
    tipo = models.CharField(null=True,max_length=100)
    evento = models.CharField(null=True,max_length=100)
    data = models.CharField(max_length=20)
    responsavel = models.CharField(max_length=100,null=True)



class Despesa(models.Model):
    id_anfitriao = models.IntegerField(null=True)
    id_resp = models.IntegerField(null=True,default=0)
    despesa = models.CharField(null=True,max_length=100)
    
class Despesas(models.Model):
    id_anfitriao = models.IntegerField(null=True)
    id_resp = models.IntegerField(null=True,default=0)
    despesa = models.CharField(null=True,max_length=200)
    valor = models.IntegerField(null=True,default=0)
    descricao = models.CharField(null=True,max_length=300)
    data = models.CharField(null=True,max_length=20,default='05/08/2024')


    
    
class Fornecedores(models.Model):
    id_anfitriao = models.IntegerField(null=True)
    id_resp = models.IntegerField(null=True,default=0)
    nome = models.CharField(null=True,max_length=200)
    categoria = models.CharField(null=True,max_length=300)
    contacto = models.CharField(null=True,max_length=20)
    email = models.CharField(null=True,max_length=100)
    localizacao = models.CharField(null=True,max_length=100)

class Meus_Pedidos(models.Model):
    id_anfitriao = models.IntegerField(null=True)
    id_resp = models.IntegerField(null=True,default=0)
    nr_factura = models.IntegerField(null=True)
    id_fornecedor = models.IntegerField(null=True)
    fornecedor = models.CharField(max_length=200,null=True)
    status = models.CharField(max_length=20,null=True,default='aberto')
    total = models.IntegerField(null=True)

    data = models.CharField(null=True,max_length=20)

class Itens_Pedidos(models.Model):
    id_anfitriao = models.IntegerField(null=True)
    id_resp = models.IntegerField(null=True,default=0)
    id_pedido = models.IntegerField(null=True)
    nome_generico = models.CharField(max_length=100,null=True)
    nome_comercial = models.CharField(max_length=100,null=True)
    
    lote = models.CharField(max_length=100,null=True)
    quantidade = models.IntegerField(null=True)
    preco_unitario = models.IntegerField(null=True)
    total_liquido = models.IntegerField(null=True)
    data = models.CharField(null=True,max_length=20)
    data_validade = models.CharField(null=True,max_length=20)

