public bool ConcluirReajuste([FromBody] InputConcluirReajuste concluirReajuste)
        {
            using (var db = new FIPEContratosContext())
            {
                var strategy = db.Database.CreateExecutionStrategy();

                strategy.Execute(() =>
                {
                    using (var transaction = db.Database.BeginTransaction())
                    {
                        try
                        {
                            new bContratoReajuste(db).ConcluirContratoReajuste(concluirReajuste);

                            // Confirma operações
                            db.Database.CommitTransaction();

                            return(true);
                        }
                        catch (Exception ex)
                        {
                            new bEmail(db).EnviarEmailTratamentoErro(ex, "ContratoReajusteController-ConcluirReajuste");

                            return(false);
                        }
                    }
                });
                return(true);
            }
        }
        public void ConcluirContratoReajuste(InputConcluirReajuste concluirReajuste_)
        {
            var     contratoReajuste       = db.ContratoReajuste.Where(w => w.IdContratoReajuste == concluirReajuste_.IdContratoReajuste).FirstOrDefault();
            var     contrato               = db.Contrato.Where(w => w.IdContrato == contratoReajuste.IdContrato).FirstOrDefault();
            var     lstContratoReajustes   = db.ContratoReajuste.Where(w => w.IdContrato == contratoReajuste.IdContrato && w.IdContratoReajuste != contratoReajuste.IdContratoReajuste).ToList();
            decimal?valorReajusteAcumulado = 0;

            if (lstContratoReajustes.Count > 0)
            {
                foreach (var reajuste in lstContratoReajustes)
                {
                    if (reajuste.VlReajuste != null)
                    {
                        valorReajusteAcumulado += reajuste.VlReajuste.Value;
                    }
                }
            }
            contratoReajuste.VlReajuste = contratoReajuste.VlContratoReajustado - contratoReajuste.VlContratoAntesReajuste;
            if (valorReajusteAcumulado != 0)
            {
                contratoReajuste.VlReajusteAcumulado = valorReajusteAcumulado + contratoReajuste.VlReajuste;
            }
            else
            {
                contratoReajuste.VlReajusteAcumulado = contratoReajuste.VlReajuste;
            }
            contrato.VlContrato                   = concluirReajuste_.VlTotalParcelas.Value;
            contrato.DtProxReajuste               = concluirReajuste_.DtProxReajuste;
            contratoReajuste.DtProxReajuste       = concluirReajuste_.DtProxReajuste;
            contratoReajuste.IcReajusteConcluido  = true;
            contratoReajuste.VlContratoReajustado = concluirReajuste_.VlTotalParcelas.Value;

            db.SaveChanges();

            var lstContratoCronogramaFinanceiroTemporaria = db.ContratoCronogramaFinanceiroTemporaria.Where(w => w.IdContrato == contrato.IdContrato).ToList();

            foreach (var parcelaTemp in lstContratoCronogramaFinanceiroTemporaria)
            {
                if (parcelaTemp.IdParcela != null)
                {
                    var contratoCronogramaFinanceiro = db.ContratoCronogramaFinanceiro.Where(w => w.IdContratoCronFinanceiro == parcelaTemp.IdParcela).FirstOrDefault();
                    contratoCronogramaFinanceiro.NuParcela = parcelaTemp.NuParcela;
                    contratoCronogramaFinanceiro.VlParcela = parcelaTemp.VlParcela;
                    contratoCronogramaFinanceiro.CdParcela = parcelaTemp.CdParcela;
                }
                else
                {
                    var contratoCronogramaFinanceiro = new ContratoCronogramaFinanceiro();
                    contratoCronogramaFinanceiro.CdIss             = parcelaTemp.CdIss;
                    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();

                // Após copiar a Parcela , exclui da tabela Temporaria
                db.ContratoCronogramaFinanceiroTemporaria.Remove(parcelaTemp);
                db.SaveChanges();
            }

            db.SaveChanges();
        }