コード例 #1
0
        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);
        }