public ServiceResult RegistarReserva(int idCliente, RegistarReservaDTO model) { _logger.LogDebug("A executar [ReservaBusiness -> RegistarReserva]"); if (model.Itens == null) { throw new ArgumentNullException("Itens", "Campo não poder ser nulo!"); } if (model.HoraEntrega == null) { throw new ArgumentNullException("HoraEntrega", "Campo não poder ser nulo!"); } IList <int> erros = new List <int>(); if (!_clienteDAO.ExisteCliente(idCliente)) { _logger.LogWarning($"Não existe nenhum Cliente com o IdCliente {idCliente}."); erros.Add((int)ErrosEnumeration.ContaNaoExiste); } if (!ValidaItens(model.Itens)) { _logger.LogDebug("Existe um Item que é inválido."); erros.Add((int)ErrosEnumeration.ItensInvalidos); } /*if (!ValidaHoraEntrega(model.HoraEntrega)) * { * _logger.LogDebug($"A Hora {model.HoraEntrega} é inválida."); * erros.Add((int)ErrosEnumeration.HoraEntregaInvalida); * }*/ if (!erros.Any()) { Reserva reserva = _mapper.Map <Reserva>(model); reserva.IdCliente = idCliente; reserva.Preco = CalculaValorTotalReserva(model.Itens); _reservaDAO.RegistarReserva(reserva); } return(new ServiceResult { Erros = new ErrosDTO { Erros = erros }, Sucesso = !erros.Any() }); }
public IActionResult RegistarReserva([FromBody] RegistarReservaDTO model) { _logger.LogDebug("A executar api/reserva/registar -> Post"); string nameIdentifier = HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value; int idCliente = int.Parse(nameIdentifier); try { if (model is null) { return(BadRequest(nameof(model))); } ServiceResult resultado = _reservaBusiness.RegistarReserva(idCliente, model); if (resultado.Sucesso) { _logger.LogInformation($"O cliente com IdCliente {idCliente} realizou um pedido de Reserva."); return(Ok()); } else { _logger.LogInformation("Ocorreu um erro no pedido de Reserva."); return(BadRequest(resultado.Erros)); } } catch (ArgumentNullException e) { return(BadRequest(new { message = e.Message })); } catch (Exception e) { _logger.LogError(e, e.Message); return(StatusCode(500)); } }