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 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)); }
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)); }
//end ConfigViewModel /// <summary> /// Chuyển đổi từ ViewModel => Entity /// </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 DataTranfer(out Product product, out History history, ProductUpdateViewModel viewModel) { bool deleteImage = false; bool deleteDetail = false; string userID = viewModel.UserID; string userName = viewModel.UserName; history = new History(); // ViewModel => Entity #region --- Tranfer --- #region --- Product --- // Product Entity => Product int productID = viewModel.ProductId; if (productID == 0) { product = new Product(); product.CreateByUser = userID; product.CreateDate = DateTime.Now; } else { product = productService.Get(productID); if (product == null) { return; // lỗi } } product.Name = viewModel.ProductName; //UserID product.CatalogId = viewModel.Catalog; product.Description = viewModel.Description; //History product.LastModifyByUser = userID; product.LastModifyDate = DateTime.Now; // product.State = 1; #endregion --- Product --- #region --- Details + Price --- // ProductDetail Entity => ProductDetails var productDetails = new List <ProductDetail>(); for (int i = 0; i < viewModel.ProductDetails.Count; i++) { var proDetailModel = viewModel.ProductDetails[i]; int detailID = proDetailModel.ID; ProductDetail detail = null; if (detailID == 0) { // Thêm mới detail = new ProductDetail(); detail.CreateByUser = userID; detail.CreateDate = DateTime.Now; } else { // Chỉnh sửa detail = detailService.GetOne(detailID); if (detail == null) { continue; } } // Info detail.Id = proDetailModel.ID; detail.Size = proDetailModel.Size; detail.Color = proDetailModel.Color; detail.Quantity = proDetailModel.Quantity; detail.Price = proDetailModel.PriceID; // History detail.LastModifyByUser = userID; detail.LastModifyDate = DateTime.Now; // State detail.State = 1; // ProductPrice int priceID = proDetailModel.PriceID.GetValueOrDefault(); ProductPrice productPrice = null; var newPrice = Double.Parse(viewModel.PriceText[i].Replace(".", ",")); if (priceID != 0) { productPrice = priceService.GetOne(priceID); //var newPrice = Double.Parse(viewModel.PriceText[i].Replace(".",",")); // Tạo mới Price nếu Thay đổi giá tiền if (productPrice.Price != newPrice) { productPrice = new ProductPrice(); productPrice.CreateDate = DateTime.Now; productPrice.CreateByUser = userID; } } else { productPrice = new ProductPrice(); productPrice.CreateDate = DateTime.Now; productPrice.CreateByUser = userID; } productPrice.Price = newPrice; // History productPrice.LastModifyByUser = userID; productPrice.LastModifyDate = DateTime.Now; // productPrice.State = 1; detail.PriceNavigation = productPrice; productDetails.Add(detail); }//end Entity ProductDetail // Delete ProductDetail if (viewModel.DeleteDetailID != null) { for (int i = 0; i < viewModel.DeleteDetailID.Count; i++) { deleteDetail = true; var proDetailID = viewModel.DeleteDetailID[i]; // ProductDetail ProductDetail detail = detailService.GetOne(proDetailID); if (detail == null) { continue; } detail.State = 0; // Xoa // Update history detail.LastModifyByUser = userID; detail.LastModifyDate = DateTime.Now; productDetails.Add(detail); } } #endregion --- Details + Price --- #region --- Image --- // Image Entity => List<Image> var images = new List <Image>(); for (int i = 0; i < viewModel.Images.Count; i++) { var imgModel = viewModel.Images[i]; Image img = new Image() { Url = imgModel.Url, CreateByUser = userID }; images.Add(img); } // Delete ProductDetail if (viewModel.DeleteImageID != null) { for (int i = 0; i < viewModel.DeleteImageID.Count; i++) { var imageDetailID = viewModel.DeleteImageID[i]; // ProductDetail Image img = imageService.GetOne(imageDetailID); if (img == null) { continue; } img.State = 0; // Xoa // Update history img.LastModifyByUser = userID; img.LastModifyDate = DateTime.Now; images.Add(img); } } #endregion --- Image --- #region --- History --- history.CreateDate = DateTime.Now; history.CreateByUser = userID; String changes = String.Empty; if (!viewModel.IsUpdate) // Thêm mới { changes = String.Format("</p> Tạo mới sản phảm </p>"); } else { if (viewModel.History != null) { for (int i = 0; i < viewModel.History.Count; i++) { var item = viewModel.History[i]; item = String.Format("<p> {0} </p>", item.ToString()); viewModel.History[i] = item; } changes = String.Join(" ", viewModel.History); } if (viewModel.DeleteImageID != null && viewModel.DeleteImageID.Count > 0) { changes += String.Format("</p> Xóa {0} hình ảnh </p>", viewModel.DeleteImageID.Count); } if (viewModel.Images != null && viewModel.Images.Count > 0) { changes += String.Format("</p> Thêm {0} hình ảnh </p>", viewModel.Images.Count); } } history.Content = changes; history.Table = "Product"; #endregion --- History --- if (viewModel.IsUpdate) { foreach (var img in images) { product.Images.Add(img); } foreach (var detail in productDetails) { product.ProductDetails.Add(detail); } } else { product.Images = images; product.ProductDetails = productDetails; } #endregion --- Tranfer --- }