Example #1
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());
            }
        }
Example #2
0
 public static Organization FromCache(int OrganizationId)
 {
     lock (loadCacheLock)
     {
         return(Organization.FromBasic(OrganizationCache.GetOrganization(OrganizationId)));
     }
 }
Example #3
0
        public static BasicOrganization GetOrganization(int OrganizationId)
        {
            lock (loadCacheLock)
            {
                Dictionary <int, List <BasicOrganization> > hashedOrganisations = OrganizationCache.GetHashedOrganizations();
                if (hashedOrganisations.ContainsKey(OrganizationId))
                {
                    return(hashedOrganisations[OrganizationId][0]);
                }
                else
                {
                    //Didn't find, strange, id's should exist, try reloading the cache, it could be newly added.

                    needsReload         = true;
                    hashedOrganisations = OrganizationCache.GetHashedOrganizations();
                    if (hashedOrganisations.ContainsKey(OrganizationId))
                    {
                        return(hashedOrganisations[OrganizationId][0]);
                    }
                    else
                    {
                        throw new ArgumentException("No such OrganizationId: " + OrganizationId.ToString());
                    }
                };
            }
        }
Example #4
0
        public static BasicOrganization[] GetOrganizationTree(int startOrganizationId)
        {
            lock (loadCacheLock)
            {
                Dictionary <int, List <BasicOrganization> > organizations = OrganizationCache.GetHashedOrganizations();

                return(GetOrganizationTree(organizations, startOrganizationId, 0));
            }
        }
Example #5
0
 public static BasicOrganization[] GetAll()
 {
     lock (loadCacheLock)
     {
         Dictionary <int, List <BasicOrganization> > hashedOrganisations = OrganizationCache.GetHashedOrganizations();
         List <BasicOrganization> returnList = new List <BasicOrganization>();
         foreach (int id in hashedOrganisations.Keys)
         {
             returnList.Add(hashedOrganisations[id][0]);
         }
         return(returnList.ToArray());
     }
 }
Example #6
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());
            }
        }
Example #7
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());
        }