コード例 #1
0
        public async Task <CourseSearchQueue> AddAsync(CourseSearchQueue model)
        {
            Context.CourseSearchQueues.Add(model);
            await Context.SaveChangesAsync();

            return(model);
        }
コード例 #2
0
        public IActionResult AddNewSearch([FromBody] CourseSearchQueue newSearchQueue)
        {
            var userClaims = User.Claims.AsQueryable();
            var userEmail  = userClaims.First(x => x.Type.Contains("emailaddress")).Value;

            newSearchQueue.Status           = SearchStatus.New;
            newSearchQueue.SubmittedByEmail = userEmail ?? "";
            courseSearchQueueBll.Add(newSearchQueue);

            return(Ok());
        }
コード例 #3
0
 public async Task <CourseSearchQueue> UpdateAsync(CourseSearchQueue model)
 {
     try
     {
         Context.CourseSearchQueues.AddOrUpdate(model);
         await Context.SaveChangesAsync();
     }
     catch (Exception ex)
     {
         Console.Write(ex.ToString());
     }
     return(model);
 }
コード例 #4
0
 public CourseSearchQueue Update(CourseSearchQueue model)
 {
     try
     {
         Context.CourseSearchQueues.AddOrUpdate(model);
         Context.SaveChanges();
     }
     catch (DbEntityValidationException ex)
     {
         DisplayDbEntityErrors(ex);
     }
     return(model);
 }
コード例 #5
0
        private static async Task SearchForUnusedCourses(CourseSearchQueue nextSearch)
        {
            var startSearchTime       = DateTime.Now;
            var courseSearchQueueBll  = provider.GetService <ICourseSearchQueueBLL>();
            var sendEmailBll          = provider.GetService <ISendEmailBLL>();
            var numUnusedCoursesFound = 0;
            var errors = new List <string>();
            var enrollmentTermNames = new List <string>();

            try
            {
                var termIds         = nextSearch.TermList.Split(",").Select(x => long.Parse(x));
                var unusedCourseBll = provider.GetService <IUnusedCourseBLL>();

                client.BaseAddress = new Uri(appSettings.CanvasRedshiftApiUrl);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                // Get a list of enrollment terms for matching name to id
                var enrollmentTerms =
                    JsonConvert.DeserializeObject <List <EnrollmentTermDTO> >(
                        await client.GetStringAsync("EnrollmentTerm"));

                enrollmentTermNames = enrollmentTerms.Where(x => nextSearch.TermList.Contains(x.Id)).Select(x => x.Name).ToList();

                // New list to place the unused courses
                var foundUnusedCourses = new List <UnusedCourse>();

                // Iterate selected term ids and add unused courses within that term to list
                foreach (var termId in termIds)
                {
                    var unUsedCourses = JsonConvert.DeserializeObject <List <UnusedCourseDTO> >(
                        await client.GetStringAsync($"Courses/GetUnusedCourses?termId={termId}"));

                    foundUnusedCourses.AddRange(unUsedCourses.Select(x => new UnusedCourse()
                    {
                        CourseId            = x.Id.ToString(),
                        CourseCanvasId      = x.CanvasId.ToString(),
                        CourseName          = x.Name,
                        CourseSISID         = x.SisCourseId,
                        CourseCode          = x.Code,
                        TermId              = termId.ToString(),
                        Term                = enrollmentTerms.First(y => y.Id == termId.ToString()).Name,
                        CourseSearchQueueId = nextSearch.Id,
                        AccountId           = x.AccountId
                    }));
                }

                numUnusedCoursesFound = foundUnusedCourses.Count;

                // Separate the existing courses from the new courses
                var existingCourses = unusedCourseBll.GetAll()
                                      .Where(x => foundUnusedCourses.Any(y => y.CourseId == x.CourseId)).ToList();

                foreach (var course in existingCourses)
                {
                    course.CourseSearchQueueId = nextSearch.Id;
                    course.Status = CourseStatus.Active;
                }

                foundUnusedCourses.RemoveAll(x => existingCourses.Any(y => y.CourseId == x.CourseId));

                unusedCourseBll.AddRange(foundUnusedCourses);
                unusedCourseBll.UpdateRange(existingCourses);

                nextSearch.Status = SearchStatus.Completed;
                courseSearchQueueBll.Update(nextSearch);
            }
            catch (Exception ex)
            {
                nextSearch.Status        = SearchStatus.Failed;
                nextSearch.StatusMessage = ex.ToString();
                errors.Add(nextSearch.StatusMessage);
                courseSearchQueueBll.Update(nextSearch);
            }

            var endSearchTime = DateTime.Now;


            sendEmailBll.SendUnusedCourseSearchCompletedEmailAsync(startSearchTime, endSearchTime, numUnusedCoursesFound, string.Join(", ", enrollmentTermNames), errors, nextSearch.SubmittedByEmail).GetAwaiter().GetResult();
        }
コード例 #6
0
 public async Task <CourseSearchQueue> UpdateAsync(CourseSearchQueue model)
 {
     model.LastUpdated = DateTime.Now;
     return(await courseSearchQueueRepository.UpdateAsync(model));
 }
コード例 #7
0
 public CourseSearchQueue Update(CourseSearchQueue model)
 {
     model.LastUpdated = DateTime.Now;
     return(courseSearchQueueRepository.Update(model));
 }
コード例 #8
0
 public async Task <CourseSearchQueue> AddAsync(CourseSearchQueue model)
 {
     model.DateCreated = DateTime.Now;
     return(await courseSearchQueueRepository.AddAsync(model));
 }
コード例 #9
0
 public CourseSearchQueue Add(CourseSearchQueue model)
 {
     model.DateCreated = DateTime.Now;
     return(courseSearchQueueRepository.Add(model));
 }
コード例 #10
0
 public CourseSearchQueue Remove(CourseSearchQueue model)
 {
     throw new NotImplementedException();
 }
コード例 #11
0
 public CourseSearchQueue Update(CourseSearchQueue model)
 {
     Context.CourseSearchQueue.Update(model);
     Context.SaveChanges();
     return(model);
 }
コード例 #12
0
 public CourseSearchQueue Add(CourseSearchQueue model)
 {
     Context.CourseSearchQueue.Add(model);
     Context.SaveChanges();
     return(model);
 }