public async Task <ActorResponse> Update(int id, ActorCreateUpdateRequest request)
        {
            var actor = await _dbContext
                        .Actors
                        .SingleAsync(x => x.Id == id);

            actor.FirstName = request.FirstName;
            actor.LastName  = request.LastName;

            await _dbContext
            .SaveChangesAsync();

            return(new ActorResponse
            {
                Id = actor.Id,
                FirstName = actor.FirstName,
                LastName = actor.LastName,
                Movies = (from ma in _dbContext.ActorMovies
                          from m in _dbContext.Movies
                          where ma.ActorId == actor.Id && ma.MovieId == m.Id
                          select new MovieResponse
                {
                    Id = m.Id,
                    Title = m.Title,
                    ReleaseDate = m.ReleaseDate,
                    GenreId = m.GenreId,
                    GenreName = _dbContext.Genres.First(g => g.Id == m.GenreId).Name,
                    Actors = null
                }).ToList()
            });
        }
        public async Task <IActionResult> Create([FromBody]  ActorCreateUpdateRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var newlyAddedActor = await _actorsService.Create(request);

            return(CreatedAtRoute("GetActor", new { id = newlyAddedActor }, newlyAddedActor));
        }
        public async Task <ActorResponse> Create(ActorCreateUpdateRequest request)
        {
            var actor = new Actor
            {
                FirstName = request.FirstName,
                LastName  = request.LastName
            };

            await _dbContext
            .Actors
            .AddAsync(actor);

            await _dbContext
            .SaveChangesAsync();

            if (request.MovieId.HasValue)
            {
                await _dbContext
                .ActorMovies
                .AddAsync(new ActorMovie
                {
                    ActorId = actor.Id,
                    MovieId = request.MovieId.Value
                });
            }

            await _dbContext.
            SaveChangesAsync();

            return(new ActorResponse
            {
                Id = actor.Id,
                FirstName = actor.FirstName,
                LastName = actor.LastName,
                Movies = (from ma in _dbContext.ActorMovies
                          from m in _dbContext.Movies
                          where ma.ActorId == actor.Id && ma.MovieId == m.Id
                          select new MovieResponse
                {
                    Id = m.Id,
                    Title = m.Title,
                    ReleaseDate = m.ReleaseDate,
                    GenreId = m.GenreId,
                    GenreName = _dbContext.Genres.First(g => g.Id == m.GenreId).Name,
                    Actors = null
                }).ToList()
            });
        }
        public async Task <IActionResult> Update(int id, [FromBody] ActorCreateUpdateRequest request)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                var updatedActor = await _actorsService.Update(id, request);

                return(new ObjectResult(updatedActor));
            }
            catch (InvalidOperationException)
            {
                return(NotFound(new { message = "Actor with specified id is not found" }));
            }
        }
Exemple #5
0
 public async Task <ActorResponse> Update(int id, ActorCreateUpdateRequest request)
 {
     return(await _actorsRepository.Update(id, request));
 }
Exemple #6
0
 public async Task <ActorResponse> Create(ActorCreateUpdateRequest request)
 {
     return(await _actorsRepository.Create(request));
 }