public async Task <IActionResult> GetMemberByOrgId([FromRoute] string id) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { if (!MemberExists(id)) { return(NotFound(new { status = "Not Found", message = $"No Member with id {id} could be found." })); } else { MemberApiResult result = await unitOfWork.Members.GetApiMemberByOrgId(id); return(Ok(result)); } } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError, new { Message = "The service encountered an error." })); } }
public async Task <MemberApiResult> GetApiMemberByOrgId(string id) { var member = await ApplicationDbContext.Members .Include(x => x.PhoneNumbers) .ThenInclude(x => x.Type) .Include(x => x.Position) .ThenInclude(x => x.ParentComponent) .Include(x => x.Race) .Include(x => x.Gender) .Include(x => x.DutyStatus) .Include(x => x.Rank) .FirstOrDefaultAsync(x => x.IdNumber == id); if (member == null) { return(null); } else { if (member.Position.IsManager) { // start looking for manager in Member's position's ParentComponent } MemberApiResult result = new MemberApiResult(member); if (member.Position.IsManager) { var supervisor = await FindNearestManagerForComponentId(Convert.ToInt32(member.Position.ParentComponent.ParentComponentId)); if (supervisor != null) { result.Supervisor = new SubMemberApiResult(supervisor); } } else { var supervisor = await FindNearestManagerForComponentId(member.Position.ParentComponentId); if (supervisor != null) { result.Supervisor = new SubMemberApiResult(supervisor); } } return(result); } }