예제 #1
0
        public List <ProductColour> GetAllColour()
        {
            try
            {
                string     query = @"SELECT * FROM [dbo].[ProductColour]";
                SqlCommand cmd   = new SqlCommand(query, con);
                con.Open();
                SqlDataReader        reader = cmd.ExecuteReader();
                List <ProductColour> aList  = new List <ProductColour>();
                while (reader.Read())
                {
                    ProductColour aCategory = new ProductColour();
                    aCategory.ProductColourId   = (int)reader["ProductColourId"];
                    aCategory.ProductColourName = reader["ProductColour"].ToString();

                    aList.Add(aCategory);
                }
                reader.Close();

                return(aList);
            }
            catch (Exception exception)
            {
                return(null);
            }
            finally
            {
                con.Close();
            }
        }
예제 #2
0
 public ActionResult SaveColour(ProductColour productColour)
 {
     if (ModelState.IsValid)
     {
         ViewBag.Msg = aProductColourManager.SaveColour(productColour);
     }
     return(View());
 }
예제 #3
0
 static ProductColourInfo Convert(ProductColour colour)
 {
     return(new ProductColourInfo
     {
         Guid = colour.Guid,
         NameTranslations = JsonConvert.DeserializeObject <TranslationInfo[]>(colour.NameTranslations),
         ProductGuid = colour.ProductGuid,
         Value = colour.Value
     });
 }
 public string SaveColour(ProductColour productColour)
 {
     if (aProductColourGateway.SaveColour(productColour) > 0)
     {
         return("Product  Colour has been saved successfully");
     }
     else
     {
         return("Failed to save Product Colour");
     }
 }
        // GET: /<controller>/
        public IActionResult Product(long id, string statusMessage = null, string successMessage = null,
                                     string failureMessage         = null, string returnUrl = null)
        {
            var viewModel = new ProductViewModel()
            {
                Product = _context.Products.Where(x => x.Id == id).
                          Include(c => c.ProductBrand).
                          Include(c => c.ProductColours).
                          Include(c => c.ProductSizes).
                          Include(c => c.ProductImages).
                          SingleOrDefault(),
                StatusMessage  = statusMessage,
                SuccessMessage = successMessage,
                FailureMessage = failureMessage
            };

            if (string.IsNullOrWhiteSpace(returnUrl))
            {
                viewModel.ReturnUrl = "~/Products";
            }
            else
            {
                viewModel.ReturnUrl = returnUrl.Replace(";amp;", "&");
            }

            viewModel.Sizes   = ProductSize.GetList(viewModel.Product.ProductSizes);
            viewModel.Colours = ProductColour.GetList(viewModel.Product.ProductColours);

            viewModel.Product.Description = viewModel.Product.Description.Replace(System.Environment.NewLine, "<br />");

            if (viewModel.Product.ProductImages.Count == 0)
            {
                viewModel.Product.ProductImages.Add(new ProductImage()
                {
                    Uri = "https://farm5.staticflickr.com/4705/40336899591_bdc86eddb2_o.png"
                });
            }

            // get related products
            viewModel.RelatedProducts = _context.Products.
                                        Where(x => x.ProductBrandId == viewModel.Product.ProductBrandId).
                                        Include(p => p.Department).
                                        Include(p => p.ProductBrand).
                                        Include(p => p.ProductSizes).
                                        Include(p => p.ProductImages).
                                        Include(p => p.ProductColours).
                                        Where(x => x.Stock > 0).
                                        ToList();

            return(View(viewModel));
            //return ControllerHelper.RedirectToLocal(this, "/Home/ComingSoon");
        }
예제 #6
0
        public void Delete(Guid id)
        {
            using (DatabaseContext context = new DatabaseContext())
            {
                ProductColour color = (from c in context.ProductColours
                                       where c.Guid == id
                                       select c).FirstOrDefault();

                if (color == null)
                {
                    return;
                }

                context.ProductColours.Remove(color);
                context.SaveChanges();
            }
        }
예제 #7
0
        public void Post(ProductColourInfo request)
        {
            if (request.ProductGuid == Guid.Empty)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            using (DatabaseContext context = new DatabaseContext())
            {
                ProductColour newColour = new ProductColour
                {
                    Guid             = Guid.NewGuid(),
                    NameTranslations = JsonConvert.SerializeObject(request.NameTranslations),
                    Value            = request.Value,
                    ProductGuid      = request.ProductGuid
                };

                context.ProductColours.Add(newColour);
                context.SaveChanges();
            }
        }
        public int SaveColour(ProductColour productColour)
        {
            try
            {
                string     query = @"INSERT INTO [dbo].[ProductColour]
           ([ProductColour])
     VALUES('" + productColour.ProductColourName + "')";
                SqlCommand cmd   = new SqlCommand(query, con);
                con.Open();
                int rowAffected = cmd.ExecuteNonQuery();

                return(rowAffected);
            }
            catch (Exception exception)
            {
                return(0);
            }
            finally
            {
                con.Close();
            }
        }
