Beispiel #1
0
        public async Task CreateMovieStar(Guid movieId, MovieStarCreateViewModel viewModel)
        {
            var movie = await _unitOfWork.Movies.GetBy(m => m.Id == movieId);

            if (movie == null)
            {
                throw new MovieNotFoundException();
            }

            var isAuthorized = await _authorizationService.AuthorizeAsync(
                _httpContextAccessor.HttpContext.User,
                movie,
                MovieStarOperations.Create
                );

            if (!isAuthorized.Succeeded)
            {
                throw new AccessDeniedException();
            }

            var movieStar = _mapper.Map <MovieStar>(viewModel);

            movie.MovieStars.Add(movieStar);

            await _unitOfWork.Save();
        }
Beispiel #2
0
        public async Task <IActionResult> Create(Guid movieId, MovieStarCreateViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    await _starService.CreateMovieStar(movieId, viewModel);

                    _flashMessage.Confirmation("Star has been attached to movie as character.");

                    return(RedirectToAction("Show", "Movies", new { id = movieId }));
                }
                catch (MovieNotFoundException)
                {
                    return(NotFound());
                }
                catch (AccessDeniedException)
                {
                    return(Forbid());
                }
            }

            viewModel = await _starService.LoadAvailableStarsToCreateViewModel(movieId, viewModel);

            return(View(viewModel));
        }
Beispiel #3
0
        public async Task <MovieStarCreateViewModel> LoadAvailableStarsToCreateViewModel(
            Guid movieId,
            MovieStarCreateViewModel viewModel = null
            )
        {
            var movie = await _unitOfWork.Movies.GetBy(m => m.Id == movieId);

            if (movie == null)
            {
                throw new MovieNotFoundException();
            }

            var isAuthorized = await _authorizationService.AuthorizeAsync(
                _httpContextAccessor.HttpContext.User,
                movie,
                MovieStarOperations.Create
                );

            if (!isAuthorized.Succeeded)
            {
                throw new AccessDeniedException();
            }

            if (viewModel == null)
            {
                viewModel = new MovieStarCreateViewModel();
            }

            var persons = await _unitOfWork.Persons.GetAllOrderedBy(null, "last_name", "asc").ToListAsync();

            var stars = await _unitOfWork.MovieStar.GetStarsAsPersons(movieId).ToListAsync();

            viewModel.Persons = persons.Except(stars).Select(person => new SelectListItem
            {
                Text  = person.FullName,
                Value = person.Id.ToString()
            }).ToList();

            return(viewModel);
        }