import enum
from sqlalchemy import Column, Integer, String, ForeignKey, TIMESTAMP, Float, Enum
from sqlalchemy.orm import relationship

from ..database import Base

class TipoOrcamento(enum.Enum):
    Mensal = "Mensal"
    Bimestral = "Bimestral"
    Trimestral = "Trimestral"
    Semestral = "Semestral"
    Anual = "Anual"
    Avulso = "Avulso"

class SituacaoOrcamento(enum.Enum):
    Pendente = "Pendente"
    Aprovado = "Aprovado"
    Reprovado = "Reprovado"

class Orcamento(Base):
    __tablename__ = "orcamento"

    id = Column(Integer, primary_key=True, name="orc_id")
    usuario_id = Column(Integer, ForeignKey("usuario.usu_id"), name="usu_id")
    cliente_id = Column(Integer, ForeignKey("cliente.cli_id"), name="cli_id")
    tipo = Column(Enum(TipoOrcamento), name="orc_tipo")
    situacao = Column(Enum(SituacaoOrcamento), name="orc_situacao")
    data_emissao = Column(TIMESTAMP, name="orc_data_emissao")

    usuario = relationship("Usuario", back_populates="orcamentos")
    cliente = relationship("Cliente", back_populates="orcamentos", lazy="joined")
    produtos = relationship("ProdutoOrcamento", back_populates="orcamento", lazy="joined")
    servicos = relationship("ServicoOrcamento", back_populates="orcamento", lazy="joined")
    lancamentos = relationship("LancamentoReceita", back_populates="orcamento")
    movimentacoes = relationship("MovimentacaoEstoque", back_populates="orcamento")
