public static AnnouncementShortGradeViewData Create(AnnouncementComplex announcementComplex, IList <ClaimInfo> claims, int?studentGrade = null)
        {
            var annData = announcementComplex.ClassAnnouncementData;

            return(new AnnouncementShortGradeViewData(annData, claims)
            {
                GradedStudentCount = announcementComplex.GradingStudentsCount,
                Grade = studentGrade
            });
        }
예제 #2
0
 protected string GetCategoryName(AnnouncementComplex announcement)
 {
     if (announcement.ClassAnnouncementData != null)
     {
         return(announcement.ClassAnnouncementData.ClassAnnouncementTypeName);
     }
     if (announcement.LessonPlanData != null)
     {
         return(announcement.LessonPlanData.CategoryName);
     }
     return(announcement.SupplementalAnnouncementData?.ClassAnnouncementTypeName);
 }
예제 #3
0
        private static IList <Pair <Person, int> > PrepareOrderedStudents(AnnouncementComplex announcement)
        {
            var resipients = announcement.SupplementalAnnouncementData?.Recipients;

            if (resipients == null)
            {
                return(new List <Pair <Person, int> >());
            }
            int order = 0;

            return(resipients.Select(recipient => new Pair <Person, int>(recipient, order++)).ToList());
        }
예제 #4
0
        public static StudentClassExplorerInfo Create(Class classInfo, decimal?avg, IList <StandardScore> standardScores
                                                      , IList <Standard> standards, AnnouncementComplex importantAnnouncement)
        {
            var res = new StudentClassExplorerInfo
            {
                ClassInfo = classInfo,
                MostImportantAnnouncement = importantAnnouncement,
                Avg       = avg,
                Standards = OrderGradingStandards(GradingStandardInfo.Create(standardScores, standards))
            };

            return(res);
        }
예제 #5
0
        protected string GetTypeName(AnnouncementComplex announcement)
        {
            switch (announcement.Type)
            {
            case AnnouncementTypeEnum.Class: return("Assignment");

            case AnnouncementTypeEnum.LessonPlan: return("Lesson Plan");

            case AnnouncementTypeEnum.Supplemental: return("Supplemental");

            case AnnouncementTypeEnum.Admin: return("Admin Announcement");
            }
            return(null);
        }
        private bool CanAttach(AnnouncementComplex ann)
        {
            //TODO: rewrite this method later
            int?classId = null;

            if (ann.ClassAnnouncementData != null)
            {
                classId = ann.ClassAnnouncementData.ClassRef;
            }
            if (ann.LessonPlanData != null)
            {
                classId = ann.LessonPlanData.ClassRef;
            }
            return(AnnouncementSecurity.CanModifyAnnouncement(ann, Context) ||
                   (classId.HasValue && ((DemoClassService)ServiceLocator.ClassService).ClassPersonExists(classId.Value, Context.PersonId)));
        }
예제 #7
0
        protected AnnouncementViewData(AnnouncementComplex announcement, IList <ClaimInfo> claims) : this(announcement.AnnouncementData, claims)
        {
            AttachmentsCount      = announcement.AttachmentsCount;
            AttachmentNames       = announcement.AttachmentNames;
            OwnerAttachmentsCount = announcement.OwnerAttachmentsCount;
            Complete = announcement.Complete;

            var content = announcement.Content ?? "";

            ShortContent = StringTools.BuildShortText(content, SHORT_LENGHT);

            var studentsCounts = announcement.StudentsCount;

            StudentsCountWithAttachments    = announcement.StudentsCountWithAttachments;
            StudentsCountWithoutAttachments = studentsCounts - StudentsCountWithAttachments;
            GradingStudentsCount            = announcement.GradingStudentsCount;
            ApplicationsCount = announcement.ApplicationCount;
            ShowGradingIcon   = studentsCounts > 0 && StudentsCountWithAttachments * 4 > studentsCounts || GradingStudentsCount > 0;
        }
