/// <summary> /// Instantiates the ResourceObjects in the Data property /// </summary> /// <param name="data"></param> private void SetupResources(T data, Uri queryString = null) { // Fill data array with resource objects Data = new List <JsonApiResourceObject>() { JsonApiResourceBuilder.Build(data, true) }; }
public void JsonApiResourceObject_AutoAddAttributesAndRelations() { var data = new ModelWithReferences { Id = Guid.NewGuid().ToString(), SingleReference = new ModelWithNoReferences { Id = Guid.NewGuid().ToString() } }; var resourceObject = JsonApiResourceBuilder.Build(data, true); var json = JsonConvert.SerializeObject(resourceObject, Formatting.Indented); var deserialized = JsonConvert.DeserializeObject <JsonApiResourceObject>(json); var result = deserialized.ToObject <ModelWithReferences>(); Assert.IsTrue(result.Id == data.Id); Assert.IsTrue(result.SingleReference.Id == data.SingleReference.Id); }
/// <summary> /// Populates the Included Property with ResourceObjects /// </summary> /// <param name="dataSet">The data conatining the properties</param> /// <param name="includedProperties">Defines which properties are to be included</param> private void SetupIncludes(IEnumerable <T> dataSet, IEnumerable <PropertyInfo> includedProperties, Uri queryString = null) { // ignore if no data is present if (!includedProperties.Any()) { return; } if (Included == null) { Included = new JsonApiResourceObjectDictionary(); } // process each item in data foreach (var data in dataSet) { // iterate over all of the items' properties and look for the requested properties var propertiesArray = data.GetType().GetProperties(); foreach (var propertyInfo in propertiesArray) { if (includedProperties.Any(x => x.Name == propertyInfo.Name)) { if (typeof(IJsonApiDataModel).IsAssignableFrom(propertyInfo.PropertyType)) { var rawData = propertyInfo.GetValue(data) as IJsonApiDataModel; Included.AddResource(JsonApiResourceBuilder.Build(rawData, false)); } else if (propertyInfo.PropertyType.IsNonStringEnumerable() && propertyInfo.GetValue(data) is IEnumerable <IJsonApiDataModel> rawData) { foreach (var item in rawData) { Included.AddResource(JsonApiResourceBuilder.Build(item, false)); } } } } } if (Included.ResourceObjectDictionary.Count < 1) { Included = null; } }
public static JsonApiResourceObject FromObject(this JsonApiResourceObject resourceObject, IJsonApiDataModel dataModel, bool automaticallyProcessAllRelations = true) { return(JsonApiResourceBuilder.Build(dataModel, automaticallyProcessAllRelations)); }
/// <summary> /// Instantiates the ResourceObjects in the Data property /// </summary> /// <param name="data"></param> private void SetupResources(IEnumerable <T> data, Uri queryString = null) { // Fill data array with resource objects Data = data.Select(dataItem => JsonApiResourceBuilder.Build(dataItem, true)); }