Exemple #1
0
        // GET: AdminProduct/Create
        public IActionResult Create()
        {
            ViewData["CategoryID"]      = new SelectList(_context.Category, "CategoryID", "CategoryName");
            ViewData["ProductStatusID"] = new SelectList(_context.Set <ProductStatus>(), "ProductStatusID", "ProductStatusName");
            //ViewData["RewardPoolID"] = new SelectList(_context.Set<RewardPool>(), "RewardPoolID", "RewardPoolID");
            ViewData["ProductServingTypeID"] = new SelectList(_context.Set <ProductServingType>(), "ProductServingTypeID", "ServingType");
            AdminProductCreateViewModel model = new AdminProductCreateViewModel();
            var date = DateTime.Now;

            model.SaleStartDateTime = new DateTime(date.Year, date.Month, date.Day, date.Hour, date.Minute, 0);
            model.SaleEndDateTime   = new DateTime(date.Year, date.Month, date.Day, date.Hour, date.Minute, 0);
            return(View(model));
        }
Exemple #2
0
        public async void Test_ProductAction()
        {
            #region Arrange
            // todo: define the required assets
            var options = new DbContextOptionsBuilder <AppDbContext>()
                          .UseInMemoryDatabase(databaseName: "HomeSquareMockDb")
                          .Options;

            //AppDbContext context = new AppDbContext(options);
            MockData mockData = new MockData();
            using (AppDbContext context = new AppDbContext(options)) {
                mockData.CreateMockProductStatus(context);
                mockData.CreateMockProductServingType(context);
                mockData.CreateMockCategory(context);

                IFormFile file = new FormFile(new MemoryStream(Encoding.UTF8.GetBytes("This is a dummy file")), 0, 0, "Data", "dummy.jpg");

                AdminProductCreateViewModel model = new AdminProductCreateViewModel()
                {
                    ProductPrice          = 15.33333,
                    ProductStock          = 5,
                    ProductName           = "Coke123",
                    ProductDiscount       = (float?)0.5,
                    ProductInformation    = "Coke 1.5 L Soft Drink",
                    Description           = "Coke 1.5 L Soft Drink",
                    ProductServingContent = 0,
                    ProductServingTypeID  = context.ProductServingType.FirstOrDefault().ProductServingTypeID,
                    ProductStatusID       = context.ProductStatus.Where(ps => ps.ProductStatusName == "Sale").FirstOrDefault().ProductStatusID,
                    CategoryID            = context.Category.Where(c => c.CategoryName == "Drink").FirstOrDefault().CategoryID,
                    Image             = file,
                    SaleStartDateTime = DateTime.Now,
                    SaleEndDateTime   = DateTime.Now.AddDays(2)
                };

                #endregion
                #region Act
                // todo: invoke the test
                //-------------------------------------------Test Creation of Product From Admin-----------------------------------------
                var adminProductController = new AdminProductController(context, null);

                await adminProductController.Create(model);

                var creationResult = context.Product.Where(p => p.ProductName == "Coke123").FirstOrDefault() == null ? false : true;

                Assert.True(creationResult);
                #endregion
            }
        }
Exemple #3
0
        public async Task <IActionResult> Create(
            [Bind("ProductID,ProductPrice,ProductStock,ProductName,ProductDiscount," +
                  "ProductInformation,Description,ProductServingContent,ProductServingTypeID," +
                  "ProductStatusID,CategoryID,Image,SaleStartDateTime,SaleEndDateTime")] AdminProductCreateViewModel model)
        {
            //Check if product with same name already existed on DB
            if (model != null && model.ProductName != null)
            {
                bool parseResult;
                bool.TryParse(((JsonResult)IsProductExist(model.ProductName)).Value.ToString(), out parseResult);

                if (parseResult != true)
                {
                    ModelState.AddModelError(string.Empty, "Product Name Is Not Unique");
                }
            }

            if (model.SaleStartDateTime > model.SaleEndDateTime)
            {
                ModelState.AddModelError(string.Empty, "Sale Start Date Should be Before Than the End Date");
            }

            if (ModelState.IsValid)
            {
                string uniqueFileName = ProcessUploadedFile(model.Image);

                Product product = new Product()
                {
                    ProductName           = model.ProductName,
                    ProductPrice          = model.ProductPrice,
                    ProductStock          = model.ProductStock == null ? 0 : model.ProductStock,
                    ProductAddedDate      = DateTime.Now,
                    ProductUpdateDate     = DateTime.Now,
                    ProductDiscount       = model.ProductDiscount == null ? 0 : model.ProductDiscount,
                    SaleStartDateTime     = model.SaleStartDateTime,
                    SaleEndDateTime       = model.SaleEndDateTime,
                    ImageUrl              = uniqueFileName,
                    ProductInformation    = model.ProductInformation,
                    Description           = model.Description,
                    ProductServingContent = model.ProductServingContent,
                    ProductServingTypeID  = model.ProductServingTypeID,
                    ProductStatusID       = model.ProductStatusID,
                    CategoryID            = model.CategoryID
                };

                product.PriceAfterDiscount = (double)(product.ProductPrice - (product.ProductPrice * (model.ProductDiscount == null ? 0 : model.ProductDiscount)));

                _context.Add(product);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }

            ViewData["CategoryID"]      = new SelectList(_context.Category, "CategoryID", "CategoryName", model.CategoryID);
            ViewData["ProductStatusID"] = new SelectList(_context.Set <ProductStatus>(), "ProductStatusID", "ProductStatusName", model.ProductStatusID);

            //ViewData["RewardPoolID"] = new SelectList(_context.Set<RewardPool>(), "RewardPoolID", "RewardPoolID", model.RewardPoolID);
            ViewData["ProductServingTypeID"] = new SelectList(_context.Set <ProductServingType>(), "ProductServingTypeID", "ServingType", model.ProductServingTypeID);

            return(View(model));
        }