//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()); }
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)); }
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)); }
/// <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; }