Beispiel #1
0
        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();
        }
Beispiel #2
0
        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 += "&currency=$" + "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));
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
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));
        }
 public void EditPizzaTopping(PizzaTopping hasTopping)
 {
     _db.Update(hasTopping);
 }
Beispiel #7
0
 public Task Delete(PizzaTopping pizzaTopping)
 {
     throw new NotImplementedException();
 }