private List <TempCourse> GetTempCoursesWithCache() { if (tempCoursesCache != null && new DateTime(tempCoursesCacheUpdateTime) > DateTime.Now.Subtract(tempCoursesCacheUpdateEvery)) { return(tempCoursesCache); } Interlocked.Exchange(ref tempCoursesCacheUpdateTime, DateTime.Now.Ticks); var tempCoursesRepo = new TempCoursesRepo(); tempCoursesCache = tempCoursesRepo.GetTempCoursesNoTracking(); return(tempCoursesCache); }
public AccountController() { userRolesRepo = new UserRolesRepo(db); groupsRepo = new GroupsRepo(db, courseManager); certificatesRepo = new CertificatesRepo(db); visitsRepo = new VisitsRepo(db); notificationsRepo = new NotificationsRepo(db); coursesRepo = new CoursesRepo(db); systemAccessesRepo = new SystemAccessesRepo(db); tempCoursesRepo = new TempCoursesRepo(db); slideCheckingsRepo = new SlideCheckingsRepo(db); telegramSecret = WebConfigurationManager.AppSettings["ulearn.telegram.webhook.secret"] ?? ""; }
public CourseController() { slideCheckingsRepo = new SlideCheckingsRepo(db); visitsRepo = new VisitsRepo(db); unitsRepo = new UnitsRepo(db); slideRateRepo = new SlideRateRepo(db); solutionsRepo = new UserSolutionsRepo(db, courseManager); ltiRequestsRepo = new LtiRequestsRepo(db); groupsRepo = new GroupsRepo(db, courseManager); userQuizzesRepo = new UserQuizzesRepo(db); coursesRepo = new CoursesRepo(db); tempCoursesRepo = new TempCoursesRepo(db); userRolesRepo = new UserRolesRepo(db); }
private void TryCheckTempCoursesAndReloadIfNecessary(string courseIdToUpdate = null) { try { if (new DateTime(tempCoursesUpdateTime) > DateTime.Now.Subtract(tempCourseUpdateEvery)) { return; } if (courseIdToUpdate != null && IsTempCourseUpdatedRecent(courseIdToUpdate)) { return; } if (courseIdToUpdate == null) { Interlocked.Exchange(ref tempCoursesUpdateTime, DateTime.Now.Ticks); } var tempCoursesRepo = new TempCoursesRepo(); var tempCourses = tempCoursesRepo.GetTempCourses(); foreach (var tempCourse in tempCourses) { var courseId = tempCourse.CourseId; Course course = null; try { course = base.GetCourse(courseId); // Не используется FindCourse, иначе бесконечная рекурсия } catch (Exception ex) { log.Error(ex); } if (course == null || course.GetSlides(true).Count == 0 || courseId == courseIdToUpdate && tempCourse.LastUpdateTime < tempCourse.LoadingTime) { TryReloadCourse(courseId); tempCoursesRepo.UpdateTempCourseLastUpdateTimeAsync(courseId).Wait(); courseVersionFetchTime[courseId] = DateTime.Now; } else if (tempCourse.LastUpdateTime > tempCourse.LoadingTime) { courseVersionFetchTime[courseId] = DateTime.Now; } } } catch (Exception ex) { log.Error(ex); } }
private void TryCheckTempCoursesAndReloadIfNecessary() { try { if (new DateTime(allTempCoursesUpdateTime) > DateTime.Now.Subtract(allTempCoursesUpdateEvery)) { return; } Interlocked.Exchange(ref allTempCoursesUpdateTime, DateTime.Now.Ticks); var tempCourses = GetTempCoursesWithCache(); foreach (var tempCourse in tempCourses) { var courseId = tempCourse.CourseId; if (CourseIsBroken(courseId)) { continue; } Course course = null; try { course = base.GetCourse(courseId); // Не используется FindCourse, иначе бесконечная рекурсия } catch (Exception ex) { log.Error(ex); } if (course == null || course.GetSlides(true).Count == 0) { TryReloadCourse(courseId); var tempCoursesRepo = new TempCoursesRepo(); tempCoursesRepo.UpdateTempCourseLastUpdateTime(courseId); courseVersionFetchTime[courseId] = DateTime.Now; } else if (tempCourse.LastUpdateTime > tempCourse.LoadingTime) { courseVersionFetchTime[courseId] = DateTime.Now; } } } catch (Exception ex) { log.Error(ex); } }
private void TryReloadTempCourseIfNecessary([NotNull] string courseId) { try { if (CourseIsBroken(courseId)) { return; } if (IsTempCourseUpdatedRecent(courseId)) { return; } var tempCourses = GetTempCoursesWithCache(); var tempCourse = tempCourses.FirstOrDefault(tc => string.Equals(tc.CourseId, courseId, StringComparison.OrdinalIgnoreCase)); if (tempCourse == null) { return; } Course course = null; try { course = base.GetCourse(courseId); // Не используется FindCourse, иначе бесконечная рекурсия } catch (Exception ex) { log.Error(ex); } if (course == null || tempCourse.LastUpdateTime < tempCourse.LoadingTime) { TryReloadCourse(courseId); var tempCoursesRepo = new TempCoursesRepo(); tempCoursesRepo.UpdateTempCourseLastUpdateTime(courseId); courseVersionFetchTime[courseId] = DateTime.Now; } else if (tempCourse.LastUpdateTime > tempCourse.LoadingTime) { courseVersionFetchTime[courseId] = DateTime.Now; } } catch (Exception ex) { log.Error(ex); } }