public static Dictionary<Guid?, OrgLevelTypeName> GetFullLinkOrg(List<Guid?> lstOrgIDs, List<OrgTiny> lstOrgAll) { Dictionary<Guid?, OrgLevelTypeName> Result = new Dictionary<Guid?, OrgLevelTypeName>(); string E_BRANCH = OrgUnit.E_BRANCH.ToString(); string E_DEPARTMENT = OrgUnit.E_DEPARTMENT.ToString(); string E_SECTION = OrgUnit.E_SECTION.ToString(); string E_TEAM = OrgUnit.E_TEAM.ToString(); var lstOrgStructureType = new List<Cat_OrgStructureType>().Select(m => new { m.ID, m.OrgStructureTypeCode }).ToList(); List<OrgTiny> lstOrgByProfile = new List<OrgTiny>(); lstOrgByProfile = lstOrgAll.Where(m => lstOrgIDs.Contains(m.ID)).ToList(); Guid Type_BRANCH_ID = lstOrgStructureType.Where(m => m.OrgStructureTypeCode == E_BRANCH).Select(m => m.ID).FirstOrDefault(); Guid Type_DEPARTMENT_ID = lstOrgStructureType.Where(m => m.OrgStructureTypeCode == E_DEPARTMENT).Select(m => m.ID).FirstOrDefault(); Guid Type_SECTION_ID = lstOrgStructureType.Where(m => m.OrgStructureTypeCode == E_SECTION).Select(m => m.ID).FirstOrDefault(); Guid Type_TEAM_ID = lstOrgStructureType.Where(m => m.OrgStructureTypeCode == E_TEAM).Select(m => m.ID).FirstOrDefault(); foreach (var item in lstOrgByProfile) { OrgLevelTypeName OrgNameLevel = new OrgLevelTypeName(); RecursionOrgGetName(lstOrgAll, item.ID, Type_DEPARTMENT_ID, Type_SECTION_ID, Type_BRANCH_ID, Type_TEAM_ID, OrgNameLevel); Result.Add(item.ID, OrgNameLevel); } return Result; }
private static void RecursionOrgGetName(List<OrgTiny> lstOrgAll, Guid? OrgCurrentID, Guid? TypeDeparmentID, Guid? TypeSectionID, Guid? TypeBrandID, Guid? TypeTeamID, OrgLevelTypeName result) { var currentOrg = lstOrgAll.Where(m => m.ID == OrgCurrentID).FirstOrDefault(); if (currentOrg == null) return; if (TypeDeparmentID != null && currentOrg.TypeID == TypeDeparmentID && result.DepartmentName == null) { result.DepartmentCode = currentOrg.OrgCode; result.DepartmentName = currentOrg.OrgName; } if (TypeSectionID != null && currentOrg.TypeID == TypeSectionID && result.SectionName == null) { result.SectionCode = currentOrg.OrgCode; result.SectionName = currentOrg.OrgName; } if (TypeBrandID != null && currentOrg.TypeID == TypeBrandID && result.BrandName == null) { result.BrandCode = currentOrg.OrgCode; result.BrandName = currentOrg.OrgName; } if (TypeTeamID != null && currentOrg.TypeID == TypeTeamID && result.TeamName == null) { result.TeamCode = currentOrg.OrgCode; result.TeamName = currentOrg.OrgName; } if (currentOrg.ParentID == null) { return; } else { Guid? ParentID = currentOrg.ParentID; RecursionOrgGetName(lstOrgAll, ParentID, TypeDeparmentID, TypeSectionID, TypeBrandID, TypeTeamID, result); } }