using BusinessModels.Clientes; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace Infra.Data.EfCore.MySql.Configurations; public class NextClienteConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder b) { // Tabela & Charset (DDL: DEFAULT CHARSET=latin1) b.ToTable("next_clientes"); b.HasCharSet("latin1"); // PK (AUTO_INCREMENT) b.HasKey(x => x.Codigo); b.Property(x => x.Codigo) .HasColumnName("codigo") .ValueGeneratedOnAdd(); b.Property(x => x.IdPlataforma).HasColumnName("id_plataforma").IsRequired(); b.Property(x => x.Nome).HasColumnName("nome").HasMaxLength(255).IsRequired(); b.Property(x => x.Cpf).HasColumnName("cpf").HasMaxLength(255).IsRequired(); b.Property(x => x.NumeroContrato).HasColumnName("numero_contrato").HasMaxLength(50); b.Property(x => x.NumeroProcesso).HasColumnName("numero_processo").HasMaxLength(50); b.Property(x => x.NumeroEmpenho).HasColumnName("numero_empenho").HasMaxLength(50); b.Property(x => x.DiaInicioApuracao).HasColumnName("dia_inicio_apuracao"); b.Property(x => x.DiaFimApuracao).HasColumnName("dia_fim_apuracao"); b.Property(x => x.Rg).HasColumnName("rg").HasMaxLength(100).IsRequired(); b.Property(x => x.Endereco).HasColumnName("endereco").HasMaxLength(255).IsRequired(); b.Property(x => x.Bairro).HasColumnName("bairro").HasMaxLength(100).IsRequired(); b.Property(x => x.Cep).HasColumnName("cep").HasMaxLength(20).IsRequired(); b.Property(x => x.Cidade).HasColumnName("cidade").HasMaxLength(255).IsRequired(); b.Property(x => x.Estado).HasColumnName("estado").HasMaxLength(2).IsRequired(); b.Property(x => x.Telefone).HasColumnName("telefone").HasMaxLength(20).IsRequired(); b.Property(x => x.Fax).HasColumnName("fax").HasMaxLength(20).IsRequired(); b.Property(x => x.Contato).HasColumnName("contato").HasMaxLength(100).IsRequired(); b.Property(x => x.Cargo).HasColumnName("cargo").HasMaxLength(100).IsRequired(); b.Property(x => x.Email).HasColumnName("email").HasMaxLength(100).IsRequired(); b.Property(x => x.Email2).HasColumnName("email2").HasMaxLength(255).IsRequired(); b.Property(x => x.Email3).HasColumnName("email3").HasMaxLength(255).IsRequired(); b.Property(x => x.Celular).HasColumnName("celular").HasMaxLength(20).IsRequired(); b.Property(x => x.CelularAtualizado).HasColumnName("celular_atualizado").HasMaxLength(20).IsRequired(); b.Property(x => x.CelularAntigo).HasColumnName("celular_antigo").HasMaxLength(20).IsRequired(); b.Property(x => x.TelefoneContato).HasColumnName("telefone_contato").HasMaxLength(20).IsRequired(); b.Property(x => x.Senha).HasColumnName("senha").HasMaxLength(100).IsRequired(); // ENUM('S','N') => YesNo (stored as string) b.Property(x => x.Ativa) .HasColumnName("ativa") .HasConversion() // grava 'S'/'N' .IsRequired(); // Legado: date '0000-00-00' e time '00:00:00' // Requer: Allow Zero Datetime=true; Convert Zero Datetime=true na connection string. b.Property(x => x.DatCad).HasColumnName("dat_cad").HasColumnType("date").IsRequired(); b.Property(x => x.HorCad).HasColumnName("hor_cad").HasColumnType("time").IsRequired(); b.Property(x => x.Segmento).HasColumnName("segmento").HasMaxLength(100).IsRequired(); b.Property(x => x.Status).HasColumnName("status").HasConversion().IsRequired(); b.Property(x => x.AtivaNews).HasColumnName("ativa_news").HasConversion().IsRequired(); b.Property(x => x.Chave).HasColumnName("chave").HasMaxLength(255).IsRequired(); b.Property(x => x.Plano).HasColumnName("plano").IsRequired(); b.Property(x => x.QtdSms).HasColumnName("qtd_sms").IsRequired(); b.Property(x => x.Login).HasColumnName("login").HasMaxLength(255).IsRequired(); b.Property(x => x.Dia).HasColumnName("dia").IsRequired(); b.Property(x => x.Ddd).HasColumnName("ddd").HasMaxLength(10).IsRequired(); b.Property(x => x.Ip).HasColumnName("ip").HasMaxLength(255).IsRequired(); b.Property(x => x.DddCidade).HasColumnName("ddd_cidade").HasMaxLength(255).IsRequired(); b.Property(x => x.LoginSoftphone).HasColumnName("login_softphone").HasMaxLength(100).IsRequired(); b.Property(x => x.SenhaSoftphone).HasColumnName("senha_softphone").HasMaxLength(100).IsRequired(); b.Property(x => x.RemetenteCelular).HasColumnName("remetente_celular").HasMaxLength(15).IsRequired(); b.Property(x => x.DiasAtraso).HasColumnName("dias_atraso").IsRequired(); b.Property(x => x.AtivarBloqueio).HasColumnName("ativar_bloqueio"); b.Property(x => x.NotaFiscal).HasColumnName("notafiscal"); b.Property(x => x.QtdDiasRetirar).HasColumnName("qtd_dias_retirar").IsRequired(); b.Property(x => x.Excluido).HasColumnName("excluido"); b.Property(x => x.QtdRamais).HasColumnName("qtd_ramais").IsRequired(); b.Property(x => x.Origem).HasColumnName("origem").HasMaxLength(10).IsRequired(); b.Property(x => x.PortalVoz).HasColumnName("portal_voz"); b.Property(x => x.MinutosPromocionais).HasColumnName("minutos_promocionais"); b.Property(x => x.MotivoTrocaPlano).HasColumnName("motivo_troca_plano").HasColumnType("text").IsRequired(); b.Property(x => x.EspecificacoesPrimeirosPassos).HasColumnName("especificacoes_primeiros_passos").HasColumnType("text").IsRequired(); b.Property(x => x.RamalAdministrativo).HasColumnName("ramal_administrativo").IsRequired(); b.Property(x => x.RamalCallcenter).HasColumnName("ramal_callcenter").IsRequired(); b.Property(x => x.NumeroVitual).HasColumnName("numero_vitual").IsRequired(); b.Property(x => x.BloquearPaypal).HasColumnName("bloquear_paypal"); b.Property(x => x.BloquearPagseguro).HasColumnName("bloquear_pagseguro"); b.Property(x => x.BloquearBoleto).HasColumnName("bloquear_boleto"); b.Property(x => x.BloquearPix).HasColumnName("bloquear_pix").IsRequired(); b.Property(x => x.DataNascimento).HasColumnName("data_nascimento").HasColumnType("date").IsRequired(); b.Property(x => x.ApiSms).HasColumnName("api_sms").HasMaxLength(2).IsRequired(); b.Property(x => x.Portabilidade).HasColumnName("portabilidade"); b.Property(x => x.AnotacoesPortabilidade).HasColumnName("anotacoes_portabilidade").HasColumnType("text").IsRequired(); b.Property(x => x.QueroReceberComodato).HasColumnName("quero_receber_comodato"); b.Property(x => x.QtdComodato).HasColumnName("qtd_comodato").IsRequired(); b.Property(x => x.ApiEnvioSms).HasColumnName("api_envio_sms"); b.Property(x => x.CodVs).HasColumnName("cod_vs").IsRequired(); b.Property(x => x.ClienteExportadoAdmin).HasColumnName("cliente_exportado_admin"); b.Property(x => x.ClienteImportado).HasColumnName("cliente_importado"); b.Property(x => x.QtdRamaisFixo).HasColumnName("qtd_ramais_fixo").IsRequired(); b.Property(x => x.QtdRamaisFixoMovel).HasColumnName("qtd_ramais_fixo_movel").IsRequired(); b.Property(x => x.Bloqueado).HasColumnName("bloqueado").IsRequired(); b.Property(x => x.DealID).HasColumnName("dealID").IsRequired(); b.Property(x => x.Anual).HasColumnName("anual"); b.Property(x => x.CodSms).HasColumnName("cod_sms").IsRequired(); b.Property(x => x.Ddd2).HasColumnName("ddd2").HasMaxLength(100).IsRequired(); b.Property(x => x.Cidade2).HasColumnName("cidade2").HasMaxLength(255).IsRequired(); b.Property(x => x.DetalhesAreaDoCliente).HasColumnName("detalhes_area_do_cliente").HasColumnType("text"); // Índices: a tabela não declara, então nenhum aqui. // Se precisar, adicionamos depois (ex.: Email único, etc). // Booleans provenientes de INT(1) b.Property(x => x.AtivarBloqueio).HasConversion(); b.Property(x => x.NotaFiscal).HasConversion(); b.Property(x => x.Excluido).HasConversion(); b.Property(x => x.PortalVoz).HasConversion(); b.Property(x => x.MinutosPromocionais).HasConversion(); b.Property(x => x.BloquearPaypal).HasConversion(); b.Property(x => x.BloquearPagseguro).HasConversion(); b.Property(x => x.BloquearBoleto).HasConversion(); b.Property(x => x.Portabilidade).HasConversion(); b.Property(x => x.QueroReceberComodato).HasConversion(); b.Property(x => x.ApiEnvioSms).HasConversion(); b.Property(x => x.ClienteExportadoAdmin).HasConversion(); b.Property(x => x.ClienteImportado).HasConversion(); b.Property(x => x.Anual).HasConversion(); } }