public void ValidarAtualizacaoOUAdicao(ContaAPagarModel contaAPagarModel)
        {
            ValidadorContaAPagar validador = new ValidadorContaAPagar();
            ValidationResult     result    = validador.Validate(contaAPagarModel);

            if (!result.IsValid)
            {
                throw new ValidacaoException(result);
            }
        }
        public IActionResult Get(int id)
        {
            ContaAPagarModel model = _contaAPagarService.ObterPorId(id);

            if (model == null)
            {
                NotFound();
            }
            return(Ok(model));
        }
 public ContaAPagar ToDomain(ContaAPagarModel model)
 {
     return(new ContaAPagar()
     {
         Id = model.Id,
         Nome = model.Nome,
         DataPagamento = model.DataPagamento,
         DataVencimento = model.DataVencimento,
         ValorOriginal = model.ValorOriginal
     });
 }
        public bool Atualizar(ContaAPagarModel model)
        {
            ValidarAtualizacaoOUAdicao(model);

            var contaAPagar = ToDomain(model);

            contaAPagar.CalcularValorCobrado();

            _contaAPagarRepository.Atualizar(contaAPagar);
            return(_contaAPagarRepository.UnitOfWork.Commit());
        }
        public int Adicionar(ContaAPagarModel model)
        {
            ValidarAtualizacaoOUAdicao(model);

            var contaAPagar = ToDomain(model);

            contaAPagar.CalcularValorCobrado();

            _contaAPagarRepository.Adicionar(contaAPagar);
            if (_contaAPagarRepository.UnitOfWork.Commit())
            {
                return(contaAPagar.Id);
            }
            return(0);
        }
 public IActionResult Put([FromBody] ContaAPagarModel model)
 {
     try
     {
         if (_contaAPagarService.Atualizar(model))
         {
             return(Ok());
         }
     }
     catch (ValidacaoException vex)
     {
         return(BadRequest(vex.Message));
     }
     catch (SqlException ex)
     {
         return(BadRequest(ex.Message));
     }
     return(null);
 }
        public IActionResult Post([FromBody] ContaAPagarModel model)
        {
            try
            {
                var id = _contaAPagarService.Adicionar(model);
                if (id > 0)
                {
                    return(Created(new Uri(Request.Path, UriKind.Relative), new { id }));
                }
            }
            catch (ValidacaoException vex)
            {
                return(BadRequest(vex.Message));
            }
            catch (SqlException ex)
            {
                return(BadRequest(ex.Message));
            }

            return(null);
        }