Example #1
0
        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();
        }
Example #2
0
        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}"));
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }