public IActionResult PutPedidoAdicional(int id, PedidoAdicional pedidoAdicional)
        {
            if (id != pedidoAdicional.IdAdicional)
            {
                return(BadRequest());
            }

            try
            {
                service.AtualizarPedidoAdicional(pedidoAdicional);
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!PedidoAdicionalExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Beispiel #2
0
        public Pedido AlterPedido(InputPedido pedido, decimal total)
        {
            using (var transaction = _context.Database.BeginTransaction()){
                try{
                    var model = _context.Pedidos.Where(p => p.Id.Equals(pedido.Id)).FirstOrDefault();
                    model.Cliente          = pedido.Cliente;
                    model.ValorTotalPedido = total;
                    model.TamanhoId        = pedido.Tamanho.Id;
                    model.SaborId          = pedido.Sabor.Id;

                    var adiconaisEscluir = _context.PedidosAdicionais.Where(p => p.PedidoId == model.Id);
                    _context.PedidosAdicionais.RemoveRange(adiconaisEscluir);

                    foreach (var adicional in pedido.Adicionais)
                    {
                        var modelPedidoAdicional = new PedidoAdicional();
                        modelPedidoAdicional.AdicionalId = adicional.Id;
                        modelPedidoAdicional.PedidoId    = model.Id;
                        _context.PedidosAdicionais.Add(modelPedidoAdicional);
                    }


                    _context.SaveChanges();
                    transaction.Commit();
                    return(model);
                }catch (Exception ex)
                {
                    transaction.Rollback();
                    Console.WriteLine($"Error ao alterar pedido. Detalhe{ex.Message}");
                    return(null);
                }
            }
        }
Beispiel #3
0
        public Pedido AddPedido(InputPedido pedido, decimal total)
        {
            using (var transaction = _context.Database.BeginTransaction()){
                try{
                    Pedido entidadePedido = new Pedido();
                    entidadePedido.Cliente          = pedido.Cliente;
                    entidadePedido.ValorTotalPedido = total;
                    entidadePedido.TamanhoId        = pedido.Tamanho.Id;
                    entidadePedido.SaborId          = pedido.Sabor.Id;
                    var resultado = _context.Pedidos.Add(entidadePedido);

                    foreach (var adicional in pedido.Adicionais)
                    {
                        var modelPedidoAdicional = new PedidoAdicional();
                        modelPedidoAdicional.AdicionalId = adicional.Id;
                        modelPedidoAdicional.PedidoId    = resultado.Entity.Id;
                        _context.PedidosAdicionais.Add(modelPedidoAdicional);
                    }

                    _context.SaveChanges();
                    transaction.Commit();
                    return(resultado.Entity);
                }catch (Exception ex)
                {
                    transaction.Rollback();
                    Console.WriteLine($"Error ao gravar pedido. Detalhe{ex.Message}");
                    return(null);
                }
            }
        }
        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));
            }
        }
        public JsonResult EscolhaAdicionais(int adicionalId, int pedidoId)
        {
            try
            {
                var             pedido             = db.Pedidos.Find(pedidoId);
                var             getPedidoAdicional = db.Adicionais.Where(x => x.PedidoId == pedidoId).Select(s => new { s.PedidoAdicionalId }).FirstOrDefault();
                AdicionalPizza  adicionalPizza     = new AdicionalPizza();
                var             adicional          = adicionalPizza.MetodoLista().Where(x => x.ID == adicionalId).FirstOrDefault();
                PedidoAdicional pedidoAdicional    = new PedidoAdicional();
                if (getPedidoAdicional == null)
                {
                    pedidoAdicional.PedidoAdicionalId = 1;
                }
                else
                {
                    pedidoAdicional.PedidoAdicionalId = getPedidoAdicional.PedidoAdicionalId + 1;
                }
                pedidoAdicional.PedidoId    = pedidoId;
                pedidoAdicional.AdicionalId = adicionalId;
                pedidoAdicional.Valor       = adicional.Valor;
                pedidoAdicional.Tempo       = adicional.Tempo;
                db.Adicionais.Add(pedidoAdicional);
                db.SaveChanges();

                var tempoPreparoTotal = db.Adicionais.Where(x => x.PedidoId == pedidoId).Sum(s => s.Tempo);
                var ValorTotal        = db.Adicionais.Where(x => x.PedidoId == pedidoId).Sum(s => s.Valor);

                pedido.TempoPreparo  += tempoPreparoTotal;
                pedido.ValorAdicional = ValorTotal;
                pedido.ValorTotal     = Convert.ToDecimal(pedido.ValorAdicional) + pedido.ValorPizza;

                var adicionais = db.Adicionais.Where(x => x.PedidoId == pedidoId).ToList();

                pedido.Adicionais      = adicionais;
                db.Entry(pedido).State = EntityState.Modified;
                db.SaveChanges();
                return(Json(pedido, JsonRequestBehavior.AllowGet));
            }
            catch (Exception)
            {
                return(Json("Erro ao Efetuar o Pedido, tente novamente"));

                throw;
            }
        }
        public ActionResult <PedidoAdicional> PostPedidoAdicional(PedidoAdicional pedidoAdicional)
        {
            try
            {
                service.CriarPedidoAdicional(pedidoAdicional);
            }
            catch (DbUpdateException)
            {
                if (PedidoAdicionalExists(pedidoAdicional.Id))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            return(CreatedAtAction("GetPedidoAdicional", new { id = pedidoAdicional.IdAdicional }, pedidoAdicional));
        }
Beispiel #7
0
        public void ExcluirPedidoAdicional(int id)
        {
            PedidoAdicional pedido = repository.Get(id);

            repository.Delete(pedido);
        }
Beispiel #8
0
 public PedidoAdicional AtualizarPedidoAdicional(PedidoAdicional pedido)
 {
     repository.Update(pedido);
     return(pedido);
 }
Beispiel #9
0
 public PedidoAdicional CriarPedidoAdicional(PedidoAdicional pedido)
 {
     repository.Insert(pedido);
     return(pedido);
 }