public void AddOrder(Domain.Models.Order order, int storeID, int userID) { var newOrder = new Order(); newOrder.DateOrdered = order.DateOrdered.ToString(); newOrder.UserId = userID; newOrder.StoreId = storeID; newOrder.Placed = order.Placed; newOrder.Completed = order.Completed; db.Order.Add(newOrder); db.SaveChanges(); var newOrderJunction = new OrderJunction(); newOrderJunction.Order = newOrder; newOrderJunction.StoreId = storeID; foreach (var pizza in order.Pizzas) { var newPizza = new Pizza(); newPizza.Crust = new Crust() { Name = pizza.Crust.Name }; newPizza.Size = new Size() { Name = pizza.Size.pSize }; newPizza.Name = pizza.Name; db.Pizza.Add(newPizza); db.SaveChanges(); foreach (var top in pizza.Toppings) { foreach (var dbtop in db.Topping.ToList()) { if (top.Name.Equals(dbtop.Name)) { PizzaTopping ptop = new PizzaTopping(); ptop.PizzaId = newPizza.PizzaId; ptop.ToppingId = dbtop.ToppingId; db.PizzaTopping.Add(ptop); db.SaveChanges(); } } // PizzaTopping ptop = new PizzaTopping(); // ptop.Pizza = newPizza; // ptop.Topping = new Topping() {Name = top.Name}; // db.PizzaTopping.Add(ptop); } var pj = new PizzaJunction(); pj.Order = newOrder; pj.Pizza = newPizza; db.PizzaJunction.Add(pj); db.SaveChanges(); } db.SaveChanges(); }
public ActionResult Save(PizzaPizzaAttributesViewModel model) { if (ModelState.IsValid) { var customer = new Customer(); if (!_context.Customers.Any(c => c.Phone == model.Customer.Phone)) { customer = new Customer { Name = model.Customer.Name, Address = model.Customer.Address, Zip = model.Customer.Zip, Phone = model.Customer.Phone }; _context.Customers.Add(customer); } var pizza = new Pizza { Size = model.PizzaSize, Crust = model.PizzaCrust, Topping = model.PizzaTopping != null?string.Join(",", model.PizzaTopping) : null }; _context.Pizzas.Add(pizza); _context.SaveChanges(); model.PizzaTopping.ForEach(pt => { var pizzaTopping1 = new PizzaTopping { Pizza = _context.Pizzas.OrderByDescending(p => p.Id).First().Id, Topping = pt }; _context.PizzaToppings.Add(pizzaTopping1); }); _context.SaveChanges(); TempData["customer"] = _context.Customers.First(c => c.Phone == (customer.Phone ?? model.Customer.Phone)); //pizza = _context.Pizzas.OrderByDescending(p => p.Id).First(); var amount = _context.PizzaAttributes.FirstOrDefault(pa => pa.Id == model.PizzaSize).Amount + _context.PizzaAttributes.FirstOrDefault(pa => pa.Id == model.PizzaCrust).Amount + (model.PizzaTopping != null ? model.PizzaTopping.Sum(topping => _context.PizzaAttributes.FirstOrDefault(pa => pa.Id == topping).Amount) : 0); TempData["amount"] = amount; //var order = new Order //{ // CustomerId = customer.Id, // PizzaId = pizza.Id, // Amount = amount //}; //_context.Orders.Add(order); //_context.SaveChanges(); //return View(); if (model.PaymentMethod == 1) { var redirecturl = ""; //Mention URL to redirect content to paypal site redirecturl += "https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=" + ConfigurationManager.AppSettings["paypalemail"]; //First name i assign static based on login details assign this value redirecturl += "&first_name=" + model.Customer.Name; //Product Name redirecturl += "&item_name=Pizza"; //Amount redirecturl += "&amount=1";// + amount; //Phone No redirecturl += "&night_phone_a=" + model.Customer.Phone; //Address redirecturl += "&address1=" + model.Customer.Address + ", " + model.Customer.Zip; //Shipping charges if any //redirecturl += "&shipping=0"; //Handling charges if any //redirecturl += "&handling=0"; //Tax amount if any //redirecturl += "&tax=0"; //Add quatity i added one only statically //redirecturl += "&quantity=1"; //Currency code redirecturl += "¤cy=$" + "currency"; //Success return page url redirecturl += "&return=" + ConfigurationManager.AppSettings["SuccessURL"]; //Failed return page url redirecturl += "&cancel_return=" + ConfigurationManager.AppSettings["FailedURL"]; Response.Redirect(redirecturl); } else { return(RedirectToAction("Save")); } } model.PizzaSizes = _context.PizzaAttributes.Where(x => x.Name == "Size").Select(p => new SelectListItem { Text = p.Value + @"(" + p.Size + @" inch - $" + p.Amount + @")", Value = p.Id.ToString() }); model.PizzaCrusts = _context.PizzaAttributes.Where(x => x.Name == "Crust").Select(p => new SelectListItem { Text = p.Value + (Math.Abs(p.Amount) == 0 ? "" : @"(+ $" + p.Amount + @")"), Value = p.Id.ToString() }); model.PizzaToppings = _context.PizzaAttributes.Where(x => x.Name == "Toppings") .Select(p => new SelectListItem { Text = p.Value + @"(+ $" + p.Amount + @")", Value = p.Id.ToString() }); model.PaymentMethods = _context.PaymentMethods.Select(pm => new SelectListItem { Text = pm.Name, Value = pm.Id.ToString() }); return(View("Index", model)); }
private static Order FromGrpc(OrderService.Order grpc) { var order = new BlazingPizza.Order(); order.OrderId = grpc.Id; order.CreatedTime = grpc.CreatedTime.ToDateTimeOffset(); order.UserId = grpc.UserId; order.DeliveryLocation = new LatLong() { Latitude = grpc.DeliveryLocation.Latitude, Longitude = grpc.DeliveryLocation.Longitude, }; order.DeliveryAddress = new BlazingPizza.Address() { Name = grpc.DeliveryAddress?.Name, Line1 = grpc.DeliveryAddress?.Line1, Line2 = grpc.DeliveryAddress?.Line2, City = grpc.DeliveryAddress?.City, Region = grpc.DeliveryAddress?.Region, PostalCode = grpc.DeliveryAddress?.PostalCode, }; // Enforce existence of Pizza.SpecialId and Topping.ToppingId // in the database - prevent the submitter from making up // new specials and toppings foreach (var orderedPizza in grpc.Pizzas) { var special = new BlazingPizza.PizzaSpecial() { BasePrice = orderedPizza.Special.BasePrice.DecimalValue, Name = orderedPizza.Special.Name, Description = orderedPizza.Special.Description, ImageUrl = orderedPizza.Special.ImageUrl, }; var pizza = new BlazingPizza.Pizza() { Size = orderedPizza.Size, Special = special, }; foreach (var orderedTopping in orderedPizza.Toppings) { var topping = new PizzaTopping() { Topping = new BlazingPizza.Topping() { Name = orderedTopping.Name, Price = orderedTopping.Price.DecimalValue, }, }; pizza.Toppings.Add(topping); } order.Pizzas.Add(pizza); } return(order); }
protected override void OnModelCreating(ModelBuilder builder) { builder.Entity <Crust>().HasKey(c => c.CrustID); builder.Entity <Crust>().Property(c => c.CrustID).ValueGeneratedNever(); builder.Entity <Pizza>().HasKey(p => p.PizzaID); builder.Entity <Pizza>().Property(p => p.PizzaID).ValueGeneratedNever(); builder.Entity <Size>().HasKey(s => s.SizeID); builder.Entity <Size>().Property(s => s.SizeID).ValueGeneratedNever(); builder.Entity <Topping>().HasKey(t => t.ToppingID); builder.Entity <Topping>().Property(t => t.ToppingID).ValueGeneratedNever(); builder.Entity <User>().HasKey(u => u.UserID); builder.Entity <User>().Property(u => u.UserID).ValueGeneratedNever(); builder.Entity <Order>().HasKey(o => o.OrderID); builder.Entity <Order>().Property(o => o.OrderID).ValueGeneratedNever(); builder.Entity <Store>().HasKey(r => r.StoreID); builder.Entity <Store>().Property(r => r.StoreID).ValueGeneratedNever(); builder.Entity <Crust>().HasMany(c => c.Pizzas).WithOne(p => p.Crust).HasForeignKey(p => p.CrustID); builder.Entity <Size>().HasMany(s => s.Pizzas).WithOne(p => p.Size).HasForeignKey(p => p.SizeID); builder.Entity <User>().HasMany(u => u.Orders).WithOne(o => o.User).HasForeignKey(o => o.UserID); builder.Entity <Store>().HasMany(r => r.Orders).WithOne(o => o.Store).HasForeignKey(o => o.StoreID); builder.Entity <Pizza>().HasMany(p => p.PizzaToppings).WithOne(pt => pt.Pizza).HasForeignKey(pt => pt.PizzaID); builder.Entity <Topping>().HasMany(t => t.PizzaToppings).WithOne(pt => pt.Topping).HasForeignKey(pt => pt.ToppingID); builder.Entity <Pizza>().HasMany(p => p.OrderPizzas).WithOne(po => po.Pizza).HasForeignKey(po => po.PizzaID); builder.Entity <Order>().HasMany(o => o.OrderPizzas).WithOne(po => po.Order).HasForeignKey(po => po.OrderID); builder.Entity <PizzaTopping>().HasKey(pt => new { pt.PizzaID, pt.ToppingID }); builder.Entity <OrderPizza>().HasKey(po => new { po.PizzaID, po.OrderID }); builder.Entity <PizzaTopping>().HasOne(pt => pt.Pizza).WithMany(p => p.PizzaToppings).HasForeignKey(p => p.PizzaID); builder.Entity <PizzaTopping>().HasOne(pt => pt.Topping).WithMany(t => t.PizzaToppings).HasForeignKey(t => t.ToppingID); builder.Entity <OrderPizza>().HasOne(op => op.Order).WithMany(o => o.OrderPizzas).HasForeignKey(o => o.OrderID); builder.Entity <OrderPizza>().HasOne(op => op.Pizza).WithMany(p => p.OrderPizzas).HasForeignKey(p => p.PizzaID); Crust[] crusts = new Crust[] { new Crust() { CrustID = 1, Name = "Deep Dish", Price = 3.50M }, new Crust() { CrustID = 2, Name = "New York Style", Price = 2.50M }, new Crust() { CrustID = 3, Name = "Thin Crust", Price = 1.50M } }; builder.Entity <Crust>().HasData(crusts); Size[] sizes = new Size[] { new Size() { SizeID = 1, Name = "Large", Price = 12.00M }, new Size() { SizeID = 2, Name = "Medium", Price = 10.00M }, new Size() { SizeID = 3, Name = "Small", Price = 8.00M } }; builder.Entity <Size>().HasData(sizes); Topping[] toppings = new Topping[] { new Topping() { Name = "Cheese", Price = 0.25M }, new Topping() { Name = "Tomato Sauce", Price = 0.75M }, new Topping() { Name = "Pepperoni", Price = 0.50M }, new Topping() { Name = "Bacon", Price = 0.45M }, new Topping() { Name = "Anchovies", Price = 1.00M } }; builder.Entity <Topping>().HasData(toppings); Pizza[] pizzas = new Pizza[] { new Pizza() { PizzaID = 1, CrustID = crusts[0].CrustID, SizeID = sizes[0].SizeID }, new Pizza() { PizzaID = 2, CrustID = crusts[1].CrustID, SizeID = sizes[1].SizeID }, new Pizza() { PizzaID = 3, CrustID = crusts[2].CrustID, SizeID = sizes[2].SizeID } }; builder.Entity <Pizza>().HasData(pizzas); PizzaTopping[] pizzatoppings = new PizzaTopping[] { new PizzaTopping() { PizzaID = pizzas[0].PizzaID, ToppingID = toppings[0].ToppingID }, new PizzaTopping() { PizzaID = pizzas[0].PizzaID, ToppingID = toppings[1].ToppingID }, new PizzaTopping() { PizzaID = pizzas[0].PizzaID, ToppingID = toppings[2].ToppingID }, new PizzaTopping() { PizzaID = pizzas[1].PizzaID, ToppingID = toppings[0].ToppingID }, new PizzaTopping() { PizzaID = pizzas[1].PizzaID, ToppingID = toppings[1].ToppingID }, new PizzaTopping() { PizzaID = pizzas[1].PizzaID, ToppingID = toppings[3].ToppingID }, new PizzaTopping() { PizzaID = pizzas[2].PizzaID, ToppingID = toppings[0].ToppingID }, new PizzaTopping() { PizzaID = pizzas[2].PizzaID, ToppingID = toppings[1].ToppingID }, new PizzaTopping() { PizzaID = pizzas[2].PizzaID, ToppingID = toppings[4].ToppingID } }; builder.Entity <PizzaTopping>().HasData(pizzatoppings); Store[] stores = new Store[] { new Store() { StoreID = 1, Name = "Eat At Joe's", Location = "Albequerque" }, new Store() { StoreID = 2, Name = "Muggy Pizza", Location = "New York" }, new Store() { StoreID = 3, Name = "Whatever Man", Location = "New Mexico" } }; builder.Entity <Store>().HasData(stores); User[] users = new User[] { new User() { UserID = 1, Username = "******", Password = "******" }, new User() { UserID = 2, Username = "******", Password = "******" }, new User() { UserID = 3, Username = "******", Password = "******" } }; builder.Entity <User>().HasData(users); }
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)); }
public void EditPizzaTopping(PizzaTopping hasTopping) { _db.Update(hasTopping); }
public Task Delete(PizzaTopping pizzaTopping) { throw new NotImplementedException(); }