예제 #1
0
        public async Task<ActionResult> Create(string userId = "")
        {
            var dt = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
            var order = new CreateOrderViewModel { Date = dt };
            if (User.IsInRole("Менеджер"))
            {
                await InitOrder(order);
                if (!string.IsNullOrEmpty(userId)) order.UserId = userId;
            }
            else await InitOrder(order, User.Identity.GetUserId());

            return View(order);
        }
예제 #2
0
 public async Task<ActionResult> Index()
 {
     var result = new List<CreateOrderViewModel>();
     foreach (var el in await OrderManager.GetOrdersAsync())
     {
         var order = new CreateOrderViewModel(el)
         {
             User = (await UserManager.FindByIdAsync(el.UserId)).ToString(),
             Products = await ProductManager.GetProducsInOrderAsync(el.Id)
         };
         var rec = await OrderManager.GetReceiptAsync(el.Id);
         order.ReceiptExist = rec != null;
         result.Add(order);
     }
     return View(result);
 }
예제 #3
0
        public async Task<ActionResult> Create(CreateOrderViewModel model, Adress adress)
        {
            ValidateAdress(model.AdresShipping ?? adress);
            ValidateProduct(model.Products);
            if (ModelState.IsValid)
            {
                if (model.AdresShipping == null) model.AdresShipping = adress;
                await CreateOrder(model);
                return RedirectToAction("Index", "Products");
            }

            await InitListTypes(model);
            return View(model);
        }
예제 #4
0
        public async Task<ActionResult> ReceiptsView()
        {
            var result = new List<CreateOrderViewModel>();
            foreach (var el in await OrderManager.GetReceiptsListAsync())
            {
                var order = new CreateOrderViewModel(el.Order)
                {
                    Id = el.Id.ToString("D6"),
                    ShippingCost = el.ShippingCost,
                    User = (await UserManager.FindByIdAsync(el.Order.UserId)).ToString(),
                    Products = await ProductManager.GetProducsInOrderAsync(el.Order.Id),
                    ReceiptStatus = el.Status.ToString()
                };

                result.Add(order);
            }
            return View(result);
        }
예제 #5
0
        private async Task ModifyOrder(CreateOrderViewModel model)
        {
            var order = await GetOrder(await OrderManager.FindAsync(model.Id), model);
            order = await OrderManager.CreateOrUpdate(order);
            foreach (var el in model.Products)
            {
                var detail = await OrderManager.DetailsFindAsync(order.Id, el.Id);
                if (detail == null) continue;
                detail.Count = el.Count;

                await OrderManager.CreateOrUpdateDetails(detail);
            }
            await OrderManager.Save();
        }
예제 #6
0
 private async Task<Order> GetOrder(Order order, CreateOrderViewModel model)
 {
     order.User = await UserManager.FindByIdAsync(model.UserId);
     order.ShippingType = await OrderManager.GetShippingTypeByIdAsync(model.ShippingTypeId);
     order.PaymentType = await OrderManager.GetPaymentTypeByIdAsync(model.PaymentTypesId);
     order.Shop = await AdressManager.GetShop(model.ShopId);
     order.AdresShipping = await AdressManager.GetOrCreateAdress(model.AdresShipping);
     order.AdressId = order.AdresShipping.Id;
     order.Distance = model.Distance;
     return order;
 }
예제 #7
0
        private async Task CreateOrder(CreateOrderViewModel model)
        {
            var order = await GetOrder(model.GetOrder, model);
            var products = model.Products.Where(o => o.Count > 0).ToList();

            order = await OrderManager.CreateOrUpdate(order);
            foreach (var el in products)
            {
                var product = await ProductManager.FindAsync(el.Id);
                if (product == null) continue;
                var detail = new OrderDetail
                {
                    IdOrder = order.Id,
                    Product = product,
                    Order = order,
                    IdProduct = product.Id,
                    Count = el.Count,
                    Price = product.Price
                };
                await OrderManager.CreateOrUpdateDetails(detail);
            }
            await OrderManager.Save();
        }
예제 #8
0
 private async Task InitUsers(CreateOrderViewModel order)
 {
     var users = new List<ApplicationUser>();
     foreach (var user in await UserManager.Users.ToListAsync())
     {
         if (await UserManager.IsInRoleAsync(user.Id, "Користувач"))
             users.Add(user);
     }
     order.Users = users;
     //order.NewUsers = new RegisterViewModel { Adress = new Adress() };
 }
예제 #9
0
 private async Task<CreateOrderViewModel> InitOrder(Order model, string userid)
 {
     var order = new CreateOrderViewModel(model)
     {
         ShippingTypes = await OrderManager.GetShippingTypesListAsync(),
         PaymentTypes = await OrderManager.GetPaymentTypesListAsync(),
         Products = await ProductManager.GetProducsInOrderAsync(model.Id),
         UserId = userid
     };
     var shop = await AdressManager.GetShop();
     if (shop != null)
     {
         order.ShopId = shop.Id;
         order.ShopAdress = shop.Adress.FullAdress;
     }
     var useradress = await AdressManager.GetAdress(model.AdressId);
     if (useradress != null)
     {
         order.AdresShipping = useradress;
     }
     return order;
 }
예제 #10
0
        private async Task InitOrder(CreateOrderViewModel order, string userid = "")
        {
            order.ShippingTypes = await OrderManager.GetShippingTypesListAsync();
            order.PaymentTypes = await OrderManager.GetPaymentTypesListAsync();

            await AdressManager.GetListAdressAsync();
            var shop = await AdressManager.GetShop();
            if (shop != null)
            {
                order.ShopId = shop.Id;
                order.ShopAdress = shop.Adress.FullAdress;
            }
            order.Products = await ProductManager.GetProducsAsync();
            if (!string.IsNullOrEmpty(userid))
            {
                var user = await UserManager.FindByIdAsync(userid);
                order.UserId = userid;
                order.AdresShipping = user.Adress ?? new Adress();
            }
            else
                await InitUsers(order);
        }
예제 #11
0
 private async Task InitListTypes(CreateOrderViewModel order)
 {
     order.ShippingTypes = await OrderManager.GetShippingTypesListAsync();
     order.PaymentTypes = await OrderManager.GetPaymentTypesListAsync();
     if (User.IsInRole("Менеджер")) await InitUsers(order);
 }
예제 #12
0
 public async Task<ActionResult> Edit(CreateOrderViewModel model, Adress adress)
 {
     if (model.AdresShipping == null) model.AdresShipping = adress;
     if (ModelState.IsValid)
     {
         await ModifyOrder(model);
         return RedirectToAction("Index");
     }
     if (string.IsNullOrEmpty(model.AdresShipping?.FullAdress))
         ModelState.AddModelError("AdresShipping", "Необхідно вказати адресу");
     await InitListTypes(model);
     return View(model);
 }