Esempio 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 ---
        }
        public IEnumerable <ProductBasicViewModel> MappingVModel(IEnumerable <Product> products)
        {
            List <ProductBasicViewModel> ListProductViewModel = new List <ProductBasicViewModel>();

            //Xử lý Product
            foreach (var product in products)
            {
                // Product Detail
                List <ProductDetail> listDetailProduct = productDetailService.GetList(product.Id);
                if (listDetailProduct == null || listDetailProduct.Count == 0)
                {
                    continue;
                }
                ProductDetail detailProduct = listDetailProduct.FirstOrDefault();

                ProductPrice priceNav = new ProductPrice();
                priceNav = priceService.GetOne(detailProduct.Price.GetValueOrDefault());
                // Xử lý khi Detail null
                double?price = double.NaN;  // Add to ViewModel
                if (detailProduct != null)
                {
                    price = priceNav.Price;
                }

                // Image
                Image image = imageService.Get(product.Id);
                ImageBasicViewModel imageViewModel = new ImageBasicViewModel(); // Add to ViewModel
                // Xử lý khi Image null
                if (image != null)
                {
                    imageViewModel.SetURL = image.Url;
                }

                List <ImageBasicViewModel> imagesTemp = new List <ImageBasicViewModel>
                {
                    imageViewModel
                };

                ProductBasicViewModel productViewModel = new ProductBasicViewModel
                {
                    Id   = product.Id,
                    Name = product.Name,
                    //UserName
                    //CatalogName
                    PriceProduct = price,
                    Images       = imagesTemp
                };

                // Add product into ViewModel
                ListProductViewModel.Add(productViewModel);
            }
            return(ListProductViewModel.AsEnumerable());
        }
Esempio 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));
        }
Esempio n. 4
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));
        }
Esempio n. 5
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;
        }