예제 #9
0
        public IActionResult EditProduct(long id, string statusMessage = null, string successMessage = null, string failureMessage = null)
        {
            var viewModel = new NewEditProductViewModel()
            {
                Product = _context.Products.Where(x => x.Id == id).
                          Include(c => c.ProductBrand).
                          Include(c => c.ProductColours).
                          Include(c => c.ProductSizes).
                          Include(c => c.ProductImages).
                          Include(c => c.Department).
                          SingleOrDefault(),
                StatusMessage  = statusMessage,
                SuccessMessage = successMessage,
                FailureMessage = failureMessage,
                ReturnUrl      = "~/ManageProducts"
            };

            viewModel.ProductSizes   = ProductSize.GetList(viewModel.Product.ProductSizes);
            viewModel.ProductColours = ProductColour.GetList(viewModel.Product.ProductColours);
            viewModel.ProductImages  = ProductImage.GetList(viewModel.Product.ProductImages);
            viewModel.Brands         = ProductBrand.GetList(_context.ProductBrands.OrderBy(b => b.Brand).OrderBy(x => x.Brand).ToList());
            viewModel.Colours        = Colour.GetList(_context.Colours.OrderBy(c => c.Value).ToList());
            viewModel.Departments    = Department.GetList(_context.Departments.OrderBy(d => d.DepartmentName).ToList());
            viewModel.Sizes          = Size.GetList(_context.Sizes.OrderBy(s => s.Value).ToList());
            viewModel.Brand          = viewModel.Product.ProductBrand.Brand;
            viewModel.Department     = viewModel.Product.Department.DepartmentName;

            if (viewModel.Product.ProductImages.Count == 0)
            {
                viewModel.Product.ProductImages.Add(new ProductImage()
                {
                    Uri = "https://farm5.staticflickr.com/4705/40336899591_bdc86eddb2_o.png"
                });
            }

            return(View(viewModel));
        }
예제 #10
0
        public JsonResult IsColourExists(ProductColour productColour)
        {
            bool isExist = aProductColourManager.IsColourExists(productColour.ProductColourName);

            return(Json(!isExist, JsonRequestBehavior.AllowGet));
        }
예제 #11
0
        public async Task <IActionResult> PreviewProduct(NewEditProductViewModel viewModel)
        {
            // create product images
            var inDb = _context.Products.
                       Where(x => x.Id == viewModel.Product.Id).
                       Include(x => x.ProductImages).SingleOrDefault();
            List <ProductImage> productImages = new List <ProductImage>();

            foreach (var image in inDb.ProductImages)
            {
                if (viewModel.Image != null)
                {
                    foreach (var item in viewModel.Image)
                    {
                        if (image.Uri.Replace("https://d3rlz58riodgu6.cloudfront.net/", "").Replace("?Authorization", "") == item)
                        {
                            productImages.Add(new ProductImage()
                            {
                                Uri = image.Uri
                            });
                        }
                    }
                }
            }

            //add new images
            if (viewModel.ImageFiles != null)
            {
                foreach (var item in viewModel.ImageFiles)
                {
                    var filePath = Path.GetTempPath();

                    var filename = filePath + _storeName + '_' + Guid.NewGuid();

                    using (var stream = new FileStream(filename, FileMode.Create))
                    {
                        await item.CopyToAsync(stream);
                    }

                    S3Helper.UploadToS3(filename, S3Helper.tempBucketName);

                    var image = new ProductImage()
                    {
                        Uri = "https://s3.amazonaws.com/gustafgallerystore-tempimages/" + _storeName + '_' + item.FileName.ToString() + "?Authorization"
                    };

                    productImages.Add(image);
                }
            }

            viewModel.ProductImagePreview = productImages;

            //add sizes
            List <ProductSize> productSizes = new List <ProductSize>();

            foreach (var item in viewModel.Size)
            {
                var size = new ProductSize()
                {
                    Size = item.ToString()
                };

                productSizes.Add(size);
            }

            viewModel.Product.ProductSizes = productSizes;

            //add colour
            List <ProductColour> productColours = new List <ProductColour>();

            foreach (var item in viewModel.Colour)
            {
                var colour = new ProductColour()
                {
                    Colour = item.ToString()
                };

                productColours.Add(colour);
            }

            // get related products
            viewModel.RelatedProducts = _context.Products.
                                        Where(x => x.ProductBrandId == _context.ProductBrands.
                                              Where(y => y.Brand == viewModel.Brand).SingleOrDefault().Id
                                              ).
                                        Include(x => x.ProductImages).
                                        ToList();

            viewModel.Product.ProductColours = productColours;

            return(View(viewModel));
        }
