Beispiel #1
0
        public async Task <IActionResult> CreateFilm(FilmViewModel model)
        {
            byte[] imageData = null;
            var    files     = this.HttpContext.Request.Form.Files;

            if (files.Count != 1)
            {
                if (string.IsNullOrEmpty(model.PosterImageBase64WithMimeType))
                {
                    ModelState.AddModelError("Image", $"Получено неверное количество файлов (принято {files.Count}, ожидается 1)");
                }
            }
            else
            {
                if (files[0].TryConvertFileToPNG(out imageData))
                {
                    model.PosterImageBase64WithMimeType = ImageUtils.ConvertToBase64WithMimeType(imageData);
                }
                else
                {
                    ModelState.AddModelError("Image", $"Получено некорректное изображение: {files[0].FileName}");
                }
            }

            if (!ModelState.IsValid)
            {
                model.Type = FilmViewModelType.Add;
                return(View("Film", model));
            }

            var user = await _userManager.GetUserAsync(this.User);

            var film = new Film
            {
                Name        = model.Name,
                Description = model.Description,
                Year        = model.Year,
                Producer    = model.Producer,
                AuthorId    = user.Id,
            };

            SetImageData(film, imageData, model);

            await _repository.CreateAsync(film);

            return(RedirectToAction("GetFilms"));
        }