public AnnouncementAssignedAttribute UploadAttachment(AnnouncementTypeEnum announcementType, int announcementId, int assignedAttributeId, byte[] bin, string name) { Trace.Assert(Context.PersonId.HasValue && Context.SchoolLocalId.HasValue); var ann = ServiceLocator.GetAnnouncementService(announcementType).GetAnnouncementById(announcementId); using (var uow = Update()) { var da = new AnnouncementAssignedAttributeDataAccess(uow); var assignedAttribute = da.GetById(assignedAttributeId); if (!CanAttach(ann)) { throw new ChalkableSecurityException(); } if (assignedAttribute.AttachmentRef > 0) { throw new ChalkableSisException("You can't attach more than one file to an attribute"); } var isStiAttribute = assignedAttribute.IsStiAttribute || announcementType == AnnouncementTypeEnum.Class; var attachment = AttachmentService.Upload(name, bin, isStiAttribute, uow, ServiceLocator, ConnectorLocator); assignedAttribute.AttachmentRef = attachment.Id; assignedAttribute.Attachment = attachment; da.Update(assignedAttribute); if (assignedAttribute.IsStiAttribute) { var stiAttribute = ConnectorLocator.ActivityAssignedAttributeConnector.GetAttribute( assignedAttribute.SisActivityId.Value, assignedAttribute.SisActivityAssignedAttributeId.Value); MapperFactory.GetMapper <ActivityAssignedAttribute, AnnouncementAssignedAttribute>().Map(stiAttribute, assignedAttribute); ConnectorLocator.ActivityAssignedAttributeConnector.Update(stiAttribute.ActivityId, stiAttribute.Id, stiAttribute); } uow.Commit(); return(assignedAttribute); } }
public AnnouncementAttachment UploadAttachment(int announcementId, AnnouncementTypeEnum type, byte[] content, string name) { var annDetails = ServiceLocator.GetAnnouncementService(type).GetAnnouncementDetails(announcementId); Trace.Assert(Context.PersonId.HasValue); Trace.Assert(Context.SchoolLocalId.HasValue); if (!CanAttach(annDetails)) { throw new ChalkableSecurityException(); } using (var uow = Update()) { var att = AttachmentService.Upload(name, content, false, uow, ServiceLocator, ConnectorLocator); var annAtt = new AnnouncementAttachment { AnnouncementRef = annDetails.Id, AttachedDate = Context.NowSchoolTime, Order = ServiceLocator.GetAnnouncementService(type).GetNewAnnouncementItemOrder(annDetails), AttachmentRef = att.Id, }; var da = new AnnouncementAttachmentDataAccess(uow); var attId = da.InsertWithEntityId(annAtt); uow.Commit(); bool notifyUsers = !annDetails.IsOwner || (annDetails.ClassAnnouncementData != null && annDetails.ClassAnnouncementData.VisibleForStudent) || (annDetails.LessonPlanData != null && annDetails.LessonPlanData.VisibleForStudent) || annDetails.AdminAnnouncementData != null; if (notifyUsers) { NotifyUsers(annDetails, type); } return(da.GetById(attId, Context.PersonId.Value, Context.RoleId, true)); } }