예제 #12
0
        public async Task <IActionResult> EditProduct(NewEditProductViewModel input, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;

            bool    modelValid      = true;
            decimal priceComparison = 0;

            if (string.IsNullOrWhiteSpace(input.Product.Title) ||
                input.Product.Price == priceComparison ||
                string.IsNullOrWhiteSpace(input.Department) ||
                string.IsNullOrWhiteSpace(input.Brand))
            {
                modelValid = false;
            }

            if (modelValid)
            {
                try
                {
                    //extract from db
                    var inDb = new Product();
                    inDb = _context.Products.Where(x => x.Id == input.Product.Id).
                           Include(c => c.ProductBrand).
                           Include(c => c.ProductColours).
                           Include(c => c.ProductSizes).
                           Include(c => c.ProductImages).
                           Include(c => c.Department).
                           SingleOrDefault();

                    //update product
                    inDb.Price = input.Product.Price;

                    inDb.Description = input.Product.Description;

                    inDb.Stock = input.Product.Stock;

                    inDb.Title = input.Product.Title;

                    //Prepare Product
                    if (inDb.Department.DepartmentName != input.Department)
                    {
                        //Department
                        var department = new Department();
                        department      = _context.Departments.Where(x => x.DepartmentName == input.Department).SingleOrDefault();
                        inDb.Department = department;
                    }

                    if (inDb.ProductBrand.Brand != input.Brand)
                    {
                        //brand
                        var brand = new ProductBrand();
                        brand             = _context.ProductBrands.Where(x => x.Brand == input.Brand).SingleOrDefault();
                        inDb.ProductBrand = brand;
                    }

                    //add sizes
                    List <ProductSize> productSizes = new List <ProductSize>();
                    foreach (var item in input.Size)
                    {
                        var size = new ProductSize()
                        {
                            Size = item.ToString()
                        };

                        productSizes.Add(size);
                    }

                    inDb.ProductSizes = productSizes;

                    //add colour
                    List <ProductColour> productColours = new List <ProductColour>();
                    foreach (var item in input.Colour)
                    {
                        var colour = new ProductColour()
                        {
                            Colour = item.ToString()
                        };

                        productColours.Add(colour);
                    }

                    inDb.ProductColours = productColours;

                    //images
                    List <ProductImage> productImages = new List <ProductImage>();

                    //remove old images
                    foreach (var image in inDb.ProductImages)
                    {
                        bool deleteImage = true;
                        if (input.Image != null)
                        {
                            foreach (var item in input.Image)
                            {
                                if (image.Uri.Replace("https://d3rlz58riodgu6.cloudfront.net/", "").Replace("?Authorization", "") == item)
                                {
                                    deleteImage = false;
                                }
                            }
                        }

                        if (deleteImage)
                        {
                            S3Helper.DeleteFromS3Async(image.Uri, S3Helper.bucketName);
                            _context.Remove(image);
                        }
                        else
                        {
                            //add image to new list
                            productImages.Add(image);
                        }
                    }

                    //add new images
                    if (input.ImageFiles != null)
                    {
                        foreach (var item in input.ImageFiles)
                        {
                            var filePath = Path.GetTempPath();

                            var filename = filePath + _storeName + '_' + $@"{item.FileName}";

                            using (var stream = new FileStream(filename, FileMode.Create))
                            {
                                await item.CopyToAsync(stream);
                            }

                            S3Helper.UploadToS3(filename, S3Helper.bucketName);

                            var image = new ProductImage()
                            {
                                Uri = "https://d3rlz58riodgu6.cloudfront.net/" + _storeName + '_' + item.FileName.ToString() + "?Authorization"
                            };

                            productImages.Add(image);
                        }
                    }

                    inDb.ProductImages = productImages;

                    //update Product
                    _context.Update(inDb);

                    input.SuccessMessage = "Product updated";

                    _context.SaveChanges();

                    return(ControllerHelper.RedirectToLocal(this, string.Format("/ManageProducts?successMessage={0}", input.SuccessMessage)));
                }
                catch (System.Exception ex)
                {
                    input.FailureMessage = "An Error occured; " + ex.Message;
                }
            }

            input.Brands                = ProductBrand.GetList(_context.ProductBrands.OrderBy(b => b.Brand).ToList());
            input.Colours               = Colour.GetList(_context.Colours.OrderBy(c => c.Value).ToList());
            input.Sizes                 = Size.GetList(_context.Sizes.OrderBy(s => s.Value).ToList());
            input.Departments           = Department.GetList(_context.Departments.OrderBy(d => d.DepartmentName).ToList());
            input.StatusMessage         = StatusMessage;
            input.Product.ProductImages = _context.ProductImages.Where(x => x.ProductId == input.Product.Id).ToList();

            if (input.Product.ProductImages.Count == 0)
            {
                input.Product.ProductImages.Add(new ProductImage()
                {
                    Uri = "https://farm5.staticflickr.com/4705/40336899591_bdc86eddb2_o.png"
                });
            }

            return(View(input));
        }
