public void ValidarEAtualizarParcela(TituloParcela tituloParcela)
        {
            try
            {
                tituloParcela.Validar();
                if (!tituloParcela.EhValido)
                {
                    throw new System.ArgumentException(tituloParcela.ObterMensagensValidacao());
                }

                using (var unidadeTrabalho = _repositorioTitulo.TransactionScope())
                {
                    _repositorioTituloParcela.Atualizar(tituloParcela);

                    var titulo        = _repositorioTitulo.ObterPorId(tituloParcela.TituloId);
                    var retornoTitulo = CalcularTitulo(titulo);
                    _repositorioTitulo.Atualizar(retornoTitulo);

                    unidadeTrabalho.Complete();
                }
            }
            catch (System.Exception)
            {
                throw;
            }
        }
        public TituloParcela CalcularTituloParcela(ref Titulo titulo, TituloParcela tituloParcela, int numParcela)
        {
            decimal diasEmAtraso;

            diasEmAtraso = Convert.ToDecimal((DateTime.Today - tituloParcela.Vencimento).TotalDays);
            if (diasEmAtraso < 0)
            {
                diasEmAtraso = 0;
            }
            if (diasEmAtraso >= titulo.DiasEmAtraso)
            {
                titulo.DiasEmAtraso = (int)diasEmAtraso;
            }

            if (diasEmAtraso > 0)
            {
                tituloParcela.VlrMulta = tituloParcela.VlrOriginal * (titulo.PerMulta / 100);
                tituloParcela.VlrJuros = (titulo.PerJuros / 100) / 30 * diasEmAtraso * tituloParcela.VlrOriginal;
            }
            else
            {
                tituloParcela.VlrMulta = 0;
                tituloParcela.VlrJuros = 0;
            }

            tituloParcela.DiasEmAtraso = (int)diasEmAtraso;
            tituloParcela.VlrCorrigido = tituloParcela.VlrOriginal + tituloParcela.VlrMulta + tituloParcela.VlrJuros;
            tituloParcela.NumParcela   = numParcela;
            return(tituloParcela);
        }
 public IActionResult Excluir([FromBody] TituloParcela tituloParcela)
 {
     try
     {
         var retorno = _appServicoTitulo.ExcluirParcelaERetornarLista(tituloParcela);
         return(Json(retorno));
     }
     catch (Exception e)
     {
         return(BadRequest(e.Message));
     }
 }
        public IActionResult Post([FromBody] TituloParcela tituloParcela)
        {
            try
            {
                if (tituloParcela.Id > 0)
                {
                    _appServicoTitulo.ValidarEAtualizarParcela(tituloParcela);
                }
                else
                {
                    _appServicoTitulo.ValidarECadastrarParcela(tituloParcela);
                }

                return(Created("TituloParcela", tituloParcela));
            }
            catch (Exception e)
            {
                return(BadRequest(e.ToString()));
            }
        }
        public IEnumerable <ViewModelTituloParcela> ExcluirParcelaERetornarLista(TituloParcela tituloParcela)
        {
            try
            {
                var tituloId = tituloParcela.TituloId;
                using (var unidadeTrabalho = _repositorioTituloParcela.TransactionScope())
                {
                    _repositorioTituloParcela.Remover(tituloParcela);

                    var titulo        = _repositorioTitulo.ObterPorId(tituloId);
                    var retornoTitulo = CalcularTitulo(titulo);
                    _repositorioTitulo.Atualizar(retornoTitulo);
                    unidadeTrabalho.Complete();
                }
                return(_repositorioTituloParcela.ObterPorTituloId(tituloId));
            }
            catch (System.Exception)
            {
                throw;
            }
        }