public async Task <MovieDto> Add(AddMovieDto movie)
        {
            var entity = new Movie {
                MovieTitle    = movie.Title,
                MovieDuration = movie.Duration
            };
            var newMovie = await _moviesRepository.Add(entity);

            return(new MovieDto(newMovie));
        }
Пример #2
0
        public async Task <Guid> AddAsync(AddMovieDto movie)
        {
            var newMovie = new Movie(movie.Title);

            await _ctx.Movies.AddAsync(newMovie);

            await _ctx.SaveChangesAsync();

            return(newMovie.Id);
        }
        public async Task <ActionResult <MovieDto> > CreateMovie([FromBody] AddMovieDto movie)
        {
            if (string.IsNullOrEmpty(movie.Title))
            {
                return(BadRequest(new ErrorMessage("Title cannot be empty")));
            }
            if (movie.Duration <= 0)
            {
                return(BadRequest(new ErrorMessage("Duration must be longer than 0 minutes")));
            }

            var newMovie = await _moviesService.Add(movie);

            return(Ok(newMovie));
        }
Пример #4
0
        public async Task <IActionResult> Post([FromBody] AddMovieDto item)
        {
            var movie = await _movieRepository.GetByNameAsync(item.Name);

            if (movie != null)
            {
                return(Error($"Name is already in use: {item.Name}"));
            }

            movie = new MovieEntity().Create(item.Name, item.Stock, item.Price, item.SalePrice, item.Availability, item.Description);
            if (movie == null)
            {
                return(Error($"Invalid data."));
            }

            await _movieRepository.CreateMovieAsync(movie);

            return(Ok());
        }
Пример #5
0
        public async Task <IActionResult> PostUpdate([FromQuery] int id, [FromBody] AddMovieDto item)
        {
            //var movie = await _movieRepository.GetByIdAsync(id);

            //if (movie == null)
            //    return Error($"movie does not exist");

            MovieEntity movieU = new MovieEntity()
            {
                Name        = item.Name,
                Stock       = item.Stock,
                Price       = item.Price,
                SalePrice   = item.SalePrice,
                Description = item.Description
            };
            //movie = new MovieEntity().Update(movie, item.Name, item.Price, item.Stock, item.SalePrice, item.Availability, item.Description, id);
            //if (movie == null)
            //return Error($"Invalid data.");

            await _movieRepository.UpdateAllMovieAsync(id, movieU);

            return(Ok());
        }
Пример #6
0
        public async Task <ActionResult> Post([FromBody] AddMovieDto movie)
        {
            var id = await _movieService.AddAsync(movie);

            return(CreatedAtAction("Get", new { Id = id }));
        }
Пример #7
0
        public async Task <ActionResult> AddMovie([FromBody] AddMovieDto dto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.Values.SelectMany(c => c.Errors)));
            }

            var actorIds       = dto.ActorIds.Distinct().OrderBy(x => x).ToList();
            var directorIds    = dto.DirectorIds.Distinct().OrderBy(x => x).ToList();
            var writerIds      = dto.WriterIds.Distinct().OrderBy(x => x).ToList();
            var genreIds       = dto.GenreIds.Distinct().OrderBy(x => x).ToList();
            var screenshotUrls = dto.ScreenshotUrls.Distinct().ToList();
            var countryIds     = dto.CountryIds.Distinct().OrderBy(x => x).ToList();

            var countries = await Context.Countries.Where(x => countryIds.Contains(x.Id)).ToListAsync();

            var genres = await Context.Genres.Where(x => genreIds.Contains(x.Id)).ToListAsync();

            var actors = await Context.People.Where(p => p.KnownFor == DepartmentEnums.Acting)
                         .Where(x => actorIds.Contains(x.Id))
                         .ToListAsync();

            var directors = await Context.People.Where(p => p.KnownFor == DepartmentEnums.Directing)
                            .Where(x => directorIds.Contains(x.Id))
                            .ToListAsync();

            var writers = await Context.People.Where(p => p.KnownFor == DepartmentEnums.Writing)
                          .Where(x => writerIds.Contains(x.Id))
                          .ToListAsync();

            var missingDirectors = directorIds.Except(directors.Select(a => a.Id)).ToList();
            var missingActors    = actorIds.Except(actors.Select(a => a.Id)).ToList();
            var missingGenres    = genreIds.Except(genres.Select(a => a.Id)).ToList();
            var missingWriters   = writerIds.Except(writers.Select(a => a.Id)).ToList();
            var missingCountries = countryIds.Except(countries.Select(a => a.Id)).ToList();

            if (missingCountries.Count != 0)
            {
                Logger.LogWarning(LogTemplates.NotFound, nameof(Country), missingCountries);
                return(NotFound($"Could not find countries with ids {string.Join(", ", missingCountries)}"));
            }

            if (missingActors.Count != 0)
            {
                Logger.LogWarning(LogTemplates.NotFound, nameof(Person), missingActors);
                return(NotFound($"Could not find actors with ids {string.Join(", ", missingActors)}"));
            }

            if (missingDirectors.Count != 0)
            {
                Logger.LogWarning(LogTemplates.NotFound, nameof(Person), missingDirectors);
                return(NotFound($"Could not find directors with ids {string.Join(", ", missingDirectors)}"));
            }

            if (missingWriters.Count != 0)
            {
                Logger.LogWarning(LogTemplates.NotFound, nameof(Person), missingWriters);
                return(NotFound($"Could not find writers with ids {string.Join(", ", missingWriters)}"));
            }

            if (missingGenres.Count != 0)
            {
                Logger.LogWarning(LogTemplates.NotFound, nameof(Genre), missingGenres);
                return(NotFound($"Could not find genres with ids {string.Join(", ", missingGenres)}"));
            }

            var movie = new Movie
            {
                PosterUrl   = dto.PosterUrl,
                Featured    = false,
                Duration    = TimeSpan.FromMinutes(dto.DurationInMinutes),
                Plot        = dto.Plot,
                ReleaseDate = dto.ReleaseDate,
                Title       = dto.Title,
            };

            var movieActors = actors.Select(x => new MoviePerson {
                Person = x, Movie = movie
            }).ToList();
            var movieDirectors = directors.Select(x => new MoviePerson {
                Person = x, Movie = movie
            }).ToList();
            var movieWriters = writers.Select(x => new MoviePerson {
                Person = x, Movie = movie
            }).ToList();
            var movieGenres = genres.Select(x => new MovieGenre {
                Genre = x, Movie = movie
            }).ToList();
            var movieCountries = countries.Select(x => new MovieCountry {
                Country = x, Movie = movie
            }).ToList();
            var screenshots = screenshotUrls.Select(x => new Image {
                Movie = movie, Url = x.ToString()
            }).ToList();

            Context.MoviePeople.AddRange(movieActors);
            Context.MoviePeople.AddRange(movieDirectors);
            Context.MoviePeople.AddRange(movieWriters);
            Context.MovieGenres.AddRange(movieGenres);
            Context.MovieCountries.AddRange(movieCountries);
            Context.Images.AddRange(screenshots);
            Context.Movies.Add(movie);

            await Context.SaveChangesAsync();

            return(Ok());
        }