// ToDo: public static OM2MAccessControlPolicy ToResource(this OM2MAccessControlPolicyEntity entity, OM2MResultContent resultContent) { var resource = new OM2MAccessControlPolicy(); CopyAttributesResource(entity, resource); if (resultContent.HasAttributes()) { } return(resource); }
public override OM2MResponsePrimitive DoUpdate(OM2MRequestPrimitive request) { using (var db = CreateDbContext()) { var query = db.Resources.OfType <OM2MAccessControlPolicyEntity>() .Where(x => x.ResourceId == request.TargetId) .Include(x => x.Privileges) .Include(x => x.SelfPrivileges); if (query.Count() == 0) { throw new OM2MNotFoundException("Resource not found."); } var entity = query.First(); CheckSelfACP(entity, request.From, OM2MOperation.Update); if (request.Content == null) { throw new OM2MBadRequestException("A content is required for creation."); } var resource = request.Content as OM2MAccessControlPolicy; if (resource == null) { throw new OM2MBadRequestException("Incorrect resource representation in content."); } var modifiedAttributes = new OM2MAccessControlPolicy(); if (resource.ExpirationTime != null) { entity.ExpirationTime = resource.ExpirationTime; modifiedAttributes.ExpirationTime = resource.ExpirationTime; } if (resource.Labels != null) { entity.Labels.Clear(); entity.Labels.AddRange(resource.Labels); modifiedAttributes.Labels = resource.Labels; } if (resource.AnnounceTo != null) { entity.AnnounceTo.Clear(); entity.AnnounceTo.AddRange(resource.AnnounceTo); modifiedAttributes.AnnounceTo = resource.AnnounceTo; } if (resource.AnnouncedAttribute != null) { entity.AnnouncedAttribute.Clear(); entity.AnnouncedAttribute.AddRange(resource.AnnouncedAttribute); modifiedAttributes.AnnouncedAttribute = resource.AnnouncedAttribute; } if (resource.Privileges != null) { entity.Privileges.Clear(); foreach (var rule in resource.Privileges.AccessControlRule) { entity.Privileges.Add(rule.ToEntity()); } modifiedAttributes.Privileges = resource.Privileges; } if (resource.SelfPrivileges != null) { entity.SelfPrivileges.Clear(); foreach (var rule in resource.SelfPrivileges.AccessControlRule) { entity.SelfPrivileges.Add(rule.ToEntity()); } modifiedAttributes.SelfPrivileges = resource.SelfPrivileges; } entity.LastModifiedTime = OM2MTimeStamp.NowTimeStamp; modifiedAttributes.LastModifiedTime = entity.LastModifiedTime; db.SaveChanges(); var subs = db.Resources.OfType <OM2MSubscriptionEntity>().Where(x => x.ParentId == entity.ResourceId).ToList(); CseService.Notify(subs, entity, OM2MResourceStatus.Updated); var response = new OM2MResponsePrimitive(CseConfig, request); response.Content = modifiedAttributes; response.ResponseStatusCode = OM2MResponseStatusCode.Updated; return(response); } }