Beispiel #1
0
        public async Task LinkActorAndMovie(Guid actorId, Guid movieId)
        {
            var actor = await _actorRepository.FindByAsync(e => e.Id == actorId);

            if (actor == null)
            {
                throw new ArgumentException($"Actor with id: {actorId} doesn't exist");
            }

            var movie = await _movieRepository.FindByAsync(e => e.Id == movieId);

            if (movie == null)
            {
                throw new ArgumentException($"Movie with id: {movieId} doesn't exist");
            }

            var actorMovie = await _actorMovieRepository.FindByAsync(e => e.ActorId == actorId && e.MovieId == movieId);

            if (actorMovie != null)
            {
                throw new ArgumentException($"Actor {actorId} and Movie {movieId} already linked");
            }

            actorMovie = new ActorMovie()
            {
                MovieId      = movieId,
                ActorId      = actorId,
                ActorMovieId = Guid.NewGuid()
            };

            await _actorMovieRepository.AddAsync(actorMovie);
        }
        public async Task <ActorUi> FindByIdAsync(Guid id, bool isAttachMovies)
        {
            if (isAttachMovies)
            {
                var actor = await _actorRepository.GetByIdAsync(id);

                if (actor == null)
                {
                    throw new ArgumentException("Entity not found");
                }
                return(actor.ConvertToUIModel());
            }
            else
            {
                var actor = await _actorRepository.FindByAsync(e => e.Id == id);

                if (actor == null)
                {
                    throw new ArgumentException("Entity not found");
                }
                return(actor.ConvertToUIModel());
            }
        }
Beispiel #3
0
        public async Task CreateAsync(MovieCreate movieUi)
        {
            var actorIds = new List <Guid>();

            if (movieUi.GenreId == Guid.Empty)
            {
                throw new ArgumentException($"Genre can't be null");
            }

            if (movieUi.FirstActor == Guid.Empty)
            {
                throw new ArgumentException($"Movie should has at least one actor");
            }

            var existedActor = await _actorRepository.FindByAsync(e => e.Id == movieUi.FirstActor);

            if (existedActor == null)
            {
                throw new ArgumentException($"Can't create movie with not existed actor id : {movieUi.FirstActor}");
            }

            var movie = new Movie()
            {
                Genre   = movieUi.Genre,
                GenreId = movieUi.GenreId,
                Id      = Guid.NewGuid(),
                Title   = movieUi.Title,
                Year    = movieUi.Year,
            };

            await _movieRepository.AddAsync(movie);


            //Link movie to actors
            var actorMovie = new ActorMovie()
            {
                ActorId      = movieUi.FirstActor,
                MovieId      = movie.Id,
                ActorMovieId = Guid.NewGuid()
            };

            await _actorMovieRepository.AddAsync(actorMovie);
        }