public static RequestAttributeCollection ToRequestAttributeCollection(this Entity entity) { var result = new RequestAttributeCollection(); result.AddRange(entity.Attributes.Select(attribute => new RequestAttribute(attribute.Key, attribute.Value))); return result; }
public RequestAttributeCollection FetchAll() { var coll = new RequestAttributeCollection(); var qry = new Query(RequestAttribute.Schema); coll.LoadAndCloseReader(qry.ExecuteReader()); return coll; }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (objectType != typeof (RequestAttributeCollection)) { return serializer.Deserialize(reader); } var request = new RequestAttributeCollection(); var key = string.Empty; object value = null; while (reader.Read()) { switch (reader.TokenType) { case JsonToken.StartObject: { continue; } case JsonToken.PropertyName: { if (!String.IsNullOrEmpty(key) && value != null) { request.Add(new RequestAttribute { Key = key, Value = value }); value = null; } key = reader.Value.ToString(); break; } case JsonToken.StartArray: case JsonToken.EndArray: { value = serializer.Deserialize<JArray>(reader); break; } case JsonToken.Integer: case JsonToken.Boolean: case JsonToken.Date: case JsonToken.Float: case JsonToken.String: case JsonToken.Undefined: { value = reader.Value; break; } } } request.Add(new RequestAttribute { Key = key, Value = value }); return request; }
public CheckResult CheckRequest(string entityType, string operation, RequestAttributeCollection attributes) { var message = Empty; // If operation is not allowed for this entity. if (_jConfig[entityType] == null || _jConfig[entityType][operation] == null) { message = $"Operation {operation} is now alowed for entity {entityType}"; if (Throw) throw new InvalidRequestException(message); return new CheckResult(CheckResult.CheckStatus.Invalid, message); } // Convert config entry to dictionary of required and optional fields. var fields = (_jConfig[entityType][operation]).ToObject<Dictionary<string, JArray>>(); // Processing required section//Check if request contains required fields. var keys = attributes.Keys; var allFields = fields["required"].ToObject<string[]>(); var diff = allFields.Where(f => !keys.Contains(f)).ToList(); // Missing fields if (diff.Any()) { // Generate mesage with missing keys. message = $"Fields [{Join(", ", diff)}] are missing"; if (Throw) throw new InvalidRequestException(message); return new CheckResult(CheckResult.CheckStatus.Invalid, message); } // Processing required-or section. // Check if request fields have required or fields. if (fields.ContainsKey("required-or")) { var orFields = fields["required-or"].ToObject<string[][]>(); foreach (var orField in orFields) { if (!orField.Intersect(keys).Any()) { message = $"Fields [{Join(", ", orField)}] are required"; if (Throw) throw new InvalidRequestException(message); return new CheckResult(CheckResult.CheckStatus.Invalid, message); } allFields = allFields.Concat(orField).ToArray(); } } // Processing optional section. if (fields.ContainsKey("optional")) { // Add optional fields to all fields. allFields = allFields.Concat(fields["optional"].ToObject<string[]>()).ToArray(); } // Check if request does not contain extra fields. var extra = keys.Where(k => !allFields.Contains(k)).ToArray(); // ReSharper disable once InvertIf if (extra.Any()) { message = $"Fields [{Join(", ", extra)}] is not allowed"; if (Throw) throw new InvalidRequestException(message); return new CheckResult(CheckResult.CheckStatus.Valid, message); } return new CheckResult(CheckResult.CheckStatus.Valid, message); }
public RequestAttributeCollection FetchByQuery(Query qry) { var coll = new RequestAttributeCollection(); coll.LoadAndCloseReader(qry.ExecuteReader()); return coll; }
public RequestAttributeCollection FetchByID(object Guid) { RequestAttributeCollection coll = new RequestAttributeCollection().Where("GUID", Guid).Load(); return coll; }