public ActionResult SaveAnnouncement(ClassAnnouncementInfo classAnnouncementInfo, int?classId, IList <AssignedAttributeInputModel> attributes) { Trace.Assert(Context.PersonId.HasValue); SchoolLocator.AnnouncementAssignedAttributeService.Edit(AnnouncementTypeEnum.Class, classAnnouncementInfo.AnnouncementId, attributes); var ann = SchoolLocator.ClassAnnouncementService.Edit(classAnnouncementInfo); return(Json(PrepareAnnouncmentViewDataForEdit(ann))); }
public ActionResult SubmitAnnouncement(ClassAnnouncementInfo classAnnouncementInfo, IList <AssignedAttributeInputModel> attributes) { SchoolLocator.AnnouncementAssignedAttributeService.Edit(AnnouncementTypeEnum.Class, classAnnouncementInfo.AnnouncementId, attributes); var annDetails = SchoolLocator.ClassAnnouncementService.Edit(classAnnouncementInfo); SchoolLocator.ClassAnnouncementService.Submit(annDetails.Id); SchoolLocator.ClassAnnouncementService.DeleteAnnouncements(classAnnouncementInfo.ClassId, annDetails.ClassAnnouncementData.ClassAnnouncementTypeRef, AnnouncementState.Draft); var includeDiscussion = annDetails.DiscussionEnabled; ApplicationLogic.NotifyApplications(MasterLocator, annDetails.AnnouncementApplications, (int)AnnouncementTypeEnum.Class, ChalkableAuthentication.GetSessionKey(), NotifyAppType.Attach); TrackNewItemCreate(annDetails, (s, appsCount, doscCount) => s.CreatedNewItem(Context.Login, annDetails.ClassAnnouncementData.ClassAnnouncementTypeName, annDetails.ClassAnnouncementData.ClassName, appsCount, doscCount, includeDiscussion)); return(Json(true, 5)); }
public ActionResult CreateClassAnnouncement(int?classAnnouncementTypeId, int classId, DateTime?expiresDate) { //TODO : need to refactor all announcemnt cerate , edit logic later)) Trace.Assert(Context.PersonId.HasValue); var draft = SchoolLocator.ClassAnnouncementService.GetLastDraft(); var classAnnType = classAnnouncementTypeId.HasValue ? SchoolLocator.ClassAnnouncementTypeService.GetClassAnnouncementTypeById(classAnnouncementTypeId.Value) : null; if (classAnnType?.ClassRef != classId) { classAnnType = null; } if (classAnnType == null && draft?.ClassAnnouncementTypeRef != null && draft.ClassRef == classId) { classAnnType = SchoolLocator.ClassAnnouncementTypeService.GetClassAnnouncementTypeById(draft.ClassAnnouncementTypeRef.Value); } if (classAnnType == null) { var classAnnTypes = SchoolLocator.ClassAnnouncementTypeService.GetClassAnnouncementTypes(classId); if (classAnnTypes.Count == 0) { throw new NoClassAnnouncementTypeException("Item can't be created. Current Class doesn't have classAnnouncementTypes"); } classAnnType = classAnnTypes.First(); } if (draft != null && draft.ClassAnnouncementTypeRef != classAnnType.Id) { draft.ClassAnnouncementTypeRef = classAnnType.Id; var classAnnInfo = ClassAnnouncementInfo.Create(draft); classAnnInfo.ClassId = classId; SchoolLocator.ClassAnnouncementService.Edit(classAnnInfo); } var annExpiredDate = GenerateDefaultExpiresDate(expiresDate); var annDetails = SchoolLocator.ClassAnnouncementService.Create(classAnnType, classId, annExpiredDate); var classAnn = annDetails.ClassAnnouncementData; // annExporedDate was assigned to have a correct announcements orderings, lets clear it if not user-provided if (!expiresDate.HasValue && classAnn.Expires == annExpiredDate) { classAnn.Expires = DateTime.MinValue; } Debug.Assert(Context.PersonId.HasValue); return(Json(PrepareCreateAnnouncementViewData(annDetails))); }
public AnnouncementDetails Edit(ClassAnnouncementInfo announcement) { if (!Context.PersonId.HasValue) { throw new UnassignedUserException(); } using (var uow = Update()) { var da = CreateClassAnnouncementDataAccess(uow); var ann = da.GetAnnouncement(announcement.AnnouncementId, Context.PersonId.Value); AnnouncementSecurity.EnsureInModifyAccess(ann, Context); ann = UpdateTeacherAnnouncement(ann, announcement, announcement.ClassId, uow, da); var res = MergeEditAnnResultWithStiData(da, ann); uow.Commit(); return(res); } }
private ClassAnnouncement UpdateTeacherAnnouncement(ClassAnnouncement ann, ClassAnnouncementInfo inputAnnData, int classId , UnitOfWork uow, ClassAnnouncementDataAccess annDa) { ann.Content = inputAnnData.Content; ann.Title = inputAnnData.Title; if (inputAnnData.ExpiresDate.HasValue) { ann.Expires = inputAnnData.ExpiresDate.Value.Date; } if (inputAnnData.ClassAnnouncementTypeId.HasValue) { var classAnnType = ServiceLocator.ClassAnnouncementTypeService.GetClassAnnouncementTypeById(inputAnnData.ClassAnnouncementTypeId.Value); if (classAnnType.ClassRef != inputAnnData.ClassId) { throw new ChalkableException("Invalid Class Announcement type id"); } ann.ClassAnnouncementTypeRef = inputAnnData.ClassAnnouncementTypeId.Value; ann.MaxScore = inputAnnData.MaxScore; ann.IsScored = ann.MaxScore.HasValue && (ann.MaxScore > 0 || inputAnnData.Gradable); if (ann.MaxScore == 0 && !inputAnnData.Gradable) { var classRoomOption = ServiceLocator.ClassroomOptionService.GetClassOption(classId); if (classRoomOption == null || !classRoomOption.IsAveragingMethodPoints) { ann.IsScored = false; } } ann.WeightAddition = inputAnnData.WeightAddition; ann.WeightMultiplier = inputAnnData.WeightMultiplier; ann.MayBeDropped = inputAnnData.CanDropStudentScore; ann.VisibleForStudent = !inputAnnData.HideFromStudents; if (inputAnnData.PreviewCommentsEnabled && inputAnnData.DiscussionEnabled && !ann.PreviewCommentsEnabled) { if (ann.IsSubmitted) { new AnnouncementCommentDataAccess(uow).HideAll(ann.Id); } } ann.DiscussionEnabled = inputAnnData.DiscussionEnabled; ann.PreviewCommentsEnabled = inputAnnData.PreviewCommentsEnabled; ann.RequireCommentsEnabled = inputAnnData.RequireCommentsEnabled; if (ann.ClassRef != classId) { if (!ann.IsDraft) { throw new ChalkableException("Class can't be changed for submmited standard announcement"); } ann.ClassRef = classId; //clear old data befor swiching new AnnouncementApplicationDataAccess(uow).DeleteByAnnouncementId(ann.Id); new AnnouncementStandardDataAccess(uow).DeleteNotAssignedToClass(ann.Id, classId); } } annDa.Update(ann); return(ann); }