public async Task AddResultToUsersCourses(UsersResultsViewModel model, GoUser user) { var userCouse = this.coursesUsersRepository.All() .FirstOrDefault(x => x.CourseId == model.CourseId && x.ParticipantId == model.ParticipantId); var course = this.coursesRepository.All().FirstOrDefault(x => x.Id == model.CourseId); if (userCouse == null) { throw new ArgumentException(UserCourseNotExistException); } if (course.CreatorId != user.Id) { throw new ArgumentException(YouCanNotAddResultsException); } userCouse.StatusUser = model.Result; if (course.StartDate.AddDays(course.DurationOfDays) > DateTime.Now) { throw new ArgumentException(CourseIsNotFinished); } await this.coursesUsersRepository.SaveChangesAsync(); }
public async Task <IActionResult> CreateResult(UsersResultsViewModel model) { if (!ModelState.IsValid) { return(this.View()); } var user = await userManager.GetUserAsync(HttpContext.User); await this.coursesService.AddResultToUsersCourses(model, user); return(Redirect($"/Courses/AddResults/{model.CourseId}")); }
public async Task AddResultToUsersCourses_ShouldThrow_IfCourseNotExist() { var coursesUsersRepoBuilder = new CoursesUsersRepositoryBuilder(); var courseUserRepo = coursesUsersRepoBuilder .WithAll() .Build(); var coursesRepoBuilder = new CoursesRepositoryBuilder(); var courseRepo = coursesRepoBuilder .WithAll() .Build(); var sut = new CoursesService(courseUserRepo, courseRepo, null, Mapper); var user = new GoUser { Id = "7" }; var courseUser = new UsersResultsViewModel { CourseId = "7", Course = new CourseViewModel { Id = "7", Image = new byte[0], Title = "Drun", Description = "Drunnnnnnnnnnnnnnnnnn", MaxCountParticipants = 4, StartDate = DateTime.Now.AddDays(3), DurationOfDays = 3, CreatorId = "7", Creator = new GoUserViewModel { Id = "7" }, Status = Status.Practically, Category = Category.Climbing }, ParticipantId = "8", Result = StatusParticitant.Successfully }; var ex = await Assert.ThrowsAsync <ArgumentException>(async() => await sut.AddResultToUsersCourses(courseUser, user)); ex.Message.ShouldBe("This userCourse not exist!"); coursesUsersRepoBuilder.CoursesUsersRepoMock.Verify(); coursesRepoBuilder.CoursesRepoMock.Verify(); coursesUsersRepoBuilder.CoursesUsersRepoMock.Verify(d => d.SaveChangesAsync(), Times.Never); }
public async Task AddResultToUsersCourses_ShouldAddResultCorrect_IfCourseExist() { var coursesUsersRepoBuilder = new CoursesUsersRepositoryBuilder(); var courseUserRepo = coursesUsersRepoBuilder .WithAll() .Build(); var coursesRepoBuilder = new CoursesRepositoryBuilder(); var courseRepo = coursesRepoBuilder .WithAll() .Build(); var sut = new CoursesService(courseUserRepo, courseRepo, null, Mapper); var user = new GoUser { Id = "7" }; var courseUser = new UsersResultsViewModel { CourseId = "4", Course = new CourseViewModel { Id = "4", Image = new byte[0], Title = "Drun", Description = "Drunnnnnnnnnnnnnnnnnn", MaxCountParticipants = 4, StartDate = DateTime.Now.AddDays(-3), DurationOfDays = 3, CreatorId = "7", Creator = new GoUserViewModel { Id = "7" }, Status = Status.Practically, Category = Category.Climbing }, ParticipantId = "7", Result = StatusParticitant.Successfully }; await sut.AddResultToUsersCourses(courseUser, user); coursesUsersRepoBuilder.CoursesUsersRepoMock.Verify(r => r.AddAsync(It.IsAny <CoursesUsers>()), Times.Exactly(0)); coursesUsersRepoBuilder.CoursesUsersRepoMock.Verify(r => r.SaveChangesAsync(), Times.Once); }