示例#1
0
        public List <string> Validate(EditProductDTO product, out List <string> invalidIds)
        {
            var validationMessage = new List <string>();
            var validationId      = new List <string>();

            if (product.IsCreating && string.IsNullOrEmpty(product.Code))
            {
                validationMessage.Add("Code is empty.");
                validationId.Add("Code");
            }

            if (product.CategoryId == default(int))
            {
                validationMessage.Add("Category is empty.");
                validationId.Add("Category");
            }

            if (string.IsNullOrEmpty(product.Name))
            {
                validationMessage.Add("Name is empty.");
                validationId.Add("Name");
            }

            if (product.Price == default(decimal))
            {
                validationMessage.Add("Price is empty.");
                validationId.Add("Price");
            }

            invalidIds = validationId;
            return(validationMessage);
        }
        public async Task EditProduct(int id, EditProductDTO editProductDTO)
        {
            var dbProduct = dbContext.Products
                            .FirstOrDefault(x => x.Id == id);


            //Parameter tampering

            dbProduct.Price = editProductDTO.Price;

            await this.dbContext.SaveChangesAsync();
        }
示例#3
0
 public ActionResult Edit(int id, EditProductDTO collection)
 {
     try
     {
         editProductCommand.Operation(collection);
         return(RedirectToAction(nameof(Index)));
     }
     catch
     {
         return(View());
     }
 }
示例#4
0
        public async Task <IActionResult> PutProduct(EditProductDTO productDTO)
        {
            var product = new Product(productDTO.Manufacturer, productDTO.Model, productDTO.Price, productDTO.StashQuantity, productDTO.Id);

            _context.Entry(product).State = EntityState.Modified;


            await _context.SaveChangesAsync();



            return(NoContent());
        }
        public ActionResult Edit(EditProductDTO editProductDTO)
        {
            var product = _productRepo.FindById(editProductDTO.Id);

            var errorModel = new ProductViewModel
            {
                Product = product ?? _mapper.Map <EditProductDTO, ProductDTO>(editProductDTO),
                ProductSpecification = editProductDTO.ProductSpecification,
                CategoryId           = editProductDTO.CategoryId,
                Categories           = _categoryRepo.Categories.AsEnumerable(),
                StatusId             = editProductDTO.StatusId,
                Statuses             = _statusRepo.Statuses.AsEnumerable(),
                Images     = editProductDTO.Images,
                IsFeatured = editProductDTO.IsFeatured,
                IsActive   = editProductDTO.IsActive
            };

            if (!ModelState.IsValid)
            {
                return(View(errorModel));
            }

            if (product != null)
            {
                if (editProductDTO.Sku != product.Sku && _productRepo.FindBySku(editProductDTO.Sku) != null)
                {
                    ModelState.AddModelError("", "SKU is used by another product.");
                    return(View(errorModel));
                }

                var productEdited = _mapper.Map(editProductDTO, product);

                productEdited.Images = new List <string>();
                if (!string.IsNullOrWhiteSpace(editProductDTO.Images))
                {
                    var newImages = editProductDTO.Images.Split('@');
                    foreach (var img in newImages)
                    {
                        productEdited.Images.Add(img);
                    }
                }

                _productRepo.Save(productEdited, editProductDTO.ProductSpecification);

                TempData["SaveSuccess"] = "Success";
                return(RedirectToAction("index"));
            }

            ModelState.AddModelError("", "Product Id is invalid.");
            return(View(errorModel));
        }
