public void ReplaceLessonPlanInGallery(int oldLessonPlanId, int newLessonPlanId) { BaseSecurity.EnsureStudyCenterEnabled(Context); // only study center customers can use lesson plan gallery var newLessonPlan = GetLessonPlanById(newLessonPlanId); DoUpdate(u => { var da = CreateLessonPlanDataAccess(u); var oldLessonPlan = da.GetLessonPlanTemplate(oldLessonPlanId, Context.PersonId.Value); if (!oldLessonPlan.LpGalleryCategoryRef.HasValue) { throw new ChalkableException($@"'{oldLessonPlan.Title}' was deleted from Gallery."); } if (!BaseSecurity.IsDistrictAdmin(Context) && oldLessonPlan.GalleryOwnerRef != Context.PersonId) { throw new ChalkableException("Current user has no access to replace lesson plan in gallery!"); } newLessonPlan.LpGalleryCategoryRef = oldLessonPlan.LpGalleryCategoryRef; oldLessonPlan.LpGalleryCategoryRef = null; CreateLessonPlanDataAccess(u).Update(new[] { oldLessonPlan, newLessonPlan }); }); }
public PaginatedList <LessonPlan> GetLessonPlansTemplates(int?lpGalleryCategoryId, string title, int?classId, AttachmentSortTypeEnum sortType, int start, int count, AnnouncementState?state = AnnouncementState.Created) { Trace.Assert(Context.PersonId.HasValue); BaseSecurity.EnsureStudyCenterEnabled(Context); var lessonPlans = DoRead(u => CreateLessonPlanDataAccess(u).GetLessonPlanTemplates(lpGalleryCategoryId, title, classId, state, Context.PersonId.Value)); switch (sortType) { case AttachmentSortTypeEnum.NewestUploaded: lessonPlans = lessonPlans.OrderByDescending(x => x.Created).ToList(); break; case AttachmentSortTypeEnum.RecentlySent: lessonPlans = lessonPlans.OrderByDescending(x => x.Created).ToList(); break; case AttachmentSortTypeEnum.OldestUploaded: lessonPlans = lessonPlans.OrderBy(x => x.Created).ToList(); break; } var totalCount = lessonPlans.Count; var res = lessonPlans.Skip(start).Take(count).ToList(); return(new PaginatedList <LessonPlan>(res, start / count, count, totalCount)); }
public void RemoveFromGallery(int lessonPlanId) { BaseSecurity.EnsureStudyCenterEnabled(Context); // only study center custumers can use lesson plan gallery Trace.Assert(Context.PersonId.HasValue); using (var uow = Update()) { var da = CreateLessonPlanDataAccess(uow); var lessonPlan = da.GetAnnouncement(lessonPlanId, Context.PersonId.Value); if (!BaseSecurity.IsDistrictAdmin(Context) && lessonPlan.GalleryOwnerRef != Context.PersonId) { throw new ChalkableException("Current user has no access to remove lesson plan from gallery!"); } da.Delete(lessonPlanId); uow.Commit(); } }
public AnnouncementDetails CreateFromTemplate(int lessonPlanTemplateId, int classId) { Trace.Assert(Context.PersonId.HasValue); BaseSecurity.EnsureStudyCenterEnabled(Context); BaseSecurity.EnsureAdminOrTeacher(Context); AnnouncementDetails res; var annApps = ServiceLocator.ApplicationSchoolService.GetAnnouncementApplicationsByAnnId(lessonPlanTemplateId, true); var appIds = annApps.Select(aa => aa.ApplicationRef).ToList(); //get only simple apps var apps = ServiceLocator.ServiceLocatorMaster.ApplicationService.GetApplicationsByIds(appIds).Where(a => !a.IsAdvanced).ToList(); annApps = annApps.Where(aa => apps.Any(a => a.Id == aa.ApplicationRef)).ToList(); using (var u = Update()) { var da = CreateLessonPlanDataAccess(u); var lp = da.GetLessonPlanTemplate(lessonPlanTemplateId, Context.PersonId.Value); if (lp.IsDraft) { throw new ChalkableException("Current lesson plan in gallery is not submitted yet. You can't create lesson plan from not submitted template"); } res = da.CreateFromTemplate(lessonPlanTemplateId, Context.PersonId.Value, classId); var teachers = new ClassTeacherDataAccess(u).GetClassTeachers(lp.ClassRef, null).Select(x => x.PersonRef).ToList(); res.AnnouncementAttachments = AnnouncementAttachmentService.CopyAnnouncementAttachments(lessonPlanTemplateId, teachers, new List <int> { res.Id }, u, ServiceLocator, ConnectorLocator); res.AnnouncementAttributes = AnnouncementAssignedAttributeService.CopyNonStiAttributes(lessonPlanTemplateId, new List <int> { res.Id }, u, ServiceLocator, ConnectorLocator); res.AnnouncementApplications = ApplicationSchoolService.CopyAnnApplications(annApps, new List <int> { res.Id }, u); u.Commit(); } return(res); }