コード例 #1
0
        public async Task CourseEmailReminder(StudentsCourse studentsCourse)
        {
            if (DateTime.Compare(DateTime.UtcNow, studentsCourse.StartDate.AddDays(-dayToStart)) <= 0)
            {
                var jobId = BackgroundJob.Schedule <EmailSender>(service => service.SendEmailAsync(studentsCourse.Student.Email, emailTheme,
                                                                                                   GenerateEmailMessage(studentsCourse, dayToStart).Result.ToString()), studentsCourse.StartDate.AddDays(-1).Date + new TimeSpan(8, 0, 0));

                AddStudentCourseJob(studentsCourse, jobId);
            }

            if (DateTime.Compare(DateTime.UtcNow, studentsCourse.StartDate.AddDays(-weekToStart)) <= 0)
            {
                var jobId = BackgroundJob.Schedule <EmailSender>(service => service.SendEmailAsync(studentsCourse.Student.Email, emailTheme,
                                                                                                   GenerateEmailMessage(studentsCourse, weekToStart).Result.ToString()), studentsCourse.StartDate.AddDays(-7));

                AddStudentCourseJob(studentsCourse, jobId);
            }

            if (DateTime.Compare(DateTime.UtcNow, studentsCourse.StartDate.AddDays(-monthToStart)) <= 0)
            {
                var jobId = BackgroundJob.Schedule <EmailSender>(service => service.SendEmailAsync(studentsCourse.Student.Email, emailTheme,
                                                                                                   GenerateEmailMessage(studentsCourse, monthToStart).Result.ToString()), studentsCourse.StartDate.AddDays(-30));

                AddStudentCourseJob(studentsCourse, jobId);
            }

            await _context.SaveChangesAsync();
        }
コード例 #2
0
 public void AddStudentCourseJob(StudentsCourse studentsCourse, string jobId)
 {
     _context.StudentCourseJobs.Add(new StudentCourseJob
     {
         StudentId = studentsCourse.StudentId,
         CourseId  = studentsCourse.CourseId,
         JobId     = jobId,
     });
 }
コード例 #3
0
        public async Task <string> GenerateEmailMessage(StudentsCourse studentsCourse, int dayToStart)
        {
            var viewModel = new EmailViewModel
            {
                StudentsCourse = studentsCourse,
                DayToStart     = dayToStart
            };

            var result = await _viewRenderService.RenderToStringAsync("EmailPrototype", viewModel);

            return(result);
        }
コード例 #4
0
        public async Task <ActionResult <StudentsCourse> > PostStudentsCourse(StudentsCourse studentsCourse)
        {
            _context.StudentsCourses.Add(studentsCourse);
            await _context.SaveChangesAsync();

            var thisCourse = await _context.StudentsCourses
                             .Where(x => x.CourseId == studentsCourse.CourseId)
                             .Where(x => x.StudentId == studentsCourse.StudentId)
                             .Include(x => x.Student)
                             .Include(x => x.Course)
                             .FirstOrDefaultAsync();

            await courseReminder.CourseEmailReminder(thisCourse);

            return(CreatedAtAction("GetStudentsCourse", new { id = studentsCourse.Id }, studentsCourse));
        }
コード例 #5
0
        public async Task <IActionResult> PutStudentsCourse(int id, StudentsCourse studentsCourse)
        {
            var findStudentsCourse = await _context.StudentsCourses
                                     .Where(x => x.CourseId == studentsCourse.CourseId)
                                     .Where(x => x.StudentId == studentsCourse.StudentId)
                                     .Include(x => x.Student)
                                     .Include(x => x.Course)
                                     .FirstOrDefaultAsync();

            if (findStudentsCourse == null)
            {
                await PostStudentsCourse(studentsCourse);

                return(Ok(new Response {
                    Status = "Success", Message = "Registration is successfully!"
                }));
            }

            findStudentsCourse.StartDate = studentsCourse.StartDate;

            await courseReminder.DeleteCourseEmailReminder(findStudentsCourse);

            await courseReminder.CourseEmailReminder(findStudentsCourse);

            _context.Entry(findStudentsCourse).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!StudentsCourseExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(Ok(new Response {
                Status = "Success", Message = "Date updated successfully!"
            }));
        }
コード例 #6
0
        public async Task DeleteCourseEmailReminder(StudentsCourse studentCourseJob)
        {
            var findJobList = await _context.StudentCourseJobs
                              .Where(x => x.StudentId == studentCourseJob.StudentId)
                              .Where(x => x.CourseId == studentCourseJob.CourseId)
                              .ToListAsync();

            if (findJobList.Count > 0)
            {
                foreach (var findJob in findJobList)
                {
                    _context.StudentCourseJobs.Remove(findJob);
                    BackgroundJob.Delete(findJob.JobId);
                }
            }
            await _context.SaveChangesAsync();
        }