Esempio n. 1
0
 public static Organization FromCache(int OrganizationId)
 {
     lock (loadCacheLock)
     {
         return(Organization.FromBasic(OrganizationCache.GetOrganization(OrganizationId)));
     }
 }
Esempio n. 2
0
        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());
            }
        }
Esempio n. 3
0
        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());
            }
        }
Esempio n. 4
0
        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());
        }