public async Task <ActionResult> UpdateAllCoursesConfirmed() { IEnumerable <CourseCatalog> allCourseCatalog; using (var dctx = new EF.MindSageDataModelsContainer()) { allCourseCatalog = dctx.CourseCatalogs .Include("Semesters.Units.Lessons.Advertisements") .Include("Semesters.Units.Lessons.TopicOfTheDays") .Include("Semesters.Units.Lessons.TeacherLessonItems") .Include("Semesters.Units.Lessons.StudentLessonItems") .Include("Semesters.Units.Lessons.PreAssessments.Assessments.Choices") .Include("Semesters.Units.Lessons.PostAssessments.Assessments.Choices") .ToList(); } var canUpdateCourses = allCourseCatalog != null && allCourseCatalog.Any(); if (!canUpdateCourses) { return(RedirectToAction("Index")); } // TODO: Handle update to MongoDB error await updateLessonCatalog(allCourseCatalog); await updateCourseCatalog(allCourseCatalog); await createPublicClassRooms(allCourseCatalog); return(RedirectToAction("Index")); }
private string generateTeacherCode(License license) { var teacherKey = string.Empty; while (true) { var courseCatalog = license.CourseCatalog; var contract = license.Contract; var random = Guid.NewGuid().ToString().Replace("-", string.Empty).Substring(0, 4); var rgx = new System.Text.RegularExpressions.Regex("[^a-zA-Z0-9]"); var safeSchoolName = rgx.Replace(contract.SchoolName, string.Empty); const int MaxSchoolNameLength = 10; var canUseSchoolMaxLength = safeSchoolName.Length >= MaxSchoolNameLength; const int BeginSchoolNameIndex = 0; var schoolName = safeSchoolName.Substring(BeginSchoolNameIndex, canUseSchoolMaxLength ? MaxSchoolNameLength : safeSchoolName.Length); teacherKey = string.Format("{0:00}{1}{2}{3}{4}", courseCatalog.Grade, contract.State, contract.ZipCode, random, schoolName); var canUseTheNewKey = false; using (var dctx = new EF.MindSageDataModelsContainer()) { canUseTheNewKey = !dctx.TeacherKeys .Where(it => !it.RecLog.DeletedDate.HasValue && it.Code == teacherKey) .Any(); } if (canUseTheNewKey) { break; } } return(teacherKey); }
public async Task <OwnCarousel> GetAds(int id) { Lesson lessonCatalog; using (var dctx = new EF.MindSageDataModelsContainer()) { lessonCatalog = await dctx.Lessons .Include("Advertisements") .FirstOrDefaultAsync(it => it.Id == id); } if (lessonCatalog == null) { return(null); } var adsUrls = (lessonCatalog.Advertisements ?? Enumerable.Empty <Advertisement>()) .Where(it => !it.RecLog.DeletedDate.HasValue) .Select(it => it.ImageUrl); var result = new OwnCarousel { owl = adsUrls.Select(it => new OwnCarousel.OwnItem { item = $"<div class='item'><img src='{ it }' /></div>" }) }; return(result); }
public async Task <OwnCarousel> GetAds(int id) { EF.CourseCatalog courseCatalog; using (var dctx = new EF.MindSageDataModelsContainer()) { courseCatalog = await dctx.CourseCatalogs .Include("Semesters.Units.Lessons.Advertisements") .Include("Semesters.Units.Lessons.TopicOfTheDays") .FirstOrDefaultAsync(it => it.Id == id); } if (courseCatalog == null) { return(null); } var adsUrls = courseCatalog?.Advertisements?.Split(new string[] { "#;" }, StringSplitOptions.RemoveEmptyEntries) ?? Enumerable.Empty <string>(); var result = new OwnCarousel { owl = adsUrls.Select(it => new OwnCarousel.OwnItem { item = $"<div class='item'><img src='{ it }' /></div>" }) }; return(result); }
public async Task<LessonContentRespond> GetLesson(int id) { EF.CourseCatalog courseCatalog; Lesson lessonCatalog; using (var dctx = new EF.MindSageDataModelsContainer()) { lessonCatalog = await dctx.Lessons .Include("Unit.Semester") .Include("TeacherLessonItems") .Include("TeacherLessonItems") .Include("StudentLessonItems") .Include("PreAssessments.Assessments.Choices") .Include("PostAssessments.Assessments.Choices") .FirstOrDefaultAsync(it => it.Id == id); if (lessonCatalog == null) return null; courseCatalog = await dctx.CourseCatalogs .Include("Semesters.Units") .FirstOrDefaultAsync(it => it.Id == lessonCatalog.Unit.Semester.CourseCatalogId); if (courseCatalog == null) return null; } var semesters = courseCatalog.Semesters.Where(it => !it.RecLog.DeletedDate.HasValue).OrderBy(it => it.RecLog.CreatedDate); var semesterRunner = 65; foreach (var item in semesters) { if (item.Id == lessonCatalog.Unit.SemesterId) break; semesterRunner++; } var units = semesters.SelectMany(it => it.Units).Where(it => !it.RecLog.DeletedDate.HasValue).OrderBy(it => it.RecLog.CreatedDate); var unitRunner = 1; foreach (var item in units) { if (item.Id == lessonCatalog.UnitId) break; unitRunner++; } var teacherItemQry = createLessonItems(lessonCatalog.TeacherLessonItems); var studentItemQry = createLessonItems(lessonCatalog.StudentLessonItems); var preAssessmentQry = createAssessmentItems(lessonCatalog.PreAssessments); var postAssessmentQry = createAssessmentItems(lessonCatalog.PostAssessments); var result = new LessonContentRespond { //ExtraContents = extraContents, CreatedDate = lessonCatalog.RecLog.CreatedDate, IsPreviewable = lessonCatalog.IsPreviewable, SemesterName = string.Format("{0}", (char)semesterRunner), Title = lessonCatalog.Title, Order = unitRunner, TeacherItems = teacherItemQry, StudentItems = studentItemQry, PreAssessments = preAssessmentQry, PostAssessments = postAssessmentQry, }; return result; }
// GET: ImportContent public ActionResult Index() { EF.ImportContentConfiguration importContent; using (var dctx = new EF.MindSageDataModelsContainer()) { importContent = dctx.ImportContentConfigurations.Where(it => !it.RecLog.DeletedDate.HasValue).ToList().OrderBy(it => it.RecLog.CreatedDate).LastOrDefault(); } var isImportSettingAvailable = importContent != null; var result = new ImportContentViewModel { Id = isImportSettingAvailable ? importContent.Id : -1, BaseURL = isImportSettingAvailable ? importContent.BaseURL : string.Empty, HomePageURL = isImportSettingAvailable ? importContent.HomePageURL : string.Empty, PagesURLs = isImportSettingAvailable ? JsonConvert.DeserializeObject<IEnumerable<string>>(importContent.PagesURLs) : Enumerable.Empty<string>(), ReferenceFileURLs = isImportSettingAvailable ? JsonConvert.DeserializeObject<IEnumerable<string>>(importContent.ReferenceFileURLs) : Enumerable.Empty<string>(), ReplaceSections = isImportSettingAvailable ? JsonConvert.DeserializeObject<List<ReplaceSectionInformation>>(importContent.ReplaceSections) : new List<ReplaceSectionInformation>(), StorageInfo = isImportSettingAvailable ? JsonConvert.DeserializeObject<StorageInformation>(importContent.StorageInfo) : new StorageInformation(), }; return View(result); }
// GET: ImportContent public ActionResult Index() { EF.ImportContentConfiguration importContent; using (var dctx = new EF.MindSageDataModelsContainer()) { importContent = dctx.ImportContentConfigurations.Where(it => !it.RecLog.DeletedDate.HasValue).ToList().OrderBy(it => it.RecLog.CreatedDate).LastOrDefault(); } var isImportSettingAvailable = importContent != null; var result = new ImportContentViewModel { Id = isImportSettingAvailable ? importContent.Id : -1, BaseURL = isImportSettingAvailable ? importContent.BaseURL : string.Empty, HomePageURL = isImportSettingAvailable ? importContent.HomePageURL : string.Empty, PagesURLs = isImportSettingAvailable ? JsonConvert.DeserializeObject <IEnumerable <string> >(importContent.PagesURLs) : Enumerable.Empty <string>(), ReferenceFileURLs = isImportSettingAvailable ? JsonConvert.DeserializeObject <IEnumerable <string> >(importContent.ReferenceFileURLs) : Enumerable.Empty <string>(), ReplaceSections = isImportSettingAvailable ? JsonConvert.DeserializeObject <List <ReplaceSectionInformation> >(importContent.ReplaceSections) : new List <ReplaceSectionInformation>(), StorageInfo = isImportSettingAvailable ? JsonConvert.DeserializeObject <StorageInformation>(importContent.StorageInfo) : new StorageInformation(), }; return(View(result)); }
private ImportContentConfiguration updateDatabase(ImportContentViewModel model) { using (var dctx = new EF.MindSageDataModelsContainer()) { var selectedObj = dctx.ImportContentConfigurations.FirstOrDefault(it => it.Id == model.Id); if (selectedObj == null) { selectedObj = new EF.ImportContentConfiguration { BaseURL = model.BaseURL, HomePageURL = model.HomePageURL, PagesURLs = JsonConvert.SerializeObject(model.PagesURLs), ReferenceFileURLs = JsonConvert.SerializeObject(model.ReferenceFileURLs), ReplaceSections = JsonConvert.SerializeObject(model.ReplaceSections), StorageInfo = JsonConvert.SerializeObject(model.StorageInfo), RecLog = new EF.RecordLog { CreatedDate = DateTime.Now } }; dctx.ImportContentConfigurations.Add(selectedObj); } else { selectedObj.BaseURL = model.BaseURL; selectedObj.HomePageURL = model.HomePageURL; selectedObj.PagesURLs = JsonConvert.SerializeObject(model.PagesURLs); selectedObj.ReferenceFileURLs = JsonConvert.SerializeObject(model.ReferenceFileURLs); selectedObj.ReplaceSections = JsonConvert.SerializeObject(model.ReplaceSections); selectedObj.StorageInfo = JsonConvert.SerializeObject(model.StorageInfo); selectedObj.RecLog = new EF.RecordLog { CreatedDate = DateTime.Now }; } dctx.SaveChanges(); return(selectedObj); } }
public async Task<GetCourseDetailRespond> GetDetail(int id) { EF.CourseCatalog courseCatalog; var relatedCourseList = Enumerable.Empty<EF.CourseCatalog>(); using (var dctx = new EF.MindSageDataModelsContainer()) { courseCatalog = await dctx.CourseCatalogs .Include("Semesters.Units.Lessons.Advertisements") .Include("Semesters.Units.Lessons.TopicOfTheDays") .Include("Semesters.Units.Lessons.TeacherLessonItems") .Include("Semesters.Units.Lessons.StudentLessonItems") .Include("Semesters.Units.Lessons.PreAssessments.Assessments.Choices") .Include("Semesters.Units.Lessons.PostAssessments.Assessments.Choices") .FirstOrDefaultAsync(it => it.Id == id); if (courseCatalog != null) { relatedCourseList = dctx.CourseCatalogs .Where(it => it.GroupName == courseCatalog.GroupName) .Where(it => it.Id != courseCatalog.Id) .Where(it => !it.RecLog.DeletedDate.HasValue) .ToList(); } } if (courseCatalog == null) return null; var semesterQry = courseCatalog.Semesters.Where(it => !it.RecLog.DeletedDate.HasValue); var unitQry = semesterQry.SelectMany(it => it.Units).Where(it => !it.RecLog.DeletedDate.HasValue); var lessonQry = unitQry.SelectMany(it => it.Lessons).Where(it => !it.RecLog.DeletedDate.HasValue); var lessonIdRunner = 1; var unitIdRunner = 1; var semesterNameRunner = (byte)65; var semesters = semesterQry.Select(semester => new GetCourseDetailRespond.Semester { Title = semester.Title, Description = semester.Description, Name = string.Format("{0}", (char)semesterNameRunner++), TotalWeeks = semester.TotalWeeks, Units = unitQry.Where(unit => unit.SemesterId == semester.Id).Select(unit => new GetCourseDetailRespond.Unit { Title = unit.Title, Description = unit.Description, UnitNo = unitIdRunner++, Lessons = lessonQry.Where(it => it.UnitId == unit.Id).Select(lesson => { var studentContentQry = lesson.StudentLessonItems .Where(it => !it.RecLog.DeletedDate.HasValue) .Select(it => new GetCourseDetailRespond.LessonContent { ContentUrl = it.ContentURL, ImageUrl = it.IconURL, Description = it.Description, IsPreviewable = it.IsPreviewable, }); return new GetCourseDetailRespond.Lesson { id = lesson.Id.ToString(), Order = lessonIdRunner++, Contents = studentContentQry }; }), TotalWeeks = unit.TotalWeeks }), }); var relatedCourses = (relatedCourseList ?? Enumerable.Empty<EF.CourseCatalog>()) .Select(it => new GetCourseDetailRespond.RelatedCourse { CourseId = it.Id.ToString(), Name = it.SideName }); var result = new GetCourseDetailRespond { id = courseCatalog.Id.ToString(), CreatedDate = courseCatalog.RecLog.CreatedDate, DescriptionImageUrl = courseCatalog.DescriptionImageUrl, FullDescription = courseCatalog.FullDescription, Grade = courseCatalog.Grade.ToString(), GroupName = courseCatalog.GroupName, PriceUSD = courseCatalog.PriceUSD, Semesters = semesters, Series = courseCatalog.Series, SideName = courseCatalog.SideName, Title = courseCatalog.Title, RelatedCourses = relatedCourses, TotalWeeks = courseCatalog.TotalWeeks }; return result; }
public async Task<OwnCarousel> GetAds(int id) { EF.CourseCatalog courseCatalog; using (var dctx = new EF.MindSageDataModelsContainer()) { courseCatalog = await dctx.CourseCatalogs .Include("Semesters.Units.Lessons.Advertisements") .Include("Semesters.Units.Lessons.TopicOfTheDays") .FirstOrDefaultAsync(it => it.Id == id); } if (courseCatalog == null) return null; var adsUrls = courseCatalog?.Advertisements?.Split(new string[] { "#;" }, StringSplitOptions.RemoveEmptyEntries) ?? Enumerable.Empty<string>(); var result = new OwnCarousel { owl = adsUrls.Select(it => new OwnCarousel.OwnItem { item = $"<div class='item'><img src='{ it }' /></div>" }) }; return result; }
private string generateTeacherCode(License license) { var teacherKey = string.Empty; while (true) { var courseCatalog = license.CourseCatalog; var contract = license.Contract; var random = Guid.NewGuid().ToString().Replace("-", string.Empty).Substring(0, 4); var rgx = new System.Text.RegularExpressions.Regex("[^a-zA-Z0-9]"); var safeSchoolName = rgx.Replace(contract.SchoolName, string.Empty); const int MaxSchoolNameLength = 10; var canUseSchoolMaxLength = safeSchoolName.Length >= MaxSchoolNameLength; const int BeginSchoolNameIndex = 0; var schoolName = safeSchoolName.Substring(BeginSchoolNameIndex, canUseSchoolMaxLength ? MaxSchoolNameLength : safeSchoolName.Length); teacherKey = string.Format("{0:00}{1}{2}{3}{4}", courseCatalog.Grade, contract.State, contract.ZipCode, random, schoolName); var canUseTheNewKey = false; using (var dctx = new EF.MindSageDataModelsContainer()) { canUseTheNewKey = !dctx.TeacherKeys .Where(it => !it.RecLog.DeletedDate.HasValue && it.Code == teacherKey) .Any(); } if (canUseTheNewKey) break; } return teacherKey; }
public async Task <LessonContentRespond> GetLesson(int id) { EF.CourseCatalog courseCatalog; Lesson lessonCatalog; using (var dctx = new EF.MindSageDataModelsContainer()) { lessonCatalog = await dctx.Lessons .Include("Unit.Semester") .Include("TeacherLessonItems") .Include("TeacherLessonItems") .Include("StudentLessonItems") .Include("PreAssessments.Assessments.Choices") .Include("PostAssessments.Assessments.Choices") .FirstOrDefaultAsync(it => it.Id == id); if (lessonCatalog == null) { return(null); } courseCatalog = await dctx.CourseCatalogs .Include("Semesters.Units") .FirstOrDefaultAsync(it => it.Id == lessonCatalog.Unit.Semester.CourseCatalogId); if (courseCatalog == null) { return(null); } } var semesters = courseCatalog.Semesters.Where(it => !it.RecLog.DeletedDate.HasValue).OrderBy(it => it.RecLog.CreatedDate); var semesterRunner = 65; foreach (var item in semesters) { if (item.Id == lessonCatalog.Unit.SemesterId) { break; } semesterRunner++; } var units = semesters.SelectMany(it => it.Units).Where(it => !it.RecLog.DeletedDate.HasValue).OrderBy(it => it.RecLog.CreatedDate); var unitRunner = 1; foreach (var item in units) { if (item.Id == lessonCatalog.UnitId) { break; } unitRunner++; } var teacherItemQry = createLessonItems(lessonCatalog.TeacherLessonItems); var studentItemQry = createLessonItems(lessonCatalog.StudentLessonItems); var preAssessmentQry = createAssessmentItems(lessonCatalog.PreAssessments); var postAssessmentQry = createAssessmentItems(lessonCatalog.PostAssessments); var result = new LessonContentRespond { //ExtraContents = extraContents, CreatedDate = lessonCatalog.RecLog.CreatedDate, IsPreviewable = lessonCatalog.IsPreviewable, SemesterName = string.Format("{0}", (char)semesterRunner), Title = lessonCatalog.Title, Order = unitRunner, TeacherItems = teacherItemQry, StudentItems = studentItemQry, PreAssessments = preAssessmentQry, PostAssessments = postAssessmentQry, }; return(result); }
public async Task<ActionResult> UpdateAllCoursesConfirmed() { IEnumerable<CourseCatalog> allCourseCatalog; using (var dctx = new EF.MindSageDataModelsContainer()) { allCourseCatalog = dctx.CourseCatalogs .Include("Semesters.Units.Lessons.Advertisements") .Include("Semesters.Units.Lessons.TopicOfTheDays") .Include("Semesters.Units.Lessons.TeacherLessonItems") .Include("Semesters.Units.Lessons.StudentLessonItems") .Include("Semesters.Units.Lessons.PreAssessments.Assessments.Choices") .Include("Semesters.Units.Lessons.PostAssessments.Assessments.Choices") .ToList(); } var canUpdateCourses = allCourseCatalog != null && allCourseCatalog.Any(); if (!canUpdateCourses) return RedirectToAction("Index"); // TODO: Handle update to MongoDB error await updateLessonCatalog(allCourseCatalog); await updateCourseCatalog(allCourseCatalog); await createPublicClassRooms(allCourseCatalog); return RedirectToAction("Index"); }
private ImportContentConfiguration updateDatabase(ImportContentViewModel model) { using (var dctx = new EF.MindSageDataModelsContainer()) { var selectedObj = dctx.ImportContentConfigurations.FirstOrDefault(it => it.Id == model.Id); if (selectedObj == null) { selectedObj = new EF.ImportContentConfiguration { BaseURL = model.BaseURL, HomePageURL = model.HomePageURL, PagesURLs = JsonConvert.SerializeObject(model.PagesURLs), ReferenceFileURLs = JsonConvert.SerializeObject(model.ReferenceFileURLs), ReplaceSections = JsonConvert.SerializeObject(model.ReplaceSections), StorageInfo = JsonConvert.SerializeObject(model.StorageInfo), RecLog = new EF.RecordLog { CreatedDate = DateTime.Now } }; dctx.ImportContentConfigurations.Add(selectedObj); } else { selectedObj.BaseURL = model.BaseURL; selectedObj.HomePageURL = model.HomePageURL; selectedObj.PagesURLs = JsonConvert.SerializeObject(model.PagesURLs); selectedObj.ReferenceFileURLs = JsonConvert.SerializeObject(model.ReferenceFileURLs); selectedObj.ReplaceSections = JsonConvert.SerializeObject(model.ReplaceSections); selectedObj.StorageInfo = JsonConvert.SerializeObject(model.StorageInfo); selectedObj.RecLog = new EF.RecordLog { CreatedDate = DateTime.Now }; } dctx.SaveChanges(); return selectedObj; } }
public async Task<OwnCarousel> GetAds(int id) { Lesson lessonCatalog; using (var dctx = new EF.MindSageDataModelsContainer()) { lessonCatalog = await dctx.Lessons .Include("Advertisements") .FirstOrDefaultAsync(it => it.Id == id); } if (lessonCatalog == null) return null; var adsUrls = (lessonCatalog.Advertisements ?? Enumerable.Empty<Advertisement>()) .Where(it => !it.RecLog.DeletedDate.HasValue) .Select(it => it.ImageUrl); var result = new OwnCarousel { owl = adsUrls.Select(it => new OwnCarousel.OwnItem { item = $"<div class='item'><img src='{ it }' /></div>" }) }; return result; }
public async Task <GetCourseDetailRespond> GetDetail(int id) { EF.CourseCatalog courseCatalog; var relatedCourseList = Enumerable.Empty <EF.CourseCatalog>(); using (var dctx = new EF.MindSageDataModelsContainer()) { courseCatalog = await dctx.CourseCatalogs .Include("Semesters.Units.Lessons.Advertisements") .Include("Semesters.Units.Lessons.TopicOfTheDays") .Include("Semesters.Units.Lessons.TeacherLessonItems") .Include("Semesters.Units.Lessons.StudentLessonItems") .Include("Semesters.Units.Lessons.PreAssessments.Assessments.Choices") .Include("Semesters.Units.Lessons.PostAssessments.Assessments.Choices") .FirstOrDefaultAsync(it => it.Id == id); if (courseCatalog != null) { relatedCourseList = dctx.CourseCatalogs .Where(it => it.GroupName == courseCatalog.GroupName) .Where(it => it.Id != courseCatalog.Id) .Where(it => !it.RecLog.DeletedDate.HasValue) .ToList(); } } if (courseCatalog == null) { return(null); } var semesterQry = courseCatalog.Semesters.Where(it => !it.RecLog.DeletedDate.HasValue); var unitQry = semesterQry.SelectMany(it => it.Units).Where(it => !it.RecLog.DeletedDate.HasValue); var lessonQry = unitQry.SelectMany(it => it.Lessons).Where(it => !it.RecLog.DeletedDate.HasValue); var lessonIdRunner = 1; var unitIdRunner = 1; var semesterNameRunner = (byte)65; var semesters = semesterQry.Select(semester => new GetCourseDetailRespond.Semester { Title = semester.Title, Description = semester.Description, Name = string.Format("{0}", (char)semesterNameRunner++), TotalWeeks = semester.TotalWeeks, Units = unitQry.Where(unit => unit.SemesterId == semester.Id).Select(unit => new GetCourseDetailRespond.Unit { Title = unit.Title, Description = unit.Description, UnitNo = unitIdRunner++, Lessons = lessonQry.Where(it => it.UnitId == unit.Id).Select(lesson => { var studentContentQry = lesson.StudentLessonItems .Where(it => !it.RecLog.DeletedDate.HasValue) .Select(it => new GetCourseDetailRespond.LessonContent { ContentUrl = it.ContentURL, ImageUrl = it.IconURL, Description = it.Description, IsPreviewable = it.IsPreviewable, }); return(new GetCourseDetailRespond.Lesson { id = lesson.Id.ToString(), Order = lessonIdRunner++, Contents = studentContentQry }); }), TotalWeeks = unit.TotalWeeks }), }); var relatedCourses = (relatedCourseList ?? Enumerable.Empty <EF.CourseCatalog>()) .Select(it => new GetCourseDetailRespond.RelatedCourse { CourseId = it.Id.ToString(), Name = it.SideName }); var result = new GetCourseDetailRespond { id = courseCatalog.Id.ToString(), CreatedDate = courseCatalog.RecLog.CreatedDate, DescriptionImageUrl = courseCatalog.DescriptionImageUrl, FullDescription = courseCatalog.FullDescription, Grade = courseCatalog.Grade.ToString(), GroupName = courseCatalog.GroupName, PriceUSD = courseCatalog.PriceUSD, Semesters = semesters, Series = courseCatalog.Series, SideName = courseCatalog.SideName, Title = courseCatalog.Title, RelatedCourses = relatedCourses, TotalWeeks = courseCatalog.TotalWeeks }; return(result); }