Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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));
            }
        }