public async Task <CourseModel> SubscribeToCourseAsync(SubscribeToCourseModel subscribeToCourseModel) { var course = await _context.Courses.FindAsync(subscribeToCourseModel.CourseId); var user = await _context.Users.FindAsync(subscribeToCourseModel.StudentId); if (course != null && user != null) { var startingDate = DateTimeOffset.FromUnixTimeMilliseconds(subscribeToCourseModel.EnrollmentDate).UtcDateTime; var userCourseModel = new UserCourseModel { CourseId = course.Id, StudentId = user.Id, StartDate = startingDate, EndDate = startingDate.AddDays((double)course.DurationDays) }; var userCourse = _mapper.Map <UserCourse>(userCourseModel); _context.UserCourses.Add(userCourse); await _context.SaveChangesAsync(); await SendScheduledEmailBackgroundAsync(userCourseModel.StartDate, user.Email, user.Id); return(_mapper.Map <CourseModel>(course)); } return(null); }
public async Task <IActionResult> SubscribeToCourse(SubscribeToCourseModel subscribeToCourseModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var course = await _courseService.SubscribeToCourseAsync(subscribeToCourseModel); if (course != null) { return(Ok(course)); } return(BadRequest(new { title = "Couldnt subscribe to course" })); }