示例#1
0
        public async Task ApplyForTutoring(int moduleId, TutoringApplicationNewDto tutoringApplicationNew)
        {
            var currentUserId = _currentUserService.GetUserId();
            var currentUser   = await _userManager.Users
                                .Include(u => u.TutorModules)
                                .Include(u => u.TutoringApplications)
                                .FirstOrDefaultAsync(u => u.Id == currentUserId);

            if (currentUser.TutorModules.Any(tm => tm.ModuleId == moduleId))
            {
                throw new InvalidOperationException($"Could not apply for tutoring: user (id='{currentUser.Id}') is already a tutor in this module.");
            }

            var tutoringApplication = new TutoringApplication
            {
                ModuleId           = moduleId,
                StudentId          = currentUserId,
                RequestDate        = _timeService.GetCurrentTime(),
                MotivationalLetter = tutoringApplicationNew.MotivationalLetter
            };

            currentUser.TutoringApplications.Add(tutoringApplication);

            await _userManager.UpdateAsync(currentUser);
        }
示例#2
0
        public async Task When_ApplyingForTutoring_Expect_ApplicationCreated(int moduleId, string motivationalLetter)
        {
            var application = new TutoringApplicationNewDto {
                MotivationalLetter = motivationalLetter
            };
            await _tutoringApplicationsService.ApplyForTutoring(moduleId, application);

            var applicationCreated = await _context.TutoringApplications.FirstAsync(ta => ta.MotivationalLetter == motivationalLetter);

            Assert.Equal(moduleId, applicationCreated.ModuleId);
            Assert.Equal(DateTimeOffset.Now.Date, applicationCreated.RequestDate.Date);
        }
示例#3
0
        public async Task <IActionResult> ApplyForTutoring(int moduleId, [FromBody] TutoringApplicationNewDto tutoringApplicationNew)
        {
            try
            {
                await _tutoringApplicationsService.ApplyForTutoring(moduleId, tutoringApplicationNew);

                return(Ok());
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
示例#4
0
        public async Task When_ApplyingForTutoringAsTutor_Expect_Exception(int moduleId, string motivationalLetter)
        {
            _currentUserServiceMock
            .Setup(s => s.GetUserId())
            .Returns(_userManager.Users.First(u => u.Email == "*****@*****.**").Id);

            var application = new TutoringApplicationNewDto {
                MotivationalLetter = motivationalLetter
            };

            await Assert.ThrowsAsync <InvalidOperationException>(async() =>
                                                                 await _tutoringApplicationsService.ApplyForTutoring(moduleId, application)
                                                                 );
        }