Exemplo n.º 1
0
        public async Task <IActionResult> OnPostAsync(int OrderId, int OrderItemId, int SideOrderId)
        {
            SideOrder = await _context.SideOrder.FindAsync(SideOrderId);

            if (SideOrder != null)
            {
                _context.SideOrder.Remove(SideOrder);
                await _context.SaveChangesAsync();
            }

            return(Redirect($"/Order/Details?OrderId={OrderId}&OrderItemId={OrderItemId}"));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> OnGetAsync(int OrderId, int OrderItemId, int SideOrderId)
        {
            SideOrder = await _context.SideOrder
                        .Include(s => s.OrderItem)
                        .Include(s => s.Side).FirstOrDefaultAsync(m => m.SideOrderId == SideOrderId);

            if (SideOrder == null)
            {
                return(NotFound());
            }
            return(Page());
        }
        public int[] ReorderVertsForSide(int[] v, SideOrder so)
        {
            int[] nv = new int[Segment.NUM_VERTS];
            switch (so)
            {
            case SideOrder.FRONT:
                // No change
                for (int i = 0; i < Segment.NUM_VERTS; i++)
                {
                    nv[i] = v[i];
                }
                break;

            case SideOrder.BACK:
                nv[0] = v[7];
                nv[1] = v[6];
                nv[2] = v[5];
                nv[3] = v[4];
                nv[4] = v[3];
                nv[5] = v[2];
                nv[6] = v[1];
                nv[7] = v[0];
                break;

            case SideOrder.LEFT:
                nv[0] = v[3];
                nv[1] = v[2];
                nv[2] = v[6];
                nv[3] = v[7];
                nv[4] = v[0];
                nv[5] = v[1];
                nv[6] = v[5];
                nv[7] = v[4];
                break;

            case SideOrder.RIGHT:
                nv[0] = v[4];
                nv[1] = v[5];
                nv[2] = v[1];
                nv[3] = v[0];
                nv[4] = v[7];
                nv[5] = v[6];
                nv[6] = v[2];
                nv[7] = v[3];
                break;

            case SideOrder.TOP:
                nv[0] = v[4];
                nv[1] = v[0];
                nv[2] = v[3];
                nv[3] = v[7];
                nv[4] = v[5];
                nv[5] = v[1];
                nv[6] = v[2];
                nv[7] = v[6];
                break;

            case SideOrder.BOTTOM:
                nv[0] = v[3];
                nv[1] = v[7];
                nv[2] = v[4];
                nv[3] = v[0];
                nv[4] = v[2];
                nv[5] = v[6];
                nv[6] = v[5];
                nv[7] = v[1];
                break;
            }

            return(nv);
        }
Exemplo n.º 4
0
        public async Task <IActionResult> Post([FromBody] InputModel value)
        {
            var customer = _context.Customers.Find(value.Customer.CustomerId);

            await using var transaction = await _context.Database.BeginTransactionAsync();

            Order newOrder = null;

            try
            {
                if (customer == null)
                {
                    newOrder = new Order {
                        Customer = value.Customer
                    };
                }
                else
                {
                    newOrder = new Order {
                        Customer = customer
                    };
                }
                var sub   = (float)Math.Round(value.Pizzas.Select(o => o.Subtotal).Sum() + value.Sides.Select(o => o.Subtotal).Sum(), 2);
                var tax   = (float)Math.Round(sub * 0.13, 2);
                var total = (float)Math.Round(sub + tax, 2);
                newOrder.Subtotal = sub;
                newOrder.Tax      = tax;
                newOrder.Total    = total;

                foreach (var side in value.Sides)
                {
                    SideOrder newSideOrder = new SideOrder {
                        Order = newOrder, SideId = side.SideId, Qty = side.Qty
                    };
                    await _context.SideOrders.AddAsync(newSideOrder);
                }


                foreach (var pizza in value.Pizzas)
                {
                    //피자 생성
                    Entities.Pizza newPizza = new Entities.Pizza {
                        Order = newOrder, TypeId = pizza.TypeId, SizeId = pizza.SizeId, Qty = pizza.Qty
                    };
                    await _context.Pizzas.AddAsync(newPizza);

                    //피자에 토핑연결
                    foreach (var topping in pizza.Toppings)
                    {
                        PizzaTopping pizzaTopping = new PizzaTopping {
                            Pizza = newPizza, ToppingId = topping
                        };
                        await _context.PizzaToppings.AddAsync(pizzaTopping);
                    }
                }

                //진행상황
                OrderProcess newOrderProcess = new OrderProcess {
                    Order = newOrder, ProcessId = _context.Processes.Where(p => p.ProcessNum == 1).FirstOrDefault().ProcessId
                };
                var ret = await _context.OrderProcess.AddAsync(newOrderProcess);

                await _context.SaveChangesAsync();

                Task.Run(() => PizzaMakingTask(newOrder.OrderId));

                await transaction.CommitAsync();
            }
            catch (DbUpdateException updateEx)
            {
                return(StatusCode(500, "Internal server error"));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, "Internal server error"));
            }
            newOrder.Pizzas     = _context.Pizzas.Where(o => o.OrderId == newOrder.OrderId).ToList();
            newOrder.SideOrders = _context.SideOrders.Where(o => o.OrderId == newOrder.OrderId).ToList();
            return(new JsonResult(newOrder));
        }