示例#6
0
        public static void CreateProduct(EditProductDTO dto)
        {
            SqlTransaction transaction = null;

            try
            {
                var con = new SqlConnection(GetConnection());
                con.Open();
                transaction = con.BeginTransaction();
                var cmd = new SqlCommand
                {
                    Transaction = transaction,
                    Connection  = con,
                    CommandType = CommandType.Text,
                    CommandText =
                        @"INSERT INTO [SALuminousWeb].[dbo].[products]
                           ([productCode]
                           ,[description]
                           ,[addedDate]
                           ,[modifiedDate]
                           ,[price]
                           ,[categoriesID]
                           ,[hidden])" +
                        "VALUES (@code, @name, @addedDate, @modifiedDate, @price, @categoryID,0)"
                };
                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@code", dto.Code);
                cmd.Parameters.AddWithValue("@name", dto.Name);
                cmd.Parameters.AddWithValue("@addedDate", DateTime.Now);
                cmd.Parameters.AddWithValue("@modifiedDate", DBNull.Value);
                cmd.Parameters.AddWithValue("@price", dto.Price);
                cmd.Parameters.AddWithValue("@categoryID", dto.CategoryId);
                cmd.ExecuteNonQuery();
                transaction.Commit();

                if (con.State != ConnectionState.Closed)
                {
                    return;
                }
                con.Close();
            }
            catch (SqlException ex)
            {
                transaction.Rollback();
                var msg = "Insert errors";
                msg += ex.Message;
                throw new Exception(msg);
            }
        }
示例#7
0
 public static void UpdateProduct(EditProductDTO product)
 {
     using (var connection = new SqlConnection(GetConnection()))
     {
         const string sql = @"UPDATE [dbo].[products] SET Description=@d, modifiedDate=@md, price=@p, categoriesID=@cid, hidden=@hide WHERE [productId] = @pid";
         connection.Open();
         var cmd = new SqlCommand(sql, connection);
         cmd.Parameters.Add(new SqlParameter("@d", SqlDbType.NVarChar)).Value  = product.Name;
         cmd.Parameters.Add(new SqlParameter("@md", SqlDbType.DateTime)).Value = DateTime.Now;
         cmd.Parameters.Add(new SqlParameter("@p", SqlDbType.Money)).Value     = product.Price;
         cmd.Parameters.Add(new SqlParameter("@cid", SqlDbType.Int)).Value     = product.CategoryId;
         cmd.Parameters.Add(new SqlParameter("@hide", SqlDbType.Bit)).Value    = product.Hidden;
         cmd.Parameters.Add(new SqlParameter("@pid", SqlDbType.Int)).Value     = product.Id;
         cmd.ExecuteNonQuery();
     }
 }
示例#8
0
        public ActionResult GetProductDetail(string productCode)
        {
            var product       = ProductManagement.GetProduct(productCode);
            var productDetail = new EditProductDTO
            {
                Id         = product.Id,
                Name       = product.Name,
                CategoryId = product.CategoryId,
                Code       = product.Code,
                Price      = Convert.ToDecimal(product.Price),
                IsCreating = false,
                Hidden     = product.Hidden
            };

            return(Json(new { productDetail }, JsonRequestBehavior.AllowGet));
        }
示例#9
0
        public ActionResult CreateUpdateProduct(EditProductDTO dto)
        {
            if (dto == null)
            {
                throw new NullReferenceException("DTO cannot be null");
            }
            var validationIds     = new List <string>();
            var validationMessage = Validate(dto, out validationIds);

            if (!validationMessage.Any())
            {
                if (dto.IsCreating)
                {
                    ProductManagement.CreateProduct(dto);
                }
                else
                {
                    ProductManagement.UpdateProduct(dto);
                }

                var products         = ProductManagement.GetProductsIncludeHidden();
                var categories       = CategoryManagement.GetAllCategory();
                var totalProductPage = (int)Math.Ceiling(((double)products.Count() / (double)pageSize));
                return(Json(new
                {
                    products = ApplyPaging(products, 1).Select(x => ConvertToProductDTO(x, categories)),
                    passed = !validationMessage.Any(),
                    validationIds,
                    validationMessage = string.Join("</br>", validationMessage),
                    totalProductPage
                }));
            }

            return(Json(new
            {
                passed = !validationMessage.Any(),
                validationIds,
                validationMessage = string.Join("</br>", validationMessage)
            }));
        }
        public void Operation(EditProductDTO req)
        {
            var data = Context.Products.Find(req.Id);

            if (data == null || data.Deleted)
            {
                throw new DataNotFoundException();
            }

            if (Context.Products.Any(p => p.ProductName == req.ProductName))
            {
                throw new AlreadyExistsException();
            }

            data.ProductName    = req.ProductName;
            data.ProductDesc    = req.ProductDesc;
            data.ProductPrice   = req.ProductPrice;
            data.VendorId       = req.VendorId;
            data.ManufacturerId = req.ManufacturerId;
            data.CategoryId     = req.CategoryId;

            data.UpdatedAt = DateTime.Now;
            Context.SaveChanges();
        }
        public async Task <ActionResult <EditProductDTO> > Put(int id, EditProductDTO editProductDTO)
        {
            await service.EditProduct(id, editProductDTO);

            return(Ok(editProductDTO));
        }
