public List <Person> Jobs([FromBody] TokenModel model) { var token = model.Token; var personName = model.PersonName; var rootObject = new List <Person>(); if (string.IsNullOrWhiteSpace(token)) { return(rootObject); } var url = UrlBuilder(ApiTypeEnum.Jobs, null, false); var jsonPost = JobQuery.JobQueryData(model.PersonId); var data = GetPostResponse <JobRole>(token, url, jsonPost); var organizationalUnit = "Organizational unit type".Trim().ToLower(); foreach (var obj in data.items) { var jobList = new List <Job>(); var roleList = new List <Role>(); var person = new Person { PersonId = obj.item.guid, Name = Convert.ToString(obj.item.attributes.Select(i => i.value).FirstOrDefault()), LocationName = model.LocationName, TeamLeadName = model.TeamLeadName, SupervisorName = model.SupervisorName, }; var job = new Job { PersonId = person.PersonId, PersonName = person.Name }; var role = new Role { PersonId = person.PersonId, PersonName = person.Name }; foreach (var descendant in obj.descendants) { var jobToAdd = new Job { JobName = job.JobName, PersonId = job.PersonId, PersonName = job.PersonName }; var roleToAdd = new Role { RoleName = role.RoleName, PersonId = job.PersonId, PersonName = job.PersonName }; var value = Convert.ToString(descendant.item.attributes.Select(i => i.value).FirstOrDefault()); var type = descendant.item.typename; if (type == "Organizational unit type") { var color = GetKnownColor(); // this is a job jobToAdd.JobName = value; jobToAdd.JobId = descendant.item.guid; jobToAdd.Color = color; jobList.Add(jobToAdd); var rolesByJob = GetRolesByJob(token, jobToAdd.Color, jobToAdd.JobId); var sortedJobRoles = rolesByJob.JobRoles.OrderBy(i => i.RoleName).ToList(); foreach (var jobRelatedRole in sortedJobRoles) { // role id,job id, person id //if (person.JobRelatedRoles == null) //{ // person.JobRelatedRoles = new List<Role>(); //} //person.JobRelatedRoles.Add(jobRelatedRole); roleList.Add(jobRelatedRole); //roleList.Add(roleBJ); } } else if (type == "Role") { // this is a role roleToAdd.RoleName = value; roleToAdd.RoleId = descendant.item.guid; roleList.Add(roleToAdd); } } person.Jobs = jobList; person.Roles = roleList; rootObject.Add(person); } if (!string.IsNullOrEmpty(personName)) { return(rootObject.Where(i => i.Name.Trim().ToLower() == personName.Trim().ToLower()).ToList()); } return(rootObject); }