public async Task <ApiResponse <PedidoProcesadoModel> > Adicionar(PedidoModel data)
        {
            try
            {
                var model = new Domain.Pedido
                {
                    IdSabor   = data.IdSabor,
                    IdTamanho = data.IdTamanho,
                };

                string NomesAdicionais = "";
                if (data.Adicionais.Count > 0)
                {
                    var adicionais = await _repositoryAdicional.GetItems(f => data.Adicionais.Contains(f.Id));

                    model.TempoTotal = adicionais.Sum(f => f.MinutosAdicionais);
                    model.ValorTotal = adicionais.Sum(f => f.ValorAdicionais);
                    NomesAdicionais  = string.Join(',', adicionais.Select(f => f.Nome).ToArray());
                }

                var sabor = await _repositorySabor.BuscarPorId(data.IdSabor);

                model.TempoTotal += sabor.MinutosAdicionais;

                var tamanho = await _repositoryTamanho.BuscarPorId(data.IdTamanho);

                model.TempoTotal += tamanho.MinutosAdicionais;
                model.ValorTotal += tamanho.Valor;

                foreach (var item in data.Adicionais)
                {
                    var itemAdicional = new PedidoAdicional()
                    {
                        IdAdicional = item, Pedido = model
                    };
                    _repository.Context.Entry <PedidoAdicional>(itemAdicional).State = Microsoft.EntityFrameworkCore.EntityState.Added;
                    model.PedidoAdicionais.Add(itemAdicional);
                }

                await _repository.Adicionar(model);

                var pediProcessado = new PedidoProcesadoModel()
                {
                    Sabor           = model.Sabor.Nome,
                    Tamanho         = model.Tamanho.Nome,
                    TempoTotal      = model.TempoTotal,
                    ValorTotal      = model.ValorTotal,
                    Personalizacoes = NomesAdicionais
                };

                return(new ApiResponse <PedidoProcesadoModel>(Domain.TableStatic.StatusCodes.Status200OK, pediProcessado));
            }
            catch (Exception ex)
            {
                return(new ApiResponse <PedidoProcesadoModel>(Domain.TableStatic.StatusCodes.Status500InternalServerError, ex.Message));
            }
        }
Esempio n. 2
0
        public IActionResult Post(Pedido pedido)
        {
            try
            {
                _pedidoRepository.Adicionar(pedido);

                return(Ok(pedido));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }