public JsonApiCollectionDocument(JsonApiErrors errors, object meta = null, JsonApiLinksObject links = null)
 {
     Meta     = meta;
     Errors   = errors;
     Data     = null;
     Included = null;
     Links    = links;
 }
Ejemplo n.º 2
0
        public void AddError(string uid, JsonApiLink aboutLink, int httpStatusCode, string appErrorCode, string title, string detail, object source, object meta)
        {
            if (Errors == null)
            {
                Errors = new JsonApiErrors();
            }

            Errors.Add(uid, aboutLink, httpStatusCode, appErrorCode, title, detail, source, meta);
        }
        public JsonApiCollectionDocument(IEnumerable <T> data, JsonApiErrors errors, object metadata = null, bool hasLinks = false, bool hasRelationships = false, bool hasIncludedData = false, Func <T, string> customIdResolver = null)
        {
            if (customIdResolver == null)
            {
                if (typeof(ICustomJsonModelId).IsAssignableFrom(typeof(T)))
                {
                    customIdResolver = d => (d as ICustomJsonModelId)?.CustomJsonModelId;
                }
                else
                {
                    customIdResolver = d => d.Id.ToString();
                }
            }
            Meta   = metadata;
            Errors = errors;
            if (data == null)
            {
                Data     = null;
                Included = null;
            }
            else
            {
                Data = new List <JsonApiResourceObject <T> >();

                foreach (var item in data)
                {
                    JsonClassAttribute classAttrib = item.GetType().GetCustomAttributes(typeof(JsonClassAttribute), false).FirstOrDefault() as JsonClassAttribute;
                    if (classAttrib == null)
                    {
                        throw new Exception("No class attribute specified for " + item.GetType().Name + ".");
                    }
                    var newDataItem = new JsonApiResourceObject <T>(customIdResolver(item), classAttrib.Name, item);
                    if (hasRelationships)
                    {
                        newDataItem.Relationships = new JsonApiRelationshipsObject();
                    }
                    Data.Add(newDataItem);
                }

                //TODO :replace is a hack to remove the "Model"-Part from the name, solve this as parameter in the future
                Included = !hasIncludedData ? null : new JsonApiInclusionCollection();//new List<JsonApiResourceObject>();
            }

            Links = hasLinks ? new JsonApiLinksObject() : null;
        }
 public JsonApiCollectionDocument(T data, JsonApiErrors errors, object metadata = null, bool hasLinks = false, bool hasRelationships = false, bool hasIncludedData = false, bool includeFakeRealm = false)
     : this(new[] { data }, errors, metadata, hasLinks, hasRelationships, hasIncludedData)
 {
 }
 public JsonApiCollectionDocument(CallResult <IEnumerable <T> > result, JsonApiErrors errors, object metadata = null, bool hasLinks = false,
                                  bool hasRelationships = false, bool hasIncludedData = false, Func <T, string> customIdResolver = null) : this(result.Data, errors, metadata, hasLinks, hasRelationships, hasIncludedData, customIdResolver)
 {
 }