public static Organization FromCache(int OrganizationId) { lock (loadCacheLock) { return(Organization.FromBasic(OrganizationCache.GetOrganization(OrganizationId))); } }
public static BasicOrganization[] GetOrganizationLine(int leafOrganizationId) { lock (loadCacheLock) { List <BasicOrganization> result = new List <BasicOrganization>(); BasicOrganization currentOrganization = OrganizationCache.GetOrganization(leafOrganizationId); // This iterates until the zero-parentid root Organization is found while (currentOrganization.OrganizationId > 0) { result.Add(currentOrganization); if (currentOrganization.ParentOrganizationId > 0) { currentOrganization = OrganizationCache.GetOrganization(currentOrganization.ParentOrganizationId); } else { currentOrganization = new BasicOrganization(); } } result.Reverse(); return(result.ToArray()); } }
static public BasicOrganization[] GetOrganizationChildren(int parentOrgId) { List <BasicOrganization> result = new List <BasicOrganization>(); lock (loadCacheLock) { BasicOrganization parent = OrganizationCache.GetOrganization(parentOrgId); //TODO: It is possible to miss a child here if that child was added after the last cache load. Dictionary <int, List <BasicOrganization> > hashedOrganizations = GetHashedOrganizations(); foreach (BasicOrganization b in hashedOrganizations[parentOrgId]) { if (b.Identity != parentOrgId) { result.Add(b); } } return(result.ToArray()); } }
private static BasicOrganization[] GetOrganizationTree(Dictionary <int, List <BasicOrganization> > organizations, int startOrganizationId, int generation) { List <BasicOrganization> result = new List <BasicOrganization>(); //Prime the cache BasicOrganization start = OrganizationCache.GetOrganization(startOrganizationId); List <BasicOrganization> thisList = organizations[startOrganizationId]; foreach (BasicOrganization organization in thisList) { if (organization.OrganizationId != startOrganizationId) { result.Add(organization); // new Organization(organization.OrganizationId, organization.ParentOrganizationId, organization.Name, generation + 1)); // Add recursively BasicOrganization[] children = GetOrganizationTree(organizations, organization.OrganizationId, generation + 1); if (children.Length > 0) { foreach (BasicOrganization child in children) { result.Add(child); } } } else if (generation == 0) { // The top parent is special and should be added; the others shouldn't result.Add(organization); // (new Organization(organization.OrganizationId, organization.ParentOrganizationId, organization.Name, generation)); } } return(result.ToArray()); }