public async Task <Movie> CreateMovieAsync(string title, string trailer, string poster, string slider, string description, DateTime releaseDate, string userId) { BusinessValidator.IsTitleInValidRange(title); BusinessValidator.IsTrailerInValidRange(trailer); BusinessValidator.IsDateInRange(releaseDate); var user = await this.context .Users .FindAsync(userId); var movie = await this.context .Movies .FirstOrDefaultAsync(t => t.Title == title); movie = new Movie() { Title = title, Trailer = trailer, Poster = poster, SliderImage = slider, Description = description, ReleaseDate = releaseDate }; movie.User = user; this.context.Movies.Add(movie); await this.context.SaveChangesAsync(); return(movie); }
public async Task <Movie> UpdateMovieAsync(Movie movie, string trailer, string description, string poster, string sliderImage) { if (trailer != null) { BusinessValidator.IsInProperRange(trailer); } movie.Trailer = trailer; if (description != null) { BusinessValidator.IsInProperRange(description); } movie.Description = description; if (poster != null) { movie.Poster = poster; } if (sliderImage != null) { movie.SliderImage = sliderImage; } await this.context.SaveChangesAsync(); return(movie); }
public async Task <Review> EditReviewAsync(Review review, string userId, double rating, string description) { BusinessValidator.IsInProperRange(description); BusinessValidator.IsRatingInRange(rating); if (review.IsDeleted) { throw new ArgumentException(ServicesConstants.ReviewNotPresent); } var user = this.context.Users.Find(userId); if (review.UserId != user.Id) { throw new ArgumentException(string.Format(ServicesConstants.ReviewNotFromUser, user.UserName)); } review.Description = description; var movie = review.Movie; if (rating > 0) { movie.TotalRating -= review.Rating; review.Rating = rating; movie.TotalRating += rating; movie.AverageRating = (double)movie.TotalRating / movie.NumberOfVotes; } await this.context.SaveChangesAsync(); return(review); }
public async Task <Actor> UpdateActorAsync(Actor actor, string picture, string biography) { BusinessValidator.IsInProperRange(biography); actor.Biography = biography; if (picture != null) { actor.Picture = picture; } await this.context.SaveChangesAsync(); return(actor); }
public async Task <Genre> CreateGenreAsync(string genreName) { BusinessValidator.IsGenreInValidRange(genreName); var genre = new Genre() { Name = genreName }; this.context.Genres.Add(genre); await this.context.SaveChangesAsync(); return(genre); }
public void ValidationTest() { var business = new Business { Id = Guid.NewGuid(), Status = 0, LastChange = DateTime.Now, No = "A1111", Name = "" }; var bv = new BusinessValidator(); var result = bv.Validate(business); Assert.False(result.IsValid); Assert.Equal("商户名称只能输入中文、数字、字符。", result.Errors.First().ErrorMessage); Assert.Equal(1, result.Errors.Count); }
public async Task <Actor> CreateActorAsync(string firstName, string lastName, string picture, string biography) { BusinessValidator.IsNameInValidRange(firstName); BusinessValidator.IsNameInValidRange(lastName); BusinessValidator.IsInProperRange(biography); var actor = new Actor() { FirstName = firstName, LastName = lastName, Picture = picture, Biography = biography }; await this.context.Actors.AddAsync(actor); await this.context.SaveChangesAsync(); return(actor); }
public async Task <Review> AddReviewToMovieAsync(int movieId, string userId, string description, double rating) { BusinessValidator.IsInProperRange(description); BusinessValidator.IsRatingInRange(rating); var review = await this.context.Reviews.Where(x => x.UserId == userId && x.MovieId == movieId) .Include(x => x.Movie) .Include(x => x.User) .FirstOrDefaultAsync(); var movie = await this.context.Movies.FindAsync(movieId); var user = await this.context.Users.FindAsync(userId); if (review == null) { review = new Review() { Description = description, Rating = rating }; } else if (!review.IsDeleted) { throw new ArgumentException(string.Format(ServicesConstants.UserAlreadyVoted, user.UserName, movie.Title)); } else if (review.IsDeleted) { review.Description = description; movie.TotalRating -= review.Rating; review.Rating = rating; movie.NumberOfVotes--; } review.Movie = movie; review.MovieId = movie.Id; review.UserId = user.Id; review.CreatedOn = DateTime.Now; if (review.IsDeleted) { review.IsDeleted = false; } else { context.Reviews.Add(review); } if (rating > 0) { movie.NumberOfVotes++; movie.TotalRating += rating; if (movie.NumberOfVotes != 0) { movie.AverageRating = (double)movie.TotalRating / movie.NumberOfVotes; } } context.SaveChanges(); return(review); }