示例#12
0
        public IActionResult UpdateProduct(EditProductDTO product)
        {
            string username = this.HttpContext.Session.GetString(SessionConstant.UserNameSession);

            if (string.IsNullOrEmpty(username))
            {
                return(RedirectToAction("Login", "Account"));
            }

            var suppliers  = this._supplierRepository.GetSuppliers();
            var categories = this._categoryRepository.GetCategories();

            ViewData["Suppliers"]  = suppliers;
            ViewData["Categories"] = categories;

            if (!ModelState.IsValid)
            {
                return(View("Edit", product));
            }

            bool isExisting = this._productRepository.IsExistingProductCodeOrName(
                product.Serial, product.Name, product.Id
                );

            if (isExisting)
            {
                ModelState.AddModelError("", "Mã sản phẩm hoặc tên sản phẩm đã tồn tại.");
                return(View("Edit", product));
            }

            var    productInDb  = this._mapper.Map <Product>(product);
            bool   uploadFileOk = false;
            string fileName     = "";

            if (product.PictureFile == null || product.PictureFile.FileName == "")
            {
                productInDb.Picture = "default.gif";
                uploadFileOk        = true;
            }
            else
            {
                fileName = WebUtility.HtmlEncode(
                    Path.GetFileName(product.PictureFile.FileName));

                if ((product.PictureFile.ContentType.ToLower() != "image/jpg") &&
                    (product.PictureFile.ContentType.ToLower() != "image/jpeg") &&
                    (product.PictureFile.ContentType.ToLower() != "image/pjpeg") &&
                    (product.PictureFile.ContentType.ToLower() != "image/gif") &&
                    (product.PictureFile.ContentType.ToLower() != "image/x-png") &&
                    (product.PictureFile.ContentType.ToLower() != "image/png"))
                {
                    ModelState.AddModelError("",
                                             $"File upload ({fileName}) không phải file ảnh,.");
                    return(View("Edit", product));
                }

                if (product.PictureFile.Length == 0)
                {
                    ModelState.AddModelError("",
                                             $"File upload ({fileName}) rỗng.");
                    return(View("Edit", product));
                }
                else if (product.PictureFile.Length > 1048576)
                {
                    ModelState.AddModelError("",
                                             $"File upload ({fileName}) vượt quá 1 MB.");
                    return(View("Edit", product));
                }

                var filePath = Path.Combine(this._env.WebRootPath, "uploads", fileName);
                using (FileStream fs = new FileStream(filePath, FileMode.Create))
                {
                    product.PictureFile.CopyTo(fs);
                }

                uploadFileOk = true;
            }

            if (uploadFileOk == false)
            {
                TempData["Fail"] = "Có lỗi trong quá trình upload file. !";
                return(View("Edit", product));
            }

            if (string.IsNullOrEmpty(productInDb.Picture))
            {
                productInDb.Picture = fileName;
            }

            productInDb.UpdatedBy   = "admin";
            productInDb.UpdatedDate = DateTime.Now;

            bool isSuccess = this._productRepository.UpdateProduct(productInDb);

            if (isSuccess)
            {
                TempData["Success"] = "Cập nhật dữ liệu thành công !";
                return(RedirectToAction("Index"));
            }
            else
            {
                TempData["Fail"] = "Cập nhật dữ liệu thất bại !";
                return(View("Edit", product));
            }
        }