public bool AplicarAditivo([FromBody] InputAplicarAditivo inputAplicarAditivo) { bool operacaoBemSucedida = true; using (var db = new FIPEContratosContext()) { try { new bAditivo(db).AplicarAditivo(inputAplicarAditivo); } catch (Exception ex) { new bEmail(db).EnviarEmailTratamentoErro(ex, "AplicarAditivo"); operacaoBemSucedida = false; } return(operacaoBemSucedida); } }
public void AplicarAditivo(InputAplicarAditivo inputAplicarAditivo) { var aditivo = db.ContratoAditivo.FirstOrDefault(_ => _.IdContratoAditivo == inputAplicarAditivo.IdAditivo); var contrato = db.Contrato.FirstOrDefault(_ => _.IdContrato == aditivo.IdContrato); if (aditivo.IcAditivoData != null) { contrato.DtFim = aditivo.DtFimAditivada; } if (aditivo.IcAditivoValor != null) { contrato.VlContrato = aditivo.VlContratoAditivado.GetValueOrDefault(); } aditivo.DtAplicacao = DateTime.Now; aditivo.IdUsuarioAplicacao = AppSettings.constGlobalUserID; aditivo.DtIniExecucaoAditivo = DateTime.Now; aditivo.IdSituacao = 101; var lstContratoCronogramaFinanceiroAntigos = db.ContratoCronogramaFinanceiro.Where(w => w.IdContrato == contrato.IdContrato).ToList(); var lstContratoEntregaveisAntigos = db.ContratoEntregavel.Where(w => w.IdContrato == contrato.IdContrato).ToList(); var lstContratoCronogramaFinanceiroTemporaria = db.ContratoCronogramaFinanceiroTemporaria.Where(w => w.IdContrato == contrato.IdContrato).ToList(); var lstEntregaveisTemporaria = db.ContratoEntregavelTemporaria.Where(w => w.IdContrato == contrato.IdContrato).ToList(); foreach (var entregavelTemp in lstEntregaveisTemporaria) { var contratoEntregavel = new ContratoEntregavel(); contratoEntregavel.IdContrato = entregavelTemp.IdContrato; contratoEntregavel.DsProduto = entregavelTemp.DsProduto; contratoEntregavel.DtProduto = entregavelTemp.DtProduto; contratoEntregavel.IdContratoCliente = entregavelTemp.IdContratoCliente.Value; contratoEntregavel.IdFrente = entregavelTemp.IdFrente; contratoEntregavel.IdSituacao = entregavelTemp.IdSituacao; contratoEntregavel.VlOrdem = entregavelTemp.VlOrdem; db.ContratoEntregavel.Add(contratoEntregavel); db.SaveChanges(); entregavelTemp.IdEntregavel = contratoEntregavel.IdContratoEntregavel; } foreach (var parcelaTemp in lstContratoCronogramaFinanceiroTemporaria) { var contratoCronogramaFinanceiro = new ContratoCronogramaFinanceiro(); contratoCronogramaFinanceiro.CdIss = parcelaTemp.CdIss; // Retorna somente os dois ultimos caracteres do Código da Parcela string codigoReajusteParcela = parcelaTemp.CdParcela.Substring(parcelaTemp.CdParcela.Length - 2, 2); // Remove os dois ultimos caracteres do Código da Parcela parcelaTemp.CdParcela = parcelaTemp.CdParcela.Remove(parcelaTemp.CdParcela.Length - 2, 2); // Soma 1 nos dois ultimos caracteres do Código da Parcela int novoCdReajusteParcela = Convert.ToInt32(codigoReajusteParcela) + 1; codigoReajusteParcela = novoCdReajusteParcela.ToString().Length > 1 ? novoCdReajusteParcela.ToString() : "0" + novoCdReajusteParcela.ToString(); parcelaTemp.CdParcela += codigoReajusteParcela; contratoCronogramaFinanceiro.CdParcela = parcelaTemp.CdParcela; contratoCronogramaFinanceiro.DsTextoCorpoNf = parcelaTemp.DsTextoCorpoNf; contratoCronogramaFinanceiro.DtFaturamento = parcelaTemp.DtFaturamento; contratoCronogramaFinanceiro.DtNotaFiscal = parcelaTemp.DtNotaFiscal; contratoCronogramaFinanceiro.IdContratoCliente = parcelaTemp.IdContratoCliente; contratoCronogramaFinanceiro.IdSituacao = parcelaTemp.IdSituacao; contratoCronogramaFinanceiro.NuNotaFiscal = parcelaTemp.NuNotaFiscal; contratoCronogramaFinanceiro.NuParcela = parcelaTemp.NuParcela; contratoCronogramaFinanceiro.VlParcela = parcelaTemp.VlParcela; contratoCronogramaFinanceiro.IcAtraso = parcelaTemp.IcAtraso; contratoCronogramaFinanceiro.IdContrato = parcelaTemp.IdContrato; contratoCronogramaFinanceiro.IdFrente = parcelaTemp.IdFrente; db.ContratoCronogramaFinanceiro.Add(contratoCronogramaFinanceiro); db.SaveChanges(); // Busca os Registros na Tabela ContratoParcelaEntregavelTemporaria para verificar se a Parcela estava ligada com Entregaveis var lstContratoParcelaEntregavelTemp = db.ContratoParcelaEntregavelTemporaria.Where(w => w.IdParcela == parcelaTemp.IdContratoCronFinanceiro).ToList(); if (lstContratoParcelaEntregavelTemp.Count > 0) { foreach (var contratoParcEntreTemp in lstContratoParcelaEntregavelTemp) { // Busca o registro na tabela ContratoEntregavelTemporaria var contratoEntregavelTemp = lstEntregaveisTemporaria.Where(w => w.IdContratoEntregavel == contratoParcEntreTemp.IdEntregavel).FirstOrDefault(); if (contratoEntregavelTemp != null) { // Com o ContratoEntregavel e a Parcela , cria um novo registro na tabela ContratoEntregavelParcela var contratoParcelaEntregavel = new ContratoParcelaEntregavel(); contratoParcelaEntregavel.IdEntregavel = contratoEntregavelTemp.IdEntregavel.Value; contratoParcelaEntregavel.IdParcela = contratoCronogramaFinanceiro.IdContratoCronFinanceiro; db.ContratoParcelaEntregavel.Add(contratoParcelaEntregavel); db.SaveChanges(); } // Após copiar o relacionamento entre Parcela e Entregavel remove o registro db.ContratoParcelaEntregavelTemporaria.Remove(contratoParcEntreTemp); db.SaveChanges(); } } // Após copiar a Parcela , exclui da tabela Temporaria db.ContratoCronogramaFinanceiroTemporaria.Remove(parcelaTemp); db.SaveChanges(); } // Remove todos os registros de EntregaveisTemporaria do devido Contrato db.ContratoEntregavelTemporaria.RemoveRange(lstEntregaveisTemporaria); db.SaveChanges(); // Busca todas as relações antigas entre Parcela e Entregavel e exclui foreach (var entregavelAntigo in lstContratoEntregaveisAntigos) { var lstParcelaEntregavelAntigo = db.ContratoParcelaEntregavel.Where(w => w.IdEntregavel == entregavelAntigo.IdContratoEntregavel).ToList(); if (lstParcelaEntregavelAntigo.Count > 0) { db.ContratoParcelaEntregavel.RemoveRange(lstParcelaEntregavelAntigo); db.SaveChanges(); } } // Remove todos Registros de Entregaveis e Parcelas antigos (salvos no histórico) db.ContratoEntregavel.RemoveRange(lstContratoEntregaveisAntigos); db.ContratoCronogramaFinanceiro.RemoveRange(lstContratoCronogramaFinanceiroAntigos); db.SaveChanges(); }