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}")); }
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); }
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)); }