private LinkRepresentation CreatePromptLink() { var opts = new List <OptionalProperty>(); if (propertyContext.Property.IsAutoCompleteEnabled) { var arguments = new OptionalProperty(JsonPropertyNames.Arguments, MapRepresentation.Create(new OptionalProperty(JsonPropertyNames.XRoSearchTerm, MapRepresentation.Create(new OptionalProperty(JsonPropertyNames.Value, null, typeof(object)))))); var extensions = new OptionalProperty(JsonPropertyNames.Extensions, MapRepresentation.Create(new OptionalProperty(JsonPropertyNames.MinLength, propertyContext.Property.AutoCompleteMinLength))); opts.Add(arguments); opts.Add(extensions); } else { Tuple <string, ITypeFacade>[] parms = propertyContext.Property.GetChoicesParameters(); OptionalProperty[] args = parms.Select(pnt => RestUtils.CreateArgumentProperty(OidStrategy, req, pnt, Flags)).ToArray(); var arguments = new OptionalProperty(JsonPropertyNames.Arguments, MapRepresentation.Create(args)); opts.Add(arguments); } return(LinkRepresentation.Create(OidStrategy, new PromptRelType(new UriMtHelper(OidStrategy, req, propertyContext)), Flags, opts.ToArray())); }
protected LinkRepresentation CreatePersistPromptLink() { var opts = new List <OptionalProperty>(); var ids = PropertyContext.Target.Specification.Properties.Where(p => !p.IsCollection && !p.IsInline).ToDictionary(p => p.Id, p => GetPropertyValue(OidStrategy, Req, p, PropertyContext.Target, Flags, true, UseDateOverDateTime())).ToArray(); var props = ids.Select(kvp => new OptionalProperty(kvp.Key, MapRepresentation.Create(new OptionalProperty(JsonPropertyNames.Value, kvp.Value)))).ToArray(); var objectMembers = new OptionalProperty(JsonPropertyNames.PromptMembers, MapRepresentation.Create(props)); if (PropertyContext.Property.IsAutoCompleteEnabled) { var searchTerm = new OptionalProperty(JsonPropertyNames.XRoSearchTerm, MapRepresentation.Create(new OptionalProperty(JsonPropertyNames.Value, null, typeof(object)))); var arguments = new OptionalProperty(JsonPropertyNames.Arguments, MapRepresentation.Create(objectMembers, searchTerm)); var extensions = new OptionalProperty(JsonPropertyNames.Extensions, MapRepresentation.Create(new OptionalProperty(JsonPropertyNames.MinLength, PropertyContext.Property.AutoCompleteMinLength))); opts.Add(arguments); opts.Add(extensions); } else { var parms = PropertyContext.Property.GetChoicesParameters(); var conditionalArguments = parms.Select(pnt => RestUtils.CreateArgumentProperty(OidStrategy, Req, pnt, Flags)); var args = new List <OptionalProperty> { objectMembers }; args.AddRange(conditionalArguments); var arguments = new OptionalProperty(JsonPropertyNames.Arguments, MapRepresentation.Create(args.ToArray())); opts.Add(arguments); } return(LinkRepresentation.Create(OidStrategy, new PromptRelType(GetHelper()) { Method = RelMethod.Put }, Flags, opts.ToArray())); }