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); }
protected AutoGradeViewData(AutoGrade autoGrade) { AnnouncementApplicationId = autoGrade.AnnouncementApplicationRef; StudentId = autoGrade.StudentRef; Date = autoGrade.Date; Grade = autoGrade.Grade; Posted = autoGrade.Posted; }
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); } }