public ActionResult RealizarPagamento([FromBody] DTOs.Pagamento pagamento) { var retorno = reservaNegocio.RealizarPagamento(pagamento); if (reservaNegocio.erros.Count > 0) { return(Ok(new { erros = reservaNegocio.erros })); } else { return(Ok(retorno)); } }
public bool RealizarPagamento(DTOs.Pagamento pagamento) { try { using (HSContext hs = new HSContext()) { var reserva = hs.Tbreserva.First(x => x.Idreserva == pagamento.idreserva); var totalPagamentos = hs.Tbpagamento.Where(x => x.Idreserva == pagamento.idreserva).Sum(x => x.Valor); var totalDividaCheckout = hs.Tbprodutoreserva.Where(x => x.Idreserva == pagamento.idreserva).Sum(x => x.Valor * x.Quantidade); var totalPagamentoComCheckout = reserva.Valor + totalDividaCheckout; if (totalPagamentos + decimal.Parse(pagamento.valor) > totalPagamentoComCheckout) { erros.Add("Não pode ser adicionado esse pagamento, porque o valor fica superior ao devido pelo cliente."); return(false); } else { Tbpagamento pagamentoAdd = new Tbpagamento(); pagamentoAdd.Idreserva = pagamento.idreserva; pagamentoAdd.Datapagamento = DateTime.Now; pagamentoAdd.Valor = Decimal.Parse(pagamento.valor); pagamentoAdd.Chavepagamento = pagamento.chavepagamento; pagamentoAdd.Idtipopagamento = pagamento.idtipopagamento; hs.Tbpagamento.Add(pagamentoAdd); hs.SaveChanges(); return(true); } } } catch (Exception ex) { erros.Add("O pagamento não foi inserido."); erros.Add(ex.Message); return(false); } }