public async Task <IActionResult> EditProduct(Product product)
        {
            using var context = new EsramDbContext();
            var current = await context.Products.Include(x => x.Pictures).FirstOrDefaultAsync(x => x.Id == product.Id);

            if (ModelState.IsValid)
            {
                current.Name        = product.Name;
                current.IsBest      = product.IsBest;
                current.MainPicture = product.MainPicture;
                current.Code        = product.Code;
                current.Price       = product.Price;
                current.Description = product.Description;
                context.Products.Update(current);
                int result = await context.SaveChangesAsync();

                if (result > 0)
                {
                    ViewBag.Success = "Ürün başarıyla güncellendi";
                }
                else
                {
                    ViewBag.Error = "Ürün güncellenirken bir hata oluştu";
                }
            }
            return(View(current));
        }
        public async Task <IActionResult> EditPictures(IFormFile MainPicture, List <IFormFile> Pictures, int productId)
        {
            using var context = new EsramDbContext();
            Product prod = await context.Products.FindAsync(productId);

            if (MainPicture != null)
            {
                if (prod.MainPicture != null)
                {
                    FileExtension.RemoveFile(prod.MainPicture);
                }
                prod.MainPicture = FileExtension.UploadFile(MainPicture, "wwwroot/static/uploads/products").Replace(@"\", "/");
                context.Products.Update(prod);
            }
            if (Pictures.Count > 0)
            {
                List <ProductPicture> pList = new List <ProductPicture>();
                foreach (var pic in Pictures)
                {
                    pList.Add(new ProductPicture
                    {
                        Path      = FileExtension.UploadFile(pic, "wwwroot/static/uploads/products").Replace(@"\", "/"),
                        ProductId = productId
                    });
                }
                await context.ProductPictures.AddRangeAsync(pList);
            }
            await context.SaveChangesAsync();

            return(RedirectToAction("EditProduct", prod));
        }
        public async Task <IActionResult> CreateProduct(Product product, IFormFile MainPicture, List <IFormFile> Pictures)
        {
            CreateProductViewModel vm = new CreateProductViewModel();

            using var context   = new EsramDbContext();
            vm.MasterCategories = context.MasterCategories.Include(x => x.Categories).ToList();
            vm.Product          = new Product();
            if (ModelState.IsValid)
            {
                product.MainPicture = FileExtension.UploadFile(MainPicture, "wwwroot/static/uploads/products").Replace(@"\", "/");

                if (Pictures.Count > 0)
                {
                    product.Pictures = new List <ProductPicture>();
                    foreach (var item in Pictures)
                    {
                        product.Pictures.Add(new ProductPicture
                        {
                            Path = FileExtension.UploadFile(item, "wwwroot/static/uploads/products").Replace(@"\", "/")
                        });
                    }
                }

                await context.Products.AddAsync(product);

                int result = await context.SaveChangesAsync();

                ViewBag.Success = "Ürün başarıyla eklendi";
                return(View(vm));
            }
            return(View(vm));
        }
        public async Task <IActionResult> DeleteProduct(int pid)
        {
            using var context = new EsramDbContext();
            var prod = await context.Products.FindAsync(pid);

            context.Products.Remove(prod);
            int result = await context.SaveChangesAsync();

            return(Json(result > 0));
        }
        public async Task <IActionResult> DeleteMasterCategory(int id)
        {
            using var context = new EsramDbContext();
            var mc = await context.MasterCategories.FirstOrDefaultAsync(x => x.Id == id);

            context.MasterCategories.Remove(mc);
            await context.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
        public async Task <IActionResult> DeleteCategory(int cid)
        {
            using var context = new EsramDbContext();
            var cat = await context.Categories.FirstOrDefaultAsync(x => x.Id == cid);

            context.Categories.Remove(cat);
            int result = await context.SaveChangesAsync();

            return(result > 0?Json(true):Json(false));
        }
        public async Task <IActionResult> DeleteGallery(int gid)
        {
            using var context = new EsramDbContext();
            ProductPicture pic = await context.ProductPictures.FindAsync(gid);

            context.ProductPictures.Remove(pic);
            FileExtension.RemoveFile(pic.Path);
            int result = await context.SaveChangesAsync();

            return(Json(result > 0));
        }
        public async Task <IActionResult> EditCategory(Category cat, IFormFile PicturePath)
        {
            if (PicturePath != null)
            {
                cat.PicturePath = FileExtension.UploadFile(PicturePath, "wwwroot/static/uploads/categories").Replace(@"\", "/");
            }
            using var context = new EsramDbContext();
            context.Categories.Update(cat);
            await context.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
        public async Task <IActionResult> AddMasterCategory(MasterCategory masterCategory, IFormFile McPicturePath)
        {
            if (McPicturePath != null)
            {
                masterCategory.PicturePath = FileExtension.UploadFile(McPicturePath, "wwwroot/static/uploads/categories").Replace(@"\", "/");
            }
            using var context = new EsramDbContext();
            context.MasterCategories.Add(masterCategory);
            int result = await context.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
        public async Task <IActionResult> NewSlider(int index, IFormFile path)
        {
            using var context = new EsramDbContext();
            var slider = new Slider
            {
                Index = index,
                Path  = FileExtension.UploadFile(path, "wwwroot/static/uploads/sliders").Replace(@"\", "/")
            };

            context.Sliders.Add(slider);
            await context.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
        public async Task <IActionResult> EditSlider(int id, int index, IFormFile path, string currentpath)
        {
            using var context = new EsramDbContext();
            var slider = await context.Sliders.FindAsync(id);

            slider.Index = index;
            if (path != null)
            {
                slider.Path = FileExtension.UploadFile(path, "wwwroot/static/uploads/sliders").Replace(@"\", "/");
            }
            context.Sliders.Update(slider);
            await context.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
        public async Task <IActionResult> DeleteSlider(int sid)
        {
            using var context = new EsramDbContext();
            var slider = await context.Sliders.FirstOrDefaultAsync(x => x.Id == sid);

            context.Sliders.Remove(slider);
            int result = await context.SaveChangesAsync();

            if (result > 0)
            {
                FileExtension.RemoveFile(slider.Path);
                return(Json(true));
            }
            return(Json(false));
        }