コード例 #1
0
        public async Task <ActionResult <IList <Flavor> > > Get(int id)
        {
            var result = await _flavorRepository.GetById(id);

            if (result == null)
            {
                return(BadRequest("Not found"));
            }

            return(Ok(result));
        }
コード例 #2
0
        public async Task <Order> ProcessNewOrder(OrderDto orderDto)
        {
            if (orderDto.Items.Count == 0 || orderDto.Items.Count > 10)
            {
                throw new Exception("O pedido deve ter no mínimo uma pizza e no máximo 10.");
            }

            if (string.IsNullOrEmpty(orderDto.Address) && !orderDto.ClientId.HasValue)
            {
                throw new Exception("O pedido precisa da identificação do cliente cadastrado ou um endereço para entrega");
            }

            if (orderDto.ClientId.HasValue)
            {
                var client = await _clientRepository.GetById(orderDto.ClientId.Value);

                if (client == null)
                {
                    throw new Exception("Cliente inválido");
                }
            }
            else
            {
                var client = new Client()
                {
                    Address = orderDto.Address,
                    Name    = string.IsNullOrEmpty(orderDto.Name) ? "Cliente " + DateTime.Now.ToString() : orderDto.Name
                };

                await _clientRepository.Add(client);

                orderDto.ClientId = client.Id;
            }

            var order = new Order()
            {
                Address  = orderDto.Address,
                ClientId = orderDto.ClientId,
                Freight  = 0
            };

            foreach (OrderItemDto orderItemDto in orderDto.Items)
            {
                var orderItem = new Pizza()
                {
                    Flavor1Id = orderItemDto.Flavor,
                    Flavor2Id = orderItemDto.Flavor2,
                    Quantity  = 1
                };

                if (await _flavorRepository.GetById(orderItem.Flavor1Id) == null)
                {
                    throw new Exception("Sabor da pizza inválido");
                }

                if (orderItem.Flavor2Id.HasValue)
                {
                    if (await _flavorRepository.GetById(orderItem.Flavor2Id.Value) == null)
                    {
                        throw new Exception("Segundo sabor da pizza inválido");
                    }
                }

                order.Items.Add(orderItem);
            }

            await _orderRepository.Add(order);

            return(await _orderRepository.GetById(order.Id));
        }