Ejemplo n.º 1
0
        public async Task <ActionResult <FilmModel> > UpdateFilm(string filmName, FilmModel model)
        {
            try
            {
                var directorModelValidationResult = ModelsValidator.ValidateDirectorModel(model);

                if (!directorModelValidationResult.Item1)
                {
                    return(BadRequest(directorModelValidationResult.Item2));
                }

                var actorsModelValidationResult = ModelsValidator.ValidateActorModels(model);

                if (!actorsModelValidationResult.Item1)
                {
                    return(BadRequest(actorsModelValidationResult.Item2));
                }

                var film = await _repository.GetFilmByTitleAsync(filmName);

                if (film == null)
                {
                    return(BadRequest("Film doesn't exist in db please add film with post method /api/films"));
                }

                _mapper.Map(model, film);

                var updateDirectorResult = await UpdateDirectorAsync(film);

                if (!updateDirectorResult.Item1)
                {
                    return(BadRequest(updateDirectorResult.Item2));
                }

                var updateCastResult = await UpdateCastAsync(film);

                if (!updateCastResult.Item1)
                {
                    return(BadRequest(updateCastResult.Item2));
                }

                if (await _repository.SaveChangesAsync())
                {
                    film = await _repository.GetFilmByTitleAsync(film.Title, true, true);

                    return(_mapper.Map <FilmModel>(film));
                }
                return(StatusCode(StatusCodes.Status500InternalServerError, "It looks like no changes were made"));
            }
            catch (Exception)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, "Database failure"));
            }
        }
Ejemplo n.º 2
0
        public async Task <ActionResult <FilmModel> > Post(FilmModel model)
        {
            try
            {
                if (model.Cast != null && model.Cast.Count() > 0)
                {
                    return(BadRequest("Please add film first. Update films cast with updatefilm method"));
                }

                var directorModelValidationResult = ModelsValidator.ValidateDirectorModel(model);

                if (!directorModelValidationResult.Item1)
                {
                    return(BadRequest(directorModelValidationResult.Item2));
                }

                var actorsModelValidationResult = ModelsValidator.ValidateActorModels(model);

                if (!actorsModelValidationResult.Item1)
                {
                    return(BadRequest(actorsModelValidationResult.Item2));
                }

                var film = await _repository.GetFilmByTitleAsync(model.Title);

                if (film != null)
                {
                    return(BadRequest("There is a film with same name"));
                }

                film = _mapper.Map <Film>(model);

                var updateDirectorResult = await UpdateDirectorAsync(film);

                if (!updateDirectorResult.Item1)
                {
                    return(BadRequest(updateDirectorResult.Item2));
                }

                var updateCastResult = await UpdateCastAsync(film);

                if (!updateCastResult.Item1)
                {
                    return(BadRequest(updateCastResult.Item2));
                }

                _repository.Add(film);

                if (await _repository.SaveChangesAsync())
                {
                    film = await _repository.GetFilmByTitleAsync(model.Title, true, true);

                    return(Created($"/api/films/{model.Title}", _mapper.Map <FilmModel>(film)));
                }

                return(StatusCode(StatusCodes.Status500InternalServerError, "It looks like no changes were made"));
            }
            catch (Exception)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, "Database failure"));
            }
        }