Ejemplo n.º 1
0
        //end DataTranfer

        /// <summary>
        /// Chuyển đổi từ Entity => ViewModel
        /// </summary>
        /// <param name="product"></param>
        /// <param name="productDetails"></param>
        /// <param name="images"></param>
        /// <param name="viewModel"> ViewModel chứa Input</param>
        /// <history>
        /// [Lương Mỹ] Create [29/04/2019]
        /// </history>
        private void Mapping(Product product, List <ProductDetail> productDetails, List <Image> images,
                             ref ProductUpdateViewModel viewModel)
        {
            // Entity => ViewModel
            #region --- Excute ---

            viewModel = new ProductUpdateViewModel(product);

            // ProductDetail Entity => List<ProductDetail>
            for (int i = 0; i < productDetails.Count; i++)
            {
                var proDetailVModel = productDetails[i];
                ProductDetailBasicViewModel proVModel = new ProductDetailBasicViewModel(proDetailVModel);
                viewModel.ProductDetails.Add(proVModel);
            }

            // Image Entity => List<Image>
            for (int i = 0; i < images.Count; i++)
            {
                Image img = images[i];
                ImageBasicViewModel imgVModel = new ImageBasicViewModel(img);
                viewModel.Images.Add(imgVModel);
            }

            #endregion --- Excute ---
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Order()
        {
            OrderViewModel              orderViewModel;                                                                 // Order view model
            OrderDetailViewModel        orderDetailViewModel;                                                           // Order detail view model
            List <OrderDetailViewModel> orderDetailViewModels = new List <OrderDetailViewModel>();                      // Order detail view model list
            List <Order>                       orders;                                                                  // Order model list
            OrderStateViewModel                orderStateViewModel = new OrderStateViewModel();                         // View model
            List <OrderDetail>                 orderDetails        = new List <OrderDetail>();                          // Order detail model list
            ProductDetail                      productDetail;                                                           // Product detail model
            ProductDetailBasicViewModel        productDetailBasicViewModel;                                             // Product detail view model
            List <ProductDetailBasicViewModel> productDetailBasicViewModels = new List <ProductDetailBasicViewModel>(); // Product detail view model list

            // Get current user
            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                return(RedirectToAction("SignIn", "Login"));
            }

            // Get orders of user
            orders = orderService.GetOrders(user.Id);
            if (orders.Count > 0)
            {
                foreach (var order in orders)
                {
                    // Set order
                    orderViewModel = new OrderViewModel(order);
                    productDetailBasicViewModels = new List <ProductDetailBasicViewModel>();

                    // Set product
                    orderDetails = orderDetailService.GetOrderDetails(order.Id);
                    if (orderDetails.Count > 0)
                    {
                        foreach (var orderDetail in orderDetails)
                        {
                            productDetail = productDetailService.GetOne(orderDetail.ProductDetailId);
                            productDetail.PriceNavigation = new ProductPrice();
                            productDetail.ColorNavigation = new ProductType();
                            productDetail.SizeNavigation  = new ProductType();

                            productDetailBasicViewModel = new ProductDetailBasicViewModel(productDetail);
                            productDetailBasicViewModels.Add(productDetailBasicViewModel);
                        }
                    }
                    orderDetailViewModel = new OrderDetailViewModel(orderViewModel, productDetailBasicViewModels, null);
                    orderDetailViewModels.Add(orderDetailViewModel);
                }
                orderStateViewModel.Orders         = orderDetailViewModels;                                         // Tất cả đơn hàng
                orderStateViewModel.AcceptOrders   = orderDetailViewModels.Where(o => o.Order.State == 1).ToList(); // Đơn hàng đang chờ xác nhận
                orderStateViewModel.ShippingOrders = orderDetailViewModels.Where(o => o.Order.State == 2).ToList(); // Đơn hàng đang giao
                orderStateViewModel.DoneOrders     = orderDetailViewModels.Where(o => o.Order.State == 3).ToList(); // Đơn hàng giao thành công
                orderStateViewModel.CancelOrders   = orderDetailViewModels.Where(o => o.Order.State == 0).ToList(); // Đơn hàng đã hủy
            }

            return(View(orderStateViewModel));
        }
Ejemplo n.º 3
0
        public IActionResult OrderDetail(int orderId)
        {
            OrderDetailViewModel orderDetailViewModel = new OrderDetailViewModel();                                     // Order detail view model
            OrderViewModel       orderViewModel;                                                                        // Order view model
            Order order;                                                                                                // Order model
            List <OrderDetail>                 orderDetails = new List <OrderDetail>();                                 // Order detail model list
            ProductDetail                      productDetail;                                                           // Product detail model
            ProductDetailBasicViewModel        productDetailBasicViewModel;                                             // Product detail view model
            List <ProductDetailBasicViewModel> productDetailBasicViewModels = new List <ProductDetailBasicViewModel>(); // Product detail view model list
            Image image;                                                                                                // Image model list
            ImageBasicViewModel        imageBasicViewModel;                                                             // Image view model
            List <ImageBasicViewModel> imageBasicViewModels = new List <ImageBasicViewModel>();                         // Image view model list

            // Get order
            order = orderService.Get(orderId);
            if (order == null)
            {
                return(RedirectToAction("Order"));
            }
            orderViewModel = new OrderViewModel(order);

            // Get order detail
            orderDetails = orderDetailService.GetOrderDetails(orderId);
            if (orderDetails.Count > 0)
            {
                foreach (var orderDetail in orderDetails) // Get product detail
                {
                    // Get product detail
                    productDetail = productDetailService.GetOne(orderDetail.ProductDetailId);
                    productDetail.PriceNavigation = productPriceService.GetOne(productDetail.Price.GetValueOrDefault()); // Get price
                    productDetail.ColorNavigation = productTypeService.GetOne(productDetail.Color.GetValueOrDefault());  // Get color
                    productDetail.SizeNavigation  = productTypeService.GetOne(productDetail.Size.GetValueOrDefault());   // Get size

                    productDetailBasicViewModel          = new ProductDetailBasicViewModel(productDetail);
                    productDetailBasicViewModel.Quantity = orderDetail.Quantity; // Set buyed quantity
                    productDetailBasicViewModels.Add(productDetailBasicViewModel);

                    // Get images
                    image = imageService.Get(productDetail.ProductId.GetValueOrDefault());
                    imageBasicViewModel = new ImageBasicViewModel(image);
                    imageBasicViewModels.Add(imageBasicViewModel);
                }
                orderDetailViewModel.Order          = orderViewModel;
                orderDetailViewModel.ProductDetails = productDetailBasicViewModels;
                orderDetailViewModel.Images         = imageBasicViewModels;
            }

            return(View(orderDetailViewModel));
        }