예제 #8
0
        protected ShortFeedExportModel(Person person, string schoolName, string sy, DateTime nowSchoolTime, DateTime?fromReport, DateTime?toReport, ClassDetails c, IList <DayType> dayTypes, IList <Staff> teachers
                                       , AnnouncementComplex announcement, Standard standard, int?standardNumber = null)
            : this(person, schoolName, sy, nowSchoolTime, fromReport, toReport)
        {
            if (c != null)
            {
                ClassId     = c.Id;
                ClassName   = c.Name;
                ClassNumber = c.ClassNumber;
                if (c.PrimaryTeacherRef.HasValue)
                {
                    PersonFirstName = c.PrimaryTeacher.FirstName;
                    PersonLastName  = c.PrimaryTeacher.LastName;
                    Owners          = BuildTeachersNames(c.PrimaryTeacherRef.Value, c.ClassTeachers, teachers);
                }
                DayTypes = dayTypes.Where(x => c.ClassPeriods.Any(y => y.DayTypeRef == x.Id))
                           .Select(x => x.Name.ToString())
                           .Distinct()
                           .JoinString(",");

                Periods = c.ClassPeriods.Select(x => x.Period.Name).Distinct().JoinString(",");
            }
            AnnouncementId   = announcement.Id;
            AnnouncementName = announcement.Title;
            AnnouncementType = GetTypeName(announcement);
            CategoryName     = GetCategoryName(announcement);
            Complete         = announcement.Complete;

            HasStandards   = announcement.StandardsCount > 0;
            HasAttachments = announcement.AttachmentNames.Count + announcement.ApplicationCount > 0;

            if (announcement.ClassAnnouncementData != null)
            {
                StartDate  = null;
                EndDate    = announcement.ClassAnnouncementData.Expires;
                IsHidden   = !announcement.ClassAnnouncementData.VisibleForStudent;
                TotalPoint = (double?)announcement.ClassAnnouncementData.MaxScore;
            }
            if (announcement.LessonPlanData != null)
            {
                StartDate = announcement.LessonPlanData.StartDate;
                EndDate   = announcement.LessonPlanData.EndDate;
                IsHidden  = !announcement.LessonPlanData.VisibleForStudent;
            }
            if (announcement.SupplementalAnnouncementData != null)
            {
                StartDate = null;
                EndDate   = announcement.SupplementalAnnouncementData.Expires;
                IsHidden  = !announcement.SupplementalAnnouncementData.VisibleForStudent;
            }

            var adminAnn = announcement.AdminAnnouncementData;

            if (adminAnn != null)
            {
                //TODO: Add to model first and last admin name
                string adminFirstName = null, adminLastName = null;
                if (adminAnn.AdminName != null)
                {
                    string[] words = adminAnn.AdminName.Split(new [] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    adminFirstName = words[0];
                    if (words.Count() > 1)
                    {
                        adminLastName = words[1];
                    }
                }
                EndDate             = adminAnn.Expires;
                IsAdminAnnouncement = true;
                Owners          = NameHelper.FullName(adminFirstName ?? "", adminLastName ?? "", "", false, adminAnn.AdminGender);
                PersonFirstName = adminLastName;
                PersonLastName  = adminLastName;
                AdminId         = announcement.AdminRef;
            }

            if (standard != null)
            {
                StandardId     = standard.Id;
                StandardName   = standard.Name;
                StandardNumber = standardNumber;
            }
        }
예제 #9
0
 public Notification BuildAnnouncementReminderNotification(DateTime created, AnnouncementComplex announcement, Person recipient)
 {
     return(BuildNotificationFromTemplate(NotificationTemplateProvider.ANNOUNCEMENT_REMINDER_NOTIFICATION,
                                          NotificationType.Announcement, recipient, announcement, null, null,
                                          null, null, new { AnnouncementTitle = announcement.Title }));
 }
 private AnnouncementDetailedViewData(AnnouncementComplex announcement, IList <ClaimInfo> claims)
     : base(announcement, claims)
 {
 }
예제 #11
0
 protected abstract TAnnouncement ReadAnnouncementData(AnnouncementComplex announcement, SqlDataReader reader);
예제 #12
0
 protected AnnouncementViewData(AnnouncementComplex announcement, IList <StudentAnnouncement> studentAnnouncements, IList <ClaimInfo> claims)
     : this(announcement, claims)
 {
     PrepareGradingInfo(this, studentAnnouncements);
 }
예제 #13
0
 public Notification BuildAnnouncementAnswerToPersonNotifiaction(DateTime created, AnnouncementQnAComplex announcementQnA, AnnouncementComplex announcement)
 {
     return(BuildNotificationFromTemplate(NotificationTemplateProvider.ANNOUNCEMENT_NOTIFICATION_ANSWER_TO_PERSON,
                                          NotificationType.Announcement, announcementQnA.Asker, announcement, null, null,
                                          null, announcementQnA.Answerer, new
     {
         announcement.AnnouncementTypeName,
         AnnouncementTitle = announcement.Title,
         PersonQuestion = StringTools.BuildShortText(announcementQnA.Question, 40),
         AnswererName = announcementQnA.Answerer.DisplayName()
     }));
 }
예제 #14
0
 public Notification BuildAnnouncementQnToAuthorNotifiaction(DateTime created, AnnouncementQnAComplex announcementQnA, AnnouncementComplex announcement, Person answerer)
 {
     return(BuildNotificationFromTemplate(NotificationTemplateProvider.ANNOUNCEMENT_QUESTION_NOTIFICATION_TOAUTHOR,
                                          NotificationType.Question, answerer, announcement, null, null, null,
                                          announcementQnA.Asker, new
     {
         announcement.AnnouncementTypeName,
         PersonQuestion = StringTools.BuildShortText(announcementQnA.Question, 35),
         AnnouncementTitle = announcement.Title,
         AskerName = announcementQnA.Asker.DisplayName()
     }));
 }
예제 #15
0
        protected override ClassAnnouncement ReadAnnouncementData(AnnouncementComplex announcement, SqlDataReader reader)
        {
            var res = reader.Read <ClassAnnouncement>();

            return(res);
        }
 public static AnnouncementDetailedViewData CreateEmpty(AnnouncementComplex announcement, IList <ClaimInfo> claims)
 {
     return(new AnnouncementDetailedViewData(announcement, claims));
 }
 protected override AdminAnnouncement ReadAnnouncementData(AnnouncementComplex announcement, SqlDataReader reader)
 {
     return(reader.Read <AdminAnnouncement>());
 }
예제 #18
0
 protected override LessonPlan ReadAnnouncementData(AnnouncementComplex announcement, SqlDataReader reader)
 {
     return(reader.Read <LessonPlan>());
 }
예제 #19
0
        //TODO: implement builders

        public Notification BuildAnnouncementNewAttachmentNotification(DateTime created, AnnouncementComplex announcement, Person recipient)
        {
            return(BuildNotificationFromTemplate(NotificationTemplateProvider.ANNOUNCEMENT_NEW_ATTACHMENT_NOTIFICATION,
                                                 NotificationType.Announcement, recipient, announcement, null, null,
                                                 null, null, new {
                AnnouncementTitle = announcement.Title,
                AnnouncementType = GetAnnouncementType(announcement.Type)
            }));
        }