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)); }
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)); }
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()); }
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()); }
public async Task <ActionResult> Post([FromBody] AddMovieDto movie) { var id = await _movieService.AddAsync(movie); return(CreatedAtAction("Get", new { Id = id })); }
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()); }