Exemple #1
0
        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 });
            });
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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();
            }
        }
Exemple #4
0
        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);
        }