from sqlalchemy import Column, Integer, String, DateTime, Boolean, Time, Numeric
from database import Base

class User(Base):
    __tablename__ = "Usuario"
    __table_args__ = {"schema": "dbo", "keep_existing": True}

    IdUsuario = Column(Integer, primary_key=True, index=True)
    Nome = Column(String)
    Senha = Column(String)
    Email = Column(String, unique=True, index=True)
    Telefone = Column(String, nullable=True)
    Celular = Column(String, nullable=True)
    Cargo = Column(String, nullable=True)
    DataCadastro = Column(DateTime, nullable=True)
    DataAlteracao = Column(DateTime, nullable=True)
    DataUltimoAcesso = Column(DateTime, nullable=True)
    IdCliente = Column(Integer, nullable=True)
    IdContador = Column(Integer, nullable=True)
    IdEstado = Column(Integer, nullable=True)
    IdPerfil = Column(Integer, nullable=True)
    UsuarioMaster = Column(Boolean, nullable=True)
    DataExpiracao = Column(DateTime, nullable=True)
    DiasTrabalho = Column(String, nullable=True)
    HoraInicioExpediente = Column(Time, nullable=True)
    HoraFimExpediente = Column(Time, nullable=True)
    IdUsuarioCrm = Column(Integer, nullable=True)
    Mesoregiao = Column(String, nullable=True)
    SenhaBCrypt = Column(String, nullable=True)
    Status = Column(String, nullable=True)
    SenhaNovoPadrao = Column(String, nullable=True)
    token = Column(String, nullable=True, index=True)

class Cliente(Base):
    __tablename__ = "Cliente"
    __table_args__ = {"schema": "dbo", "keep_existing": True}

    Id = Column(Integer, primary_key=True, index=True)
    Token = Column(String, nullable=True, index=True)
    RazaoSocial = Column(String, nullable=True)
    NomeFantasia = Column(String, nullable=True)
    Cnpj = Column(String, nullable=True, index=True)
    IdRegimeTributario = Column(Integer, nullable=True)
    IdEstado = Column(Integer, nullable=True)
    ContatoOperacional = Column(String, nullable=True)
    EmailOperacional = Column(String, nullable=True)
    TelefoneOperacional = Column(String, nullable=True)
    CelularOperacional = Column(String, nullable=True)
    ContatoFinanceiro = Column(String, nullable=True)
    EmailCobranca = Column(String, nullable=True)
    Telefone = Column(String, nullable=True)
    Celular = Column(String, nullable=True)
    NumeroLojas = Column(Integer, nullable=True)
    Endereco = Column(String, nullable=True)
    EnderecoNumero = Column(String, nullable=True)
    EnderecoComplemento = Column(String, nullable=True)
    Cep = Column(String, nullable=True)
    Bairro = Column(String, nullable=True)
    Cidade = Column(String, nullable=True)
    InscricaoEstadual = Column(String, nullable=True)
    Site = Column(String, nullable=True)
    NomeRede = Column(String, nullable=True)
    ContatoRede = Column(String, nullable=True)
    TelefoneRede = Column(String, nullable=True)
    IdRetaguarda = Column(Integer, nullable=True)
    Prospeccao = Column(Boolean, nullable=True)
    Parceiro = Column(Boolean, nullable=True)
    IdSegmentoCliente = Column(Integer, nullable=True)
    IdUsuarioUltimoDownloadRevisaoFiscal = Column(Integer, nullable=True)
    DataUltimoDownloadRevisaoFiscal = Column(DateTime, nullable=True)
    IdUsuarioUltimoDownloadRevisaoFiscalCancelado = Column(Integer, nullable=True)
    DataUltimoDownloadRevisaoFiscalCancelado = Column(DateTime, nullable=True)
    BaixarRevisaoSomenteCodigoInterno = Column(Boolean, nullable=True)
    OcultarDescricoesProdutosDownloadRevisao = Column(Boolean, nullable=True)
    NomeProprietario = Column(String, nullable=True)
    EmailProprietario = Column(String, nullable=True)
    TelefoneProprietario = Column(String, nullable=True)
    EmailCpd = Column(String, nullable=True)
    RevisadoManualmente = Column(Boolean, nullable=True)
    IdContador = Column(Integer, nullable=True)
    LimiteConsultaItensSemanalDiarioWsClientesAntigos = Column(Integer, nullable=True)
    LimiteConsultaItensDiarioWsClientesNovos = Column(Integer, nullable=True)
    IdUsuarioSuporteResponsavel = Column(Integer, nullable=True)
    IdVendedor = Column(Integer, nullable=True)
    PercentualCustoOperacional = Column(Numeric, nullable=True)
    DataExpiracaoCalculadora = Column(DateTime, nullable=True)
    NumeroCheckout = Column(Integer, nullable=True)
    NumeroFuncionarios = Column(Integer, nullable=True)
    FaturamentoMensal = Column(Numeric, nullable=True)
    MetrosQuadradosLoja = Column(Numeric, nullable=True)
    IdClienteCrm = Column(Integer, nullable=True)
    MesorregiaoEndereco = Column(String, nullable=True)
    IdGrupoEmpresarial = Column(Integer, nullable=True)
    EmailResponsavelRede = Column(String, nullable=True)
    CnaePrimario = Column(String, nullable=True)
    CnaeSecundario = Column(String, nullable=True)
    Instagram = Column(String, nullable=True)
    Facebook = Column(String, nullable=True)
    DataCriacaoProspeccao = Column(DateTime, nullable=True)
    Observacoes = Column(String, nullable=True)
    IdFilialRetaguarda = Column(Integer, nullable=True)
    TokenAtacado = Column(String, nullable=True)
    TokenIndustria = Column(String, nullable=True)
    IdOrigemCadastro = Column(Integer, nullable=True)
    IdStatusCliente = Column(Integer, nullable=True)
    TokenVarejo = Column(String, nullable=True)
    Integration = Column(String, nullable=True)
    Tipo = Column(String, nullable=True)
    IdRegimeEspecial = Column(Integer, nullable=True)