Esempio n. 1
0
        public IActionResult Edit(GameViewModel model, List <IFormFile> files,
                                  List <int> deleteImages)
        {
            var gameIamgeMaxFileSize = Configuration.GetValue <long>("GameIamgeMaxFileSize", 60);
            var imageValid           = true;

            for (int i = 0; i < files.Count; i++)
            {
                if (files[i].Length > gameIamgeMaxFileSize)
                {
                    imageValid = false;
                    break;
                }
            }
            if (imageValid)
            {
                // حذف عکس ها
                var imageGames = _gameRepository.GetImageGames(deleteImages);
                // حذف از دیسک
                imageGames.ForEach(c =>
                {
                    var path = Path.Combine(_env.WebRootPath, "Attachment", c.ImageName);
                    if (System.IO.File.Exists(path))
                    {
                        System.IO.File.Delete(path);
                    }
                });
                // حذف از دیتابیس
                _gameRepository.DeleteImageGames(imageGames.Select(c => c.Id).ToList());

                // اضافه نمودن عکس های جدید
                // آپلود عکس های جدید
                List <string> imgagesName = new List <string>();
                files.ForEach(c =>
                {
                    var imageName = $"{Guid.NewGuid()}{Path.GetExtension(c.FileName)}";

                    var path = Path.Combine(_env.WebRootPath, "Attachment", imageName);

                    var fileStream = new FileStream(path, FileMode.Create);

                    c.CopyTo(fileStream);

                    fileStream.Close();

                    imgagesName.Add(imageName);
                });


                _gameRepository.AddImageGames(model.Id, imgagesName);

                var result = _gameRepository.Update(model.Id, model.Name, model.DisplayName);

                TempData.AddResult(result);
            }
            else
            {
                TempData.AddResult(Utility.ServiceResult.Error($"یک یا چند تا از عکس های انتخاب شده حجمشان بیش از {gameIamgeMaxFileSize} کیلو بایت است"));
            }
            return(RedirectToAction(nameof(Edit), new { id = model.Id }));
        }