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());
        }
Beispiel #2
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));
        }
Beispiel #3
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));
        }
Beispiel #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));
        }
Beispiel #5
0
        //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 ---
        }