예제 #13
0
        public async Task <IActionResult> AddProduct(NewEditProductViewModel input, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;

            bool    modelValid      = true;
            decimal priceComparison = 0;

            if (string.IsNullOrWhiteSpace(input.Product.Title) ||
                input.Product.Price == priceComparison ||
                string.IsNullOrWhiteSpace(input.Department) ||
                string.IsNullOrWhiteSpace(input.Brand))
            {
                modelValid = false;
            }

            if (modelValid)
            {
                try
                {
                    //Prepare Product
                    input.Product.CreateDate = DateTime.Now;

                    //Department
                    var department = new Department();
                    department = _context.Departments.Where(x => x.DepartmentName == input.Department).SingleOrDefault();
                    input.Product.Department = department;

                    //brand
                    var brand = new ProductBrand();
                    brand = _context.ProductBrands.Where(x => x.Brand == input.Brand).SingleOrDefault();
                    input.Product.ProductBrand = brand;

                    //add sizes
                    List <ProductSize> productSizes = new List <ProductSize>();
                    foreach (var item in input.Size)
                    {
                        var size = new ProductSize()
                        {
                            Size = item.ToString()
                        };

                        productSizes.Add(size);
                    }

                    input.Product.ProductSizes = productSizes;

                    //add sizes
                    List <ProductColour> productColours = new List <ProductColour>();
                    foreach (var item in input.Colour)
                    {
                        var colour = new ProductColour()
                        {
                            Colour = item.ToString()
                        };

                        productColours.Add(colour);
                    }

                    input.Product.ProductColours = productColours;

                    //images
                    List <ProductImage> productImages = new List <ProductImage>();
                    if (input.ImageFiles != null)
                    {
                        foreach (var item in input.ImageFiles)
                        {
                            var filePath = Path.GetTempPath();

                            var filename = filePath + _storeName + '_' + $@"{item.FileName}";

                            using (var stream = new FileStream(filename, FileMode.Create))
                            {
                                await item.CopyToAsync(stream);
                            }

                            S3Helper.UploadToS3(filename, S3Helper.bucketName);

                            var image = new ProductImage()
                            {
                                Uri = "https://d3rlz58riodgu6.cloudfront.net/" + _storeName + '_' + item.FileName.ToString() + "?Authorization"
                            };

                            productImages.Add(image);
                        }
                    }

                    input.Product.ProductImages = productImages;

                    //Create product code
                    //var producCode = string.Concat(input.Product.ProductBrand.BrandCode.ToUpper(), '_', input.Product.Department.DepartmentCode, '_', input.Product.Title.Substring(0, 3).ToUpper());
                    //input.Product.ProductCode = GenerateProductCode(producCode);

                    //Create Product
                    _context.Add(input.Product);

                    _context.SaveChanges();

                    input.Product.ProductCode = string.Concat(input.Product.ProductBrand.Id, '-', input.Product.Department.Id, '-', input.Product.Id);

                    _context.Update(input.Product);

                    _context.SaveChanges();

                    input.SuccessMessage = "Product added";

                    return(ControllerHelper.RedirectToLocal(this, string.Format("/ManageProducts?successMessage={0}", input.SuccessMessage)));
                }
                catch (System.Exception ex)
                {
                    input.FailureMessage = "An Error occured; " + ex.Message;
                }
            }
            input.Brands        = ProductBrand.GetList(_context.ProductBrands.OrderBy(b => b.Brand).ToList());
            input.Colours       = Colour.GetList(_context.Colours.OrderBy(c => c.Value).ToList());
            input.Sizes         = Size.GetList(_context.Sizes.OrderBy(s => s.Value).ToList());
            input.Departments   = Department.GetList(_context.Departments.OrderBy(d => d.DepartmentName).ToList());
            input.StatusMessage = StatusMessage;

            return(View(input));
        }