public IHttpActionResult Definition() { UberDocument uberDocument = new UberDocument { Version = "1.0", Data = new List<Data>() }; Data data = new Data(); data.Rel = new List<string>(); data.Rel.Add("self"); data.Rel.Add(Request.Headers.Host + "/api"); //string authToken = Request.Headers.Authorization.Parameter; List <string> allowedActions = GetAllowedActions(string.Empty); data.Children = GetDataElements(allowedActions, "{id}", null, null); uberDocument.Data.Add(data); string uber = JsonConvert.SerializeObject(uberDocument, Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); return Ok(new { uber }); }
public IHttpActionResult GetWorkerBranch(string id) { var query = WebApiConfig.GraphClient.Cypher .Match("(w:Worker)-[e:WORKSIN]->(b:Branch)") .Where((Worker w) => w.id == id) .Return((w, b) => new { worker = w.As<Worker>(), branch = Return.As<string>("collect(b.number)") }); var queryData = query.Results.ToList(); var workerBranches = new List<WorkerBranch>(); foreach (var item in queryData) { WorkerBranch workerBranch = new WorkerBranch { workerNumber = item.worker.number, firstName = item.worker.firstName, lastName = item.worker.lastName, BranchNumber = item.branch }; workerBranches.Add(workerBranch); } UberDocument uberDocument = new UberDocument { Version = "1.0", Data = new List<Data>() }; if (workerBranches.Count > 0) { Data data = new Data(); data.Rel = new List<string>(); data.Rel.Add("self"); data.Rel.Add(Request.Headers.Host + "/api/worker/" + id + "/branch"); List<Data> result = new List<Data>(); foreach (WorkerBranch wb in workerBranches) { result.Add(GetBranchData(id, wb)); } data.Children = result; uberDocument.Data.Add(data); } string uber = JsonConvert.SerializeObject(uberDocument, Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); return Ok(new { uber }); }
public IHttpActionResult GetWorkerSkill(string id) { var query = WebApiConfig.GraphClient.Cypher .Match("(w:Worker)-[e:EXPERTIN]->(s:Skill)") .Where((Worker w) => w.id == id) .Return((w, s) => new { worker = w.As<Worker>(), skill = Return.As<string>("collect(s.name)") }); var queryData = query.Results.ToList(); var workerSkills = new List<WorkerSkill>(); foreach (var item in queryData) { WorkerSkill workerSkill = new WorkerSkill { workerNumber = item.worker.number, firstName = item.worker.firstName, lastName = item.worker.lastName, skill = item.skill, experience = "EXPERT" }; workerSkills.Add(workerSkill); } query = WebApiConfig.GraphClient.Cypher .Match("(w:Worker)-[e:PROFICIENTIN]->(s:Skill)") .Where((Worker w) => w.id == id) .Return((w, s) => new { worker = w.As<Worker>(), skill = Return.As<string>("collect(s.name)") }); queryData = query.Results.ToList(); foreach (var item in queryData) { WorkerSkill workerSkill = new WorkerSkill { workerNumber = item.worker.number, firstName = item.worker.firstName, lastName = item.worker.lastName, skill = item.skill, experience = "PROFICIENT" }; workerSkills.Add(workerSkill); } UberDocument uberDocument = new UberDocument { Version = "1.0", Data = new List<Data>() }; if (workerSkills.Count > 0) { Data data = new Data(); data.Rel = new List<string>(); data.Rel.Add("self"); data.Rel.Add(Request.Headers.Host + "/api/worker/" + id + "/skill"); List<Data> result = new List<Data>(); foreach(WorkerSkill ws in workerSkills) { result.Add(GetSkillData(id, ws)); } data.Children = result; uberDocument.Data.Add(data); } string uber = JsonConvert.SerializeObject(uberDocument, Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); return Ok(new { uber }); }
private Data GetSkillData(string id, WorkerSkill workerSkill) { Data data = new Data() { Name = "worker", Url = new System.Uri(Request.Headers.Host + "/api/worker/" + id + "/skill") }; data.Rel = new List<string>(); data.Rel.Add("item"); data.Rel.Add(Request.Headers.Host + "/api/rels/worker"); List<Data> children = new List<Data>(); children.Add(new Data { Name = "workerNumber", Label = "Worker Number", Value = workerSkill == null ? null : workerSkill.workerNumber }); children.Add(new Data { Name = "firstName", Label = "First Name", Value = workerSkill == null ? null : workerSkill.firstName }); children.Add(new Data { Name = "lastName", Label = "Last Name", Value = workerSkill == null ? null : workerSkill.lastName }); children.Add(new Data { Name = "skill", Label = "Skill", Value = workerSkill == null ? null : workerSkill.skill }); children.Add(new Data { Name = "experience", Label = "Experience", Value = workerSkill == null ? null : workerSkill.experience }); data.Children = children; return data; }
private Data GetSearchData() { Data data = new Data() { Name = "search", Url = new System.Uri(Request.Headers.Host + "/api//worker/search?firstName={firstName}&lastName={lastName}&last4SSN={last4SSN}&skill[0]={skill[0]}&skill[1]={skill[1]}&branchNumber={branchNumber}"), Templated = "true" }; data.Rel = new List<string>(); data.Rel.Add("search"); data.Rel.Add("collection"); return data; }
private Data GetReadData(string id, Worker worker) { Data data = new Data() { Name = "worker", Url = new System.Uri(Request.Headers.Host + "/api/worker/" + id) }; data.Rel = new List<string>(); data.Rel.Add("item"); data.Rel.Add(Request.Headers.Host + "/api/rels/worker"); List<Data> children = new List<Data>(); children.Add(new Data { Name = "number", Label = "Number" , Value = worker == null ? null : worker.number}); children.Add(new Data { Name = "firstName", Label = "First Name", Value = worker == null ? null : worker.firstName }); children.Add(new Data { Name = "lastName", Label = "Last Name", Value = worker == null ? null : worker.lastName }); children.Add(new Data { Name = "last4SSN", Label = "Last 4 digits of SSN", Value = worker == null ? null : worker.last4SSN }); children.Add(new Data { Name = "dob", Label = "Date Of Birth", Value = worker == null ? null : worker.dob.ToString() }); children.Add(new Data { Name = "status", Label = "Status", Value = worker == null ? null : worker.status }); children.Add(new Data { Name = "avatarUrl", Transclude = "true", Url = new System.Uri("http://example.org/avatars/{number}"), Value = "Worker Photo" }); data.Children = children; return data; }
private Data GetBranchData(string id, WorkerBranch workerBranch) { Data data = new Data() { Name = "worker", Url = new System.Uri(Request.Headers.Host + "/api/worker/" + id + "/branch") }; data.Rel = new List<string>(); data.Rel.Add("item"); data.Rel.Add(Request.Headers.Host + "/api/rels/worker"); List<Data> children = new List<Data>(); children.Add(new Data { Name = "workerNumber", Label = "Worker Number", Value = workerBranch == null ? null : workerBranch.workerNumber }); children.Add(new Data { Name = "firstName", Label = "First Name", Value = workerBranch == null ? null : workerBranch.firstName }); children.Add(new Data { Name = "lastName", Label = "Last Name", Value = workerBranch == null ? null : workerBranch.lastName }); children.Add(new Data { Name = "branchNumber", Label = "Branch Number", Value = workerBranch == null ? null : workerBranch.BranchNumber }); data.Children = children; return data; }
private Data GetActionData(string id, string action) { string url = string.IsNullOrEmpty(id) ? "/api//worker/" : "/api//worker/" + id; string rel = "/api/rels/" + action; Data data = new Data() { Name = "create", Url = new System.Uri(Request.Headers.Host + url), Model = "n={number}&f={firstName}&l={lastName}&s={ssn},d={dob},status={status},a={avatarUrl}", Action = action }; data.Rel = new List<string>(); data.Rel.Add("item"); data.Rel.Add(Request.Headers.Host + rel); return data; }
public IHttpActionResult Read(string id) { var query = WebApiConfig.GraphClient.Cypher .Match("(w:Worker)") .Where((Worker w) => w.id == id) .Return(w => w.As<Worker>()); var workers = query.Results.ToList(); UberDocument uberDocument = new UberDocument { Version = "1.0", Data = new List<Data>() }; Worker worker = null; if (workers.Count > 0) { worker = workers[0]; Data data = new Data(); data.Rel = new List<string>(); data.Rel.Add("self"); data.Rel.Add(Request.Headers.Host + "/api/worker/" + id); List<Data> result = new List<Data>(); result.Add(GetReadData(id, worker)); result.Add(GetSkillData(id, null)); result.Add(GetBranchData(id, null)); result.Add(GetActionData(id, Actions.Replace)); result.Add(GetActionData(id, Actions.Remove)); data.Children = result; uberDocument.Data.Add(data); } string uber = JsonConvert.SerializeObject(uberDocument, Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); return Ok(new { uber }); }