コード例 #1
0
        public AutoGrade SetAutoGrade(int announcementApplicationId, int?recepientId, string value)
        {
            var annApp    = ServiceLocator.ApplicationSchoolService.GetAnnouncementApplication(announcementApplicationId);
            var autoGrade = AutoGradeStorage.GetAutoGrade(announcementApplicationId, recepientId);

            if (autoGrade == null)
            {
                autoGrade = new AutoGrade
                {
                    AnnouncementApplicationRef = announcementApplicationId,
                    StudentRef = recepientId ?? Context.PersonId ?? 0,
                    AnnouncementApplication = annApp,
                    Date  = Context.NowSchoolYearTime,
                    Grade = value,
                };
                AutoGradeStorage.Add(autoGrade);
            }
            else
            {
                autoGrade.Grade = value;
                autoGrade.Date  = Context.NowSchoolYearTime;
                AutoGradeStorage.SetAutoGrade(autoGrade);
            }
            return(autoGrade);
        }
コード例 #2
0
 protected AutoGradeViewData(AutoGrade autoGrade)
 {
     AnnouncementApplicationId = autoGrade.AnnouncementApplicationRef;
     StudentId = autoGrade.StudentRef;
     Date      = autoGrade.Date;
     Grade     = autoGrade.Grade;
     Posted    = autoGrade.Posted;
 }
コード例 #3
0
        public AutoGrade SetAutoGrade(int announcementApplicationId, int?studentId, string value)
        {
            var recepientId = studentId ?? Context.PersonId ?? 0;
            var annApp      = ServiceLocator.ApplicationSchoolService.GetAnnouncementApplication(announcementApplicationId);
            var app         = ServiceLocator.ServiceLocatorMaster.ApplicationService.GetApplicationByUrl(Context.OAuthApplication);

            if (annApp.ApplicationRef != app.Id)
            {
                throw new ChalkableSecurityException("There is no AnnouncementApplication with such Id and ApplicationId");
            }

            if (!annApp.Active)
            {
                throw new ChalkableSecurityException("This application is not attached to an item");
            }

            var announcement = ServiceLocator.ClassAnnouncementService.GetClassAnnouncemenById(annApp.AnnouncementRef); // security here

            if (recepientId != Context.PersonId && !announcement.IsOwner)
            {
                throw new ChalkableSecurityException("Only owner can post auto grade for student");
            }

            using (var uow = Update())
            {
                var da = new AutoGradeDataAccess(uow);
                Action <AutoGrade> modifyAction = da.Update;
                var autoGrade = da.GetAutoGrade(announcementApplicationId, recepientId);
                if (autoGrade == null)
                {
                    autoGrade = new AutoGrade
                    {
                        AnnouncementApplicationRef = announcementApplicationId,
                        StudentRef = recepientId,
                    };
                    modifyAction = da.Insert;
                }
                autoGrade.Date   = Context.NowSchoolTime;
                autoGrade.Grade  = value;
                autoGrade.Posted = false;
                autoGrade.AnnouncementApplication = annApp;
                modifyAction(autoGrade);
                uow.Commit();
                return(autoGrade);
            }
        }