Esempio n. 1
0
        public ActionResult Index()
        {
            var list = mySQLFlowerService.GetList();

            //SeedUtility.SeedRandomOrder(Constant.DeleteUnknownOrders);
            //SeedUtility.SeedRandomOrder(Constant.SeedRandomOrders);

            return(View(list));
        }
        //[Authorize(Roles = Constant.Admin + "," + Constant.Employee)]
        // Cái này là dùng cho AutoComplete
        public ActionResult GetListProductCategories()
        {
            //Console.WriteLine("123");
            //var list = db.ProductCategories.Where(s => s.Status != ProductCategoryStatus.Deleted).ToList();
            var list    = mySQLCategoryService.GetList().Where(s => !string.IsNullOrEmpty(s.ParentCode));
            var newlist = list.Select(dep => new
            {
                dep.Code,
                dep.Name
            });

            return(new JsonResult()
            {
                Data = newlist,
                JsonRequestBehavior = JsonRequestBehavior.AllowGet,
            });
        }
        public ActionResult IndexCustomer(string amount, string sortFlower, string levelOneCategoryCode, string categoryCode,
                                          string searchString, string currentFilter, int?page, string searchFlowerGlobal, string filter)
        {
            if (!string.IsNullOrEmpty(filter))
            {
                var filterThisPage = JsonConvert.DeserializeObject <ThisPage>(filter);
                if (string.IsNullOrEmpty(searchString))
                {
                    currentFilter = filterThisPage.SearchString;
                }
                if (string.IsNullOrEmpty(amount))
                {
                    amount = filterThisPage.Amount;
                }
                if (string.IsNullOrEmpty(sortFlower))
                {
                    sortFlower = filterThisPage.SortFlower;
                }
                if (string.IsNullOrEmpty(searchFlowerGlobal))
                {
                    searchFlowerGlobal = filterThisPage.SearchFlowerGlobal;
                }
            }

            if (string.IsNullOrEmpty(levelOneCategoryCode) && string.IsNullOrEmpty(categoryCode) && string.IsNullOrEmpty(searchFlowerGlobal))
            {
                return(RedirectToAction("Index", "Home"));
            }

            ViewBag.CurrentUserName = userService.GetCurrentUserName();

            if (searchString != null)
            {
                page = 1;
            }
            else
            {
                searchString = currentFilter;
            }

            ViewBag.CurrentFilter = searchString;

            var flowers = mySQLFlowerService.GetList();

            if (!String.IsNullOrEmpty(levelOneCategoryCode))
            {
                var categories = mySQLCategoryService.GetList().Where(s => s.ParentCode == levelOneCategoryCode);
                flowers            = categories.SelectMany(s => s.Flowers).Where(s => s.Status == Flower.FlowerStatus.NotDeleted).ToList();
                ViewBag.Categories = categories;
                //categoryCode = categories.FirstOrDefault().Code;
            }

            if (!String.IsNullOrEmpty(categoryCode))
            {
                flowers = flowers.Where(s => s.CategoryCode == categoryCode);
                var category = mySQLCategoryService.Detail(categoryCode);
                ViewBag.Categories = mySQLCategoryService.GetList().Where(s => s.ParentCode == category.ParentCode);
                //var productCategory = mySQLCategoryService.Detail(categoryCode);
                //var list = productCategory.OwnerOfCourses.ToList();
                //ViewBag.Teachers = list;
            }

            if (!String.IsNullOrEmpty(searchFlowerGlobal))
            {
                flowers = flowers.Where(s => s.Name.ToUpper().Contains(searchFlowerGlobal.ToUpper()) || s.Code.ToUpper().Contains(searchFlowerGlobal.ToUpper()));
            }

            ViewBag.CurrentFilterFlowerGlobal = searchFlowerGlobal;

            if (!String.IsNullOrEmpty(searchString))
            {
                flowers = flowers.Where(s => s.Name.ToUpper().Contains(searchString.ToUpper()) || s.Code.ToUpper().Contains(searchString.ToUpper()));
            }

            if (!String.IsNullOrEmpty(sortFlower))
            {
                switch (sortFlower)
                {
                case "1":
                    flowers = flowers.OrderBy(s => s.Name);
                    break;

                case "2":
                    flowers = flowers.OrderBy(s => Utility.NewPrice(s.Price, s.Discount));
                    break;

                default:
                    break;
                }

                if (string.IsNullOrEmpty(searchFlowerGlobal))
                {
                    levelOneCategoryCode = GetLevelOneCategoryCode(flowers);
                    var lstCategories = mySQLCategoryService.GetList().Where(s => s.ParentCode == levelOneCategoryCode);
                    ViewBag.Categories = lstCategories;
                }
            }

            if (!String.IsNullOrEmpty(amount))
            {
                //var culture = System.Globalization.CultureInfo.GetCultureInfo("vn");
                var nbspace      = "\u00A0";
                var text         = HttpUtility.HtmlDecode(HttpUtility.HtmlDecode(nbspace));
                var newStrAmount = amount.Replace(",", string.Empty).Replace(" ", string.Empty).Replace(text, string.Empty);
                var arrCharDong  = newStrAmount.Where(s => !char.IsDigit(s)).ToArray();
                var amounts      = newStrAmount.Replace(arrCharDong.FirstOrDefault(), ',').Split(',');
                amounts = amounts.Skip(1).ToArray();
                var min = Double.Parse(amounts.First());
                var max = Double.Parse(amounts.Last());
                flowers = flowers.Where(s => Utility.NewPrice(s.Price, s.Discount) <= max && Utility.NewPrice(s.Price, s.Discount) >= min);

                if (string.IsNullOrEmpty(searchFlowerGlobal))
                {
                    levelOneCategoryCode = GetLevelOneCategoryCode(flowers);
                    var lstCategories = mySQLCategoryService.GetList().Where(s => s.ParentCode == levelOneCategoryCode);
                    ViewBag.Categories = lstCategories;
                }
            }

            int      pageSize   = Constant.PageSizeFlowersOnCustomerPage;
            int      pageNumber = (page ?? 1);
            ThisPage thisPage   = new ThisPage()
            {
                CurrentPage          = pageNumber,
                TotalPage            = Math.Ceiling((double)flowers.Count() / pageSize),
                ProductCategoryCode  = categoryCode,
                LevelOneCategoryCode = levelOneCategoryCode,
                CurrentType          = Constant.Customer,
                SearchString         = searchString,
                Amount             = amount,
                SortFlower         = sortFlower,
                SearchFlowerGlobal = searchFlowerGlobal
            };

            ViewBag.Page = thisPage;

            //var flowerCategories = new List<Category>();
            //foreach(var item in flowers)
            //{
            //    var category = mySQLCategoryService.Detail(item.CategoryCode);
            //    flowerCategories.Add(category);
            //}

            // nếu page == null thì lấy giá trị là 1, nếu không thì giá trị là page
            //return View(students.ToList().ToPagedList(pageNumber, pageSize));

            var list = flowers.Skip(pageSize * (pageNumber - 1)).Take(pageSize).ToList();

            return(View(flowers.Skip(pageSize * (pageNumber - 1)).Take(pageSize).ToList()));
        }
        public ActionResult Index(string sortOrder, string searchString, string currentFilter, int?page, string filter)
        {
            if (!string.IsNullOrEmpty(filter))
            {
                var filterThisPage = JsonConvert.DeserializeObject <ThisPage>(filter);
                currentFilter = filterThisPage.SearchString;
            }

            ViewBag.CurrentSort  = sortOrder;
            ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
            // lúc đầu vừa vào thì sortOrder là null, cho nên gán NameSortParm = name_desc
            // Ấn vào link Full name thì lúc đó NameSortParm có giá trị là name_desc, sortOrder trên view được gán = NameSortParm cho nên sortOrder != null
            // và NameSortParm = ""
            // Ấn tiếp vào link Full Name thì sortOrder = "" cho nên NameSortParm = name_desc
            ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";

            if (searchString != null)
            {
                page = 1;
            }
            else
            {
                searchString = currentFilter;
            }

            ViewBag.CurrentFilter = searchString;

            var flowerCategories = mySQLCategoryService.GetList();

            if (!String.IsNullOrEmpty(searchString))
            {
                flowerCategories = flowerCategories.Where(s => s.Name.Contains(searchString) || s.Code.Contains(searchString));
            }
            switch (sortOrder)
            {
            case "name_desc":
                flowerCategories = flowerCategories.OrderByDescending(s => s.Name);
                break;

            case "Date":
                flowerCategories = flowerCategories.OrderBy(s => s.UpdatedAt);
                break;

            case "date_desc":
                flowerCategories = flowerCategories.OrderByDescending(s => s.UpdatedAt);
                break;

            default:
                flowerCategories = flowerCategories.OrderBy(s => s.Name);
                break;
            }

            int      pageSize   = Constant.PageSize;
            int      pageNumber = (page ?? 1);
            ThisPage thisPage   = new ThisPage()
            {
                CurrentPage  = pageNumber,
                TotalPage    = Math.Ceiling((double)flowerCategories.Count() / pageSize),
                SearchString = searchString
            };

            ViewBag.Page = thisPage;
            // nếu page == null thì lấy giá trị là 1, nếu không thì giá trị là page
            //return View(students.ToList().ToPagedList(pageNumber, pageSize));
            return(View(flowerCategories.Skip(pageSize * (pageNumber - 1)).Take(pageSize).ToList()));
        }
        public static void SeedRandomOrder(string type)
        {
            switch (type)
            {
            case Constant.SeedRandomOrders:
                var customers            = DbContext.Users.ToList();
                var flowers              = mySQLFlowerService.GetList().ToList();
                var daysGenerator        = new RandomGenerator();
                var paymentTypeGenerator = new RandomGenerator();
                var statusGenerator      = new RandomGenerator();
                var priceGenerator       = new RandomGenerator();
                var orderIdGenerator     = new RandomGenerator();

                var orders = Builder <Order> .CreateListOfSize(1000)
                             .All()
                             //.With(o => o.Id = null)
                             .With(o => o.UserId        = Pick <AppUser> .RandomItemFrom(customers).Id)
                             .With(o => o.PaymentTypeId = (PaymentType)Enum.Parse(typeof(PaymentType), paymentTypeGenerator.Next(1, 3).ToString()))
                             //.With(o => o.CreatedAt = DateTime.Now.AddDays(-daysGenerator.Next(1, 9)))
                             .With(o => o.CreatedAt = DateTime.Now.AddDays(-daysGenerator.Next(1, 3650)))
                             //.With(o => o.CreatedAt = DateTime.Now.AddMonths(-daysGenerator.Next(1, 120)))
                             //.With(o => o.CreatedAt = DateTime.Now.AddYears(-daysGenerator.Next(1, 120)))
                             .With(o => o.UpdatedAt   = o.CreatedAt.Value.AddDays(2))
                             .With(o => o.CreatedBy   = userService.GetCurrentUserName())
                             .With(o => o.UpdatedBy   = userService.GetCurrentUserName())
                             .With(o => o.ShipName    = Faker.Name.FullName())
                             .With(o => o.ShipAddress = Faker.Address.StreetAddress())
                             .With(o => o.ShipPhone   = Faker.Phone.Number())
                             //.With(o => o.Status = (OrderStatus)Enum.Parse(typeof(OrderStatus), statusGenerator.Next(1, 6).ToString()))
                             .With(o => o.Status    = OrderStatus.Done)
                             .With(o => o.DeletedAt = null)
                             .With(o => o.DeletedBy = null)
                             //.With(o => o.TotalPrice = priceGenerator.Next(22, 500))
                             .Build();

                //DbContext.Orders.AddRange(orders);
                //DbContext.SaveChanges();

                // Generate order items
                var itemCountGenerator = new RandomGenerator();
                var quantityGenerator  = new RandomGenerator();

                //orders = DbContext.Orders.Where(s => s.Status == OrderStatus.Done).ToList();
                //foreach (var itemOrder in orders)
                //{
                //    var listOrderDetailsSeed = itemOrder.OrderDetails.ToList();
                //    if (listOrderDetailsSeed == null || listOrderDetailsSeed.Count == 0)
                //    {
                //        var orderDetails = Builder<OrderDetail>.CreateListOfSize(itemCountGenerator.Next(1, 10))
                //        .All()
                //            .With(oi => oi.Id = null)
                //            .With(oi => oi.Order = itemOrder)
                //            .With(oi => oi.OrderId = itemOrder.Id)
                //            .With(oi => oi.Flower = Pick<Flower>.RandomItemFrom(flowers))
                //            .With(oi => oi.FlowerCode = oi.Flower.Code)
                //            .With(oi => oi.Quantity = quantityGenerator.Next(1, 10))
                //            .With(oi => oi.UnitPrice = oi.Flower.Price)
                //        .Build();
                //        DbContext.Orders.AddOrUpdate(itemOrder);
                //        DbContext.SaveChanges();
                //    }
                //}

                //var ordersTest = DbContext.Orders.Where(s => s.Status == OrderStatus.Done).ToList();
                orders.ForEach(o =>
                {
                    var orderDetails = Builder <OrderDetail> .CreateListOfSize(itemCountGenerator.Next(2, 8))
                                       .All()
                                       //.With(oi => oi.Id = null)
                                       .With(oi => oi.Order      = o)
                                       .With(oi => oi.OrderId    = o.Id)
                                       .With(oi => oi.Flower     = Pick <Flower> .RandomItemFrom(flowers))
                                       .With(oi => oi.FlowerCode = oi.Flower.Code)
                                       .With(oi => oi.Quantity   = quantityGenerator.Next(1, 10))
                                       .With(oi => oi.UnitPrice  = oi.Flower.Price)
                                       .Build();

                    o.TotalPrice = orderDetails.Sum(s => (s.UnitPrice * s.Quantity));
                    //DbContext.Orders.AddOrUpdate(o);
                    DbContext.OrderDetails.AddOrUpdate(oi => oi.Id, orderDetails.ToArray());
                    //DbContext.Orders.AddOrUpdate(o);
                });
                DbContext.Orders.AddOrUpdate(o => o.Id, orders.ToArray());
                DbContext.SaveChanges();
                //    //var orderDetails = Builder<OrderDetail>.CreateListOfSize(itemCountGenerator.Next(1, 10))
                //    //    .All()
                //    //        //.With(oi => oi.Id = )
                //    //        .With(oi => oi.Order = o)
                //    //        .With(oi => oi.OrderId = o.Id)
                //    //        .With(oi => oi.Flower = Pick<Flower>.RandomItemFrom(flowers))
                //    //        .With(oi => oi.FlowerCode = oi.Flower.Code)
                //    //        .With(oi => oi.Quantity = quantityGenerator.Next(1, 10))
                //    //        .With(oi => oi.UnitPrice = oi.Flower.Price)
                //    //    .Build();
                //    //DbContext.OrderDetails.AddOrUpdate(oi => oi.Id, orderDetails.ToArray());
                //    //.GroupBy(s => s.FlowerCode).Select(s => s.FirstOrDefault())
                //});

                //orders = orders.ForEach(o => o.TotalPrice = o.OrderDetails.Sum(s => (s.UnitPrice * s.Quantity)));
                //orders.ForEach(o => o.TotalPrice = o.OrderDetails.Sum(s => (s.UnitPrice * s.Quantity)));
                //var compareDate = DateTime.Now.AddYears(-3);
                //ordersTest = ordersTest.Where(s => DateTime.Compare(s.UpdatedAt.Value, compareDate) > 0).ToList();
                //foreach (var item in orders)
                //{
                //    item.TotalPrice = item.OrderDetails.Sum(s => (s.UnitPrice * s.Quantity));
                //}
                break;

            case Constant.DeleteUnknownOrders:
                var lstFlowers = mySQLFlowerService.GetList().ToList();
                var lstOrders  = DbContext.Orders.Where(s => s.Status != OrderStatus.Deleted).ToList();

                lstOrders.ForEach(o =>
                {
                    var listOrderDetails = o.OrderDetails.ToList();
                    if (listOrderDetails == null || listOrderDetails.Count == 0)
                    {
                        o.Status = OrderStatus.Deleted;
                        DbContext.Orders.AddOrUpdate(o);
                    }
                    else
                    {
                        var result = listOrderDetails.Where(p => lstFlowers.All(p2 => p2.Code != p.FlowerCode)).ToList();
                        if (result != null && result.Count > 0)
                        {
                            o.Status = OrderStatus.Deleted;
                            DbContext.Orders.AddOrUpdate(o);
                        }
                    }
                });
                //foreach (var item in lstOrders)
                //{
                //    var listOrderDetails = item.OrderDetails.ToList();
                //    if (listOrderDetails == null || listOrderDetails.Count == 0)
                //    {
                //        item.Status = OrderStatus.Deleted;
                //        DbContext.Orders.AddOrUpdate(item);
                //    }
                //    else
                //    {
                //        var result = listOrderDetails.Where(p => lstFlowers.All(p2 => p2.Code != p.FlowerCode)).ToList();
                //        if (result != null && result.Count > 0)
                //        {
                //            item.Status = OrderStatus.Deleted;
                //            DbContext.Orders.AddOrUpdate(item);
                //        }
                //    }
                //}

                DbContext.SaveChanges();
                break;

            default:
                break;
            }
        }