Example #1
0
 private void GenerateDelivery(int orderId)
 {
     if (orderId > 1)
     {
         var newDelivery = new DeliveryViewModel()
         {
             OrderId = orderId,
         };
         db.Deliveries.Add(newDelivery);
         db.SaveChanges();
     }
 }
Example #2
0
        public ActionResult ReviewOrder(List<CartViewModel> orders)
        {
            if (User.IsInRole("Customer"))
            {
                var orderList = Session["Order"] as List<CartViewModel>;
                var deliveryAddress = Session["DeliveryAddress"] as DeliveryAddressViewModel;
                string userId = User.Identity.GetUserId();
                var orderItems = new List<OrderViewModel>();
                if (orderList != null)
                {
                    int newOrderId = 0;
                    foreach (var item in orderList)
                    {
                        var newOrder = new OrderViewModel()
                        {
                            DtCreated = DateTime.UtcNow,
                            ExpectedDeliveryDate = DateTime.UtcNow,
                            RealDeliveryDate = DateTime.UtcNow,
                            Status = "Active",
                            Quantity = item.Quantity,
                            UnitPrice = item.UnitPrice,
                            Total = item.SubTotal,
                            GrandTotal = item.GrandTotal,
                            SupplierId = item.SupplierId,
                            CustomerId = (from c in db.Customers
                                          where c.Id == userId
                                          select c.CustomerId).FirstOrDefault(),
                            ModelId = item.ModelId,
                            CustomerUserId = userId,
                            ConfirmationCode = CodeGenerator(),
                            SupplierUserId = (from s in db.Suppliers
                                              where s.SupplierId == item.SupplierId
                                              select s.Id).FirstOrDefault(),
                            Notification = "Supplier"
                        };
                        orderItems.Add(newOrder);
                        db.Orders.Add(newOrder);
                        db.SaveChanges();

                        db.Entry(newOrder).GetDatabaseValues();
                        newOrderId = newOrder.OrderId;

                        var newOrderDelivery = new DeliveryViewModel()
                        {
                            OrderId = newOrderId,
                            Street = deliveryAddress.Street,
                            City = deliveryAddress.City,
                            Zipcode = deliveryAddress.Zipcode,
                            ExpectedDeliveryDate = DateTime.UtcNow,
                            ActualDeliveryDate = DateTime.UtcNow,
                            DateCreated = DateTime.UtcNow,
                            Status = "Processing"
                        };
                        db.Deliveries.Add(newOrderDelivery);
                        db.SaveChanges();

                        GeneratePayment(newOrder.OrderId);
                        string supplierEmail = (from s in db.Suppliers
                                                where s.SupplierId == newOrder.SupplierId
                                                select s.Email).FirstOrDefault();

                        string customerEmail = (from c in db.Customers
                                                where c.CustomerId == newOrder.CustomerId
                                                select c.Email).FirstOrDefault();

                        new Task(() => { SendNotification(supplierEmail, "Supplier"); }).Start();
                        new Task(() => { SendNotification(customerEmail, "Customer"); }).Start();
                    }

                    Session.Remove("Order");
                    Session.Remove("Cart");
                    Session.Remove("DeliveryAddress");

                    //return RedirectToAction("Invoice", "Order", orderItems);
                    //return View("../Order/Invoice", orderItems);
                    return RedirectToAction("CustomerGetOrder", "Customer", new { id = newOrderId, message = ManageMessageId.AddOrderSuccess });
                }
            }
            return View("../Home/Error404");
        }