Ejemplo n.º 4
0
        //end InitViewModel

        /// <summary>
        /// Get Product Old in Sever & Parse to JSon
        /// </summary>
        /// <param name="productID"></param>
        /// <returns></returns>
        private string ParseJson_ProductOld(Product product)
        {
            string json = String.Empty;

            if (product == null)
            {
                return(String.Empty);
            }
            ProductUpdateViewModel model = new ProductUpdateViewModel(product);

            model.Description = WebUtility.HtmlDecode(model.Description);
            foreach (var detail in product.ProductDetails)
            {
                ProductDetailBasicViewModel detailModel = new ProductDetailBasicViewModel(detail);
                model.ProductDetails.Add(detailModel);
            }
            json = JsonConvert.SerializeObject(model);
            return(json);
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> OrderUpdate(int orderID)
        {
            OrderUpdateViewModel viewModel = new OrderUpdateViewModel();

            viewModel.ProductDetail = new List <ProductDetailBasicViewModel>();
            viewModel.IsError       = true;

            var ENVIRONMENT_USER_ID = await userManager.GetUserAsync(User);

            if (ENVIRONMENT_USER_ID == null)
            {
                return(RedirectToAction("SignIn", "Login"));
            }
            var role      = userManager.GetRolesAsync(ENVIRONMENT_USER_ID).Result;
            var isShipper = false;

            if (role.Contains("Shipper"))
            {
                isShipper = true;
            }

            viewModel.UserID   = ENVIRONMENT_USER_ID.Id;
            viewModel.UserName = ENVIRONMENT_USER_ID.UserName;

            Order orderModel = orderService.Get(orderID);

            if (orderModel == null)
            {
                return(View(viewModel));
            }
            viewModel.SumPrice        = orderModel.PriceSum;                          // Giá tổng
            viewModel.ShippingFee     = orderModel.ShippingFee;                       // Phí vận chuyển
            viewModel.FinalPrice      = orderModel.PriceSum + orderModel.ShippingFee; // Tổng tiền thu
            viewModel.CreateDate      = orderModel.CreateDate;
            viewModel.OrderID         = orderID;
            viewModel.State           = orderModel.State;
            viewModel.Shipper         = orderModel.Shipper;
            viewModel.ReceiverAddress = orderModel.Address;
            viewModel.ReceiverName    = orderModel.Name;
            viewModel.ReceiverPhone   = orderModel.PhoneNumber;
            if (isShipper)
            {
                viewModel.ShippingDate = (orderModel.ShippingDate == null) ? DateTime.Now : orderModel.ShippingDate;
            }
            viewModel.DeadlineShip = (orderModel.DeadlineShip == null) ? DateTime.Now : orderModel.DeadlineShip;
            IEnumerable <OrderDetail>          orderDetailModel = orderDetailService.GetListByOrder(orderID);
            List <ProductDetailBasicViewModel> productDetail    = new List <ProductDetailBasicViewModel>();

            foreach (var orderDetail in orderDetailModel)
            {
                ProductDetail detail = productDetailService.GetOne(orderDetail.ProductDetailId);
                detail.PriceNavigation = priceService.GetOne((Int32)detail.Price);
                detail.ColorNavigation = productTypeService.GetOne((Int32)detail.Color);
                detail.SizeNavigation  = productTypeService.GetOne((Int32)detail.Size);

                ProductDetailBasicViewModel product = new ProductDetailBasicViewModel(detail);
                product.PriceText    = orderDetail.Price;
                product.Quantity     = orderDetail.Quantity;
                product.ProductName  = detail.Product.Name;
                product.SumPriceText = product.PriceText * product.Quantity;
                productDetail.Add(product);
            }
            viewModel.ProductDetail = productDetail;
            viewModel.CbbShipper    = GetShippers();
            return(View(viewModel));
        }
Ejemplo n.º 6
0
        public IActionResult Product(int productID)
        {
            ProductBasicViewModel       model;                       // View model
            ProductDetailBasicViewModel productDetailBasicViewModel; // Mapping data form model to view model
            ImageBasicViewModel         imageBasicViewModel;         // Mapping data form model to view model
            RateViewModel      rateViewModel;                        // Mapping data form model to view model
            int                priceID;                              // Get price ID of product detail
            int                sizeID;                               // Get size ID of product detail
            int                colorID;                              // Get color ID of product detail
            List <ProductType> productTypes;                         // Get size and color of product detail
            int                totalRate = 0;                        // Get total of rates

            string[] starRate = new string[5];
            string   query    = "RatePercent @productID";

            // Get data of product
            Product product = new Product();

            product = (productID == 0) ? new Product() : productService.Get(productID);
            if (product == null)
            {
                return(View());
            }

            var productDetails = productDetailService.GetList(productID); // Get product detail list
            var images         = imageService.GetList(productID);         // Get image list
            //var rates = rateService.GetRates(query,
            //                        new SqlParameter("@ProductID", productID)); // Get rate list
            var rates = rateService.GetRatesOfProduct(productID); // Get rate list

            // Mapping product
            model = new ProductBasicViewModel(product);

            // Mapping product detail
            foreach (var detail in productDetails)
            {
                // Get price of product detail
                priceID = detail.Price.GetValueOrDefault();
                detail.PriceNavigation = priceService.GetOne(priceID);

                // Get size and color of product detai
                sizeID                 = detail.Size.GetValueOrDefault();
                colorID                = detail.Color.GetValueOrDefault();
                productTypes           = productTypeService.GetSizeColor(sizeID, colorID);
                detail.SizeNavigation  = productTypes[0];
                detail.ColorNavigation = productTypes[1];

                productDetailBasicViewModel = new ProductDetailBasicViewModel(detail);
                model.Details.Add(productDetailBasicViewModel);
            }

            model.GroupBySize = model.Details
                                .OrderBy(s => s.Size)
                                .GroupBy(s => s.Size)
                                .Select(grp => grp.ToList())
                                .ToList();

            // Mapping image
            foreach (var image in images)
            {
                imageBasicViewModel = new ImageBasicViewModel(image);
                model.Images.Add(imageBasicViewModel);
            }

            // Mapping rate
            foreach (var rate in rates)
            {
                rate.RateUser = userService.Get(rate.UserId);
                totalRate    += rate.Star.GetValueOrDefault();
                rateViewModel = new RateViewModel(rate);
                model.Rates.Add(rateViewModel);
            }

            var ratePercents = rateService.GetRatePercent(query,
                                                          new SqlParameter("@productID", productID));

            foreach (var ratePercent in ratePercents)
            {
                starRate[ratePercent.Star.GetValueOrDefault() - 1] = ratePercent.Contents;
            }
            for (int i = 0; i < 5; i++)
            {
                if (string.IsNullOrEmpty(starRate[i]))
                {
                    starRate[i] = "0%";
                }
                else
                {
                    starRate[i] += "%";
                }
            }

            model.PriceProduct = model.Details.First().PriceText; // Get price of first detail
            int conntRates = (rates.Count == 0) ? 1 : rates.Count;

            model.AvgRate  = Math.Round((double)totalRate / conntRates, 2);
            model.RateList = starRate;
            return(View(model));
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Xử lý Input thành ViewModel hoàn chỉnh
        /// </summary>
        /// <param name="viewModel"> ViewModel chứa Input</param>
        /// <history>
        /// [Lương Mỹ] Create [29/04/2019]
        /// </history>
        private void ConfigViewModel(ref ProductUpdateViewModel viewModel)
        {
            // Input => ViewModel
            #region --- Set Value ---

            InitComboBox(ref viewModel);

            if (viewModel.IsUpdate)
            {
                ViewData["Title"] = "Chỉnh sửa sản phẩm";
            }
            else
            {
                ViewData["Title"] = "Thêm mới sản phẩm";
            }


            var DetailID  = viewModel.ProductDetailId;
            var Size      = viewModel.Size;
            var Color     = viewModel.Color;
            var PriceID   = viewModel.PriceId;
            var PriceText = viewModel.PriceText;

            var Quantity = viewModel.Quantity;

            #endregion --- Set Value ---

            #region --- Execute ---

            // Add Partial View => View Model
            viewModel.ProductDetails = new List <ProductDetailBasicViewModel>();

            if (DetailID != null & DetailID.Count > 0)
            {
                for (int i = 0; i < DetailID.Count; i++)
                {
                    var productDetail = new ProductDetailBasicViewModel()
                    {
                        ID       = DetailID[i],
                        Size     = Size[i],
                        Color    = Color[i],
                        Quantity = Quantity[i],
                        PriceID  = PriceID[i],
                    };
                    viewModel.ProductDetails.Add(productDetail);
                }
                ;
            }


            // Add Image in View => View Model
            viewModel.Images = new List <ImageBasicViewModel>();
            if (viewModel.Files != null && viewModel.Files.Count > 0)
            {
                // Temp
                List <ImageBasicViewModel> imgs = new List <ImageBasicViewModel>();
                // Main Execute Image
                foreach (var file in viewModel.Files)
                {
                    try
                    {
                        if (file.Length > 0)
                        {
                            var    extension = "." + file.FileName.Split('.')[file.FileName.Split('.').Length - 1];
                            string fileName  = Guid.NewGuid().ToString() + extension; //Create a new Name
                                                                                      //for the file due to security

                            var    webRoot  = _env.WebRootPath;
                            string filePath = Path.Combine(webRoot, "images", fileName);
                            using (var stream = new FileStream(filePath, FileMode.Create))
                            {
                                file.CopyTo(stream);
                            }
                            string url = "/images/" + fileName;
                            ImageBasicViewModel img = new ImageBasicViewModel
                            {
                                SetURL = url
                            };
                            imgs.Add(img);
                        }
                    }
                    catch (Exception e)
                    {
                        viewModel.IsError = true;
                        viewModel.Message = e.Message;
                        return;
                    }
                }
                // Gán lại cho ViewModel
                viewModel.Images = imgs;
            }

            #endregion --- Execute ---

            return;
        }