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" }));
        }