Ejemplo n.º 1
0
        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()
            });
        }
Ejemplo n.º 2
0
        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));
            }
        }