public static void OrganizationTree()
        {
            var cheatInvest = new OrganizationHierarchy("CEO");

            //Directors
            Employee devDirector =
                cheatInvest.AddEmployee("DEV Director", JobTitle.DIRECTOR, cheatInvest.CEO);

            Employee qaDirector =
                cheatInvest.AddEmployee("QA Director", JobTitle.DIRECTOR, cheatInvest.CEO);

            //Managers
            Employee funcTestManager =
                cheatInvest.AddEmployee("Functional Test Manager", JobTitle.MANAGER, qaDirector);

            Employee perfTestManager =
                cheatInvest.AddEmployee("Performance Test Manager", JobTitle.MANAGER, qaDirector);

            //Employees
            Employee seniorQA =
                cheatInvest.AddEmployee("Senior QA", JobTitle.EMPLOYEE, funcTestManager);

            Employee juniorQA =
                cheatInvest.AddEmployee("Junior QA", JobTitle.EMPLOYEE, funcTestManager);

            //Print subordinates
            //cheatInvest.CEO.PrintSubordinateDetails();
            //funcTestManager.PrintSubordinateDetails();

            //Find Employee
            List <Employee> findSeniorQA = cheatInvest.FindEmployee("Senior QA");

            cheatInvest.PrintChiefsHierarchy(seniorQA);
            cheatInvest.PrintChiefsHierarchy(cheatInvest.CEO);
        }
Пример #2
0
 private static void Get(UserSecurityContext user, HttpContext context, CancellationToken cancel)
 {
     try
     {
         OrganizationHierarchyProviderBase provider  = OrganizationHierarchyManager.Instance.GetProvider(user);
         OrganizationHierarchy             hierarchy = provider.GetReporting();
         if (provider != null)
         {
             IEnumerable <KeyValuePair <CompoundIdentity, CompoundIdentity> > links = hierarchy.GetAllPairs();
             JArray jlinks = Jsonifier.ToJson(links);
             if (jlinks != null)
             {
                 RestUtils.Push(context.Response, JsonOpStatus.Ok, jlinks.ToString());
             }
             else
             {
                 RestUtils.Push(context.Response, JsonOpStatus.Ok, "[]");
             }
         }
         RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
     }
     catch
     {
         RestUtils.Push(context.Response, JsonOpStatus.Failed);
         return;
     }
 }
Пример #3
0
 public override OrganizationHierarchy Get(CompoundIdentity hierarchyId)
 {
     if (!hierarchyId.IsNullOrEmpty() && this.CanGet())
     {
         NpgsqlCommand cmd = Db.GetCmd(Db.ConnectionString);
         cmd.CommandText = Db.Select + Db.WhereId;
         cmd.Parameters.AddWithValue("sid", hierarchyId.DataStoreIdentity);
         cmd.Parameters.AddWithValue("id", hierarchyId.Identity);
         NpgsqlDataReader      rdr = Db.ExecuteReader(cmd);
         OrganizationHierarchy o   = null;
         if (rdr != null)
         {
             try
             {
                 if (rdr.Read())
                 {
                     o = new PgOrgHierarchy(this.Context, new CompoundIdentity(DbReaderUtils.GetGuid(rdr, 0), DbReaderUtils.GetGuid(rdr, 1)),
                                            new CompoundIdentity(DbReaderUtils.GetGuid(rdr, 2), DbReaderUtils.GetGuid(rdr, 3)), DbReaderUtils.GetString(rdr, 4), DbReaderUtils.GetString(rdr, 5));
                     if (cmd.Connection.State == System.Data.ConnectionState.Open)
                     {
                         cmd.Connection.Close();
                     }
                 }
             }
             catch
             { }
             finally
             {
                 cmd.Dispose();
             }
         }
         return(o);
     }
     return(null);
 }
Пример #4
0
 private static void GetParent(CompoundIdentity cid, UserSecurityContext user, HttpContext context, CancellationToken cancel)
 {
     try
     {
         OrganizationHierarchyProviderBase provider  = OrganizationHierarchyManager.Instance.GetProvider(user);
         OrganizationHierarchy             hierarchy = provider.GetReporting();
         if (provider != null)
         {
             IEnumerable <CompoundIdentity> parentids = hierarchy.GetParentIds(cid);
             JArray jparentids = Jsonifier.ToJson(parentids);
             if (jparentids != null)
             {
                 RestUtils.Push(context.Response, JsonOpStatus.Ok, jparentids.ToString());
             }
             else
             {
                 RestUtils.Push(context.Response, JsonOpStatus.Ok, "[]");
             }
             return;
         }
         RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
     }
     catch
     {
         RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
         return;
     }
 }
Пример #5
0
        public void AddOrganizationHierarchy(Organization parent,Organization child,OrganizationHierarchyType organizationHierarchyType)
        {
            Guard.Against<ArgumentNullException>(_organizationHierarchyRepository == null, "建構式需指定repository");

            OrganizationHierarchy organizationHierarchy =
                new OrganizationHierarchy()
                {
                    Level = 1,
                    ParentOrganizationId = parent.Id,
                    ChildOrganizationId = child.Id,
                    OrganizationHierarchyType = organizationHierarchyType
                };
            _organizationHierarchyRepository.SaveOrUpdate(organizationHierarchy);

            ISpecification<OrganizationHierarchy> specFindParents =
                new Specification<OrganizationHierarchy>(
                    s => s.ChildOrganizationId == parent.Id && s.OrganizationHierarchyType == organizationHierarchyType);

            IList<OrganizationHierarchy> allParents = _organizationHierarchyRepository.Query(specFindParents);

            foreach(var up in allParents)
            {
                OrganizationHierarchy hierarchy =
                   new OrganizationHierarchy()
                   {
                       Level = up.Level + 1,
                       ParentOrganizationId = up.ParentOrganizationId,
                       ChildOrganizationId = child.Id,
                       OrganizationHierarchyType = organizationHierarchyType
                   };
                _organizationHierarchyRepository.SaveOrUpdate(hierarchy);
            }
        }
Пример #6
0
 public override bool Delete(OrganizationHierarchy hierarchy)
 {
     if (hierarchy != null)
     {
         return(Delete(hierarchy.Identity));
     }
     return(false);
 }
Пример #7
0
 public static JObject ToJson(OrganizationHierarchy org)
 {
     if (org != null)
     {
         JObject o = new JObject();
         o.Add(JsonUtils.Id, JsonUtils.ToJson(org.Identity));
         o.Add(JsonUtils.OwnerId, JsonUtils.ToJson(org.OwningOrgId));
         o.Add(JsonUtils.Name, org.Name);
         o.Add(JsonUtils.Description, org.Description);
         return(o);
     }
     return(null);
 }
Пример #8
0
        static void Main(string[] args)
        {
            int[][] matrix = //new int[][]
            {
                new int[] { 1, 1, 1 },
                new int[] { 1, 0, 1 },
                new int[] { 1, 1, 1 }
            };
            SetMatrixZeroes_73.SetZeroes(matrix);

            string ssss = "#2#1#3";

            string[] split = ssss.Split(new[] { '#' }, StringSplitOptions.RemoveEmptyEntries);
            TreeNode root  = new TreeNode(Int32.Parse(split[0]));


            int dist = HammingDistance_461.HammingDistance(1, 4);

            //CoinChange.CoinChange2(new[] { 186, 419, 83, 408 }, 6249);
            Console.WriteLine(CoinChange.canGetExactChange(6249, new[] { 186, 419, 83, 408 }));
            return;

            var inpOrg = new List <string>()
            {
                "B2,E5,F6", "A1,B2,C3,D4", "D4,G7,I9", "G7,H8"
            };

            OrganizationHierarchy.Print(inpOrg);
            return;

            var head = new ListNode(1);
            var ln2  = new ListNode(3);
            var ln0  = new ListNode(0);
            var ln4  = new ListNode(2);

            head.next = ln2;
            ln2.next  = ln0;
            ln0.next  = ln4;
            //ln4.next = ln2;

            bool isPalindrome   = new _234_PalindromeLinkedList().IsPalindrome(head);
            var  cycelStartNode = new LinkedListCyclePosition().DetectCycle(head);

            //new SubSets_78().Subsets(new int[] { 1, 2, 3 });
            //var ln9 = new ListNode(9);
            //var ln1 = new ListNode(1);
            //ln1.next = ln9;
            //var ln5 = new ListNode(5);
            //ln5.next = ln1;
            //var head = new ListNode(4);
            //head.next = ln5;
            //PrintLinkList(head);
            // new _237_deleteLinkListNodecs().DeleteNode(ln5);
            PrintLinkList(head);

            //int cccc = new ClassB().TrapRainWater(new[] { 4, 9, 4, 5, 3, 2});
            //int cccc = new ClassB().TrapRainWater(new[] { 4, 2, 3 });
            //int cccc = new ClassB().TrapRainWater(new[] { 2, 0, 2 });
            int cccc = new ClassB().TrapRainWater(new[] { 0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1 });

            //int cccc=  new ClassB().StrStr("mississippi", "pi");
            return;

            Console.WriteLine(SellBuy_121.MaxProfit(new[] { 1, 2 }));
            //Console.WriteLine(new _58LenOflastWord().LengthOfLastWord("azx vx"));
            return;

            //var tn = new TreeNode(10);
            //tn.left = new TreeNode(5);
            //tn.right = new TreeNode(15);
            //tn.right.left  = new TreeNode(6);
            //tn.right.right = new TreeNode(20);

            var tn = new TreeNode(3);

            tn.left             = new TreeNode(1);
            tn.left.left        = new TreeNode(0);
            tn.left.right       = new TreeNode(2);
            tn.left.right.right = new TreeNode(3);
            tn.right            = new TreeNode(5);
            tn.right.left       = new TreeNode(4);
            tn.right.right      = new TreeNode(6);
            bool isValid = new Solution98().IsValidBST(tn);

            return;


            //var l1 = new ListNode(1);
            //var l2 = new ListNode(2);
            //var l3 = new ListNode(3);
            //var l4 = new ListNode(4);
            //var l5 = new ListNode(5);
            //l1.next = l2;
            //l2.next = l3;
            //l3.next = l4;
            //l4.next = l5;
            //l5.next = null;


            //var rll = new ReverseLinkList();
            //PrintLinkList(rll.ReverseList(l1));
            //Console.ReadKey();
            //return;

            ClassA a = new ClassA();
            ClassB b = new ClassB();

            a.B = b;
            b.A = a;

            //Solution s = new Solution();
            //var xx = s.Generate(10);
            //foreach (IList<int> row in xx)
            //  Console.WriteLine(string.Join(',', row));
        }
Пример #9
0
        static void BuildTestCTE(UserSecurityContext context)
        {
            OrganizationHierarchyManager.Instance.Initialize();
            Console.WriteLine("OHM state: " + OrganizationHierarchyManager.Instance.State);
            OrganizationHierarchyManager.Instance.Start();
            Console.WriteLine("OHM state: " + OrganizationHierarchyManager.Instance.State);

            if (OrganizationHierarchyManager.Instance.State != Osrs.Runtime.RunState.Running)
            {
                Console.WriteLine("Cannot test OHM - not running");
                return;
            }
            CompoundIdentity           systemId = new CompoundIdentity(Guid.NewGuid(), Guid.NewGuid());
            IEnumerable <Organization> orgs     = OrganizationManager.Instance.GetOrganizationProvider(context).Get("Pacific Northwest National Lab");
            Organization owner = null;

            foreach (Organization cur in orgs)
            {
                owner = cur;
                break;
            }

            OrganizationHierarchyProviderBase prov = OrganizationHierarchyManager.Instance.GetProvider(context);
            OrganizationHierarchy             hier = null;

            if (prov.Exists("temp"))
            {
                hier = prov.Get("temp");
                if (hier != null)
                {
                    Console.WriteLine("Fetched hierarchy");
                }
            }

            if (hier == null)
            {
                hier = prov.Create("temp", owner);
                if (hier != null)
                {
                    Console.WriteLine("Created hierarchy");
                }
            }

            if (hier != null)
            {
                List <CompoundIdentity> idList = new List <CompoundIdentity>();

                for (int i = 0; i <= 100; i++)
                {
                    idList.Add(new CompoundIdentity(Guid.NewGuid(), Guid.NewGuid()));
                }

                for (int i = 0; i < 10; i++)
                {
                    hier.Add(idList[i], idList[i + 10]);
                    hier.Add(idList[i + 10], idList[i + 20]);
                    hier.Add(idList[i + 20], idList[i + 30]);
                    hier.Add(idList[i + 30], idList[i + 40]);
                    hier.Add(idList[i + 40], idList[i + 50]);
                    hier.Add(idList[i + 50], idList[i + 60]);
                    hier.Add(idList[i + 60], idList[i + 70]);
                    hier.Add(idList[i + 70], idList[i + 80]);
                    hier.Add(idList[i + 80], idList[i + 90]);
                }

                //Console.WriteLine("Targeting org: 0403e3d2-b8a2-42cf-80fc-848fcf86aaad,b32cad24-9338-45f4-8d99-bd1aeb43b804");
                Console.WriteLine("Targeting org: " + idList[30].DataStoreIdentity.ToString() + "," + idList[30].Identity.ToString());
                Console.WriteLine("Getting children - no limit specified");
                IEnumerable <CompoundIdentity> orgIds = hier.GetChildrenIds(idList[30]);
                //IEnumerable<CompoundIdentity> orgIds = hier.GetChildrenIds(new CompoundIdentity(new Guid("0403e3d2-b8a2-42cf-80fc-848fcf86aaad"), new Guid("b32cad24-9338-45f4-8d99-bd1aeb43b804")));
                int ct = 0;
                foreach (CompoundIdentity curId in orgIds)
                {
                    //Console.Write(curId.DataStoreIdentity.ToString() + "," + curId.Identity.ToString()+" ");
                    ct++;
                }
                Console.WriteLine();
                Console.WriteLine("Got " + ct + " items");

                Console.WriteLine("Getting children - max limit specified");
                orgIds = hier.GetChildrenIds(idList[30], true);
                //orgIds = hier.GetChildrenIds(new CompoundIdentity(new Guid("0403e3d2-b8a2-42cf-80fc-848fcf86aaad"), new Guid("b32cad24-9338-45f4-8d99-bd1aeb43b804")), true);
                ct = 0;
                foreach (CompoundIdentity curId in orgIds)
                {
                    //Console.Write(curId.DataStoreIdentity.ToString() + "," + curId.Identity.ToString()+" ");
                    ct++;
                }
                Console.WriteLine();
                Console.WriteLine("Got " + ct + " items");


                if (prov.Delete(hier))
                {
                    Console.WriteLine("Deleted hierarchy");
                }
                else
                {
                    Console.WriteLine("Failed deleting hierarchy");
                }
            }
            else
            {
                Console.WriteLine("Failed to create hierarchy");
            }
        }
Пример #10
0
        public static void Handle(UserSecurityContext user, string method, HttpContext context, CancellationToken cancel)
        {
            if (context.Request.Method == "POST")
            {
                if (method.Equals("all", StringComparison.OrdinalIgnoreCase))
                {
                    Get(user, context, cancel);
                    return;
                }
                else if (method.Equals("children", StringComparison.OrdinalIgnoreCase))
                {
                    try
                    {
                        //parse request
                        JToken           token      = JsonUtils.GetDataPayload(context.Request);
                        CompoundIdentity cid        = JsonUtils.ToId(token["parentid"]);
                        string           outputType = (token["outputType"] != null) ? token["outputType"].ToString() : "";
                        string           recurse    = token["recurse"] != null ? token["recurse"].ToString() : null;

                        //get default hierarchy
                        OrganizationHierarchyProviderBase provider  = OrganizationHierarchyManager.Instance.GetProvider(user);
                        OrganizationHierarchy             hierarchy = provider.GetReporting();

                        //get children ids
                        IEnumerable <CompoundIdentity> children = null;
                        if (recurse != null)
                        {
                            children = hierarchy.GetChildrenIds(cid, Convert.ToBoolean(recurse));
                        }
                        else
                        {
                            children = hierarchy.GetChildrenIds(cid);
                        }

                        if (children == null)
                        {
                            RestUtils.Push(context.Response, JsonOpStatus.Ok, "[]");  //empty
                            return;
                        }

                        //return children ids or objects
                        JArray jchildren = null;
                        if (outputType.Equals("values"))
                        {
                            OrganizationProviderBase orgProvider = OrganizationManager.Instance.GetOrganizationProvider(user);
                            List <Organization>      orgs        = new List <Organization>();
                            foreach (CompoundIdentity child in children)
                            {
                                orgs.Add(orgProvider.Get(child));
                            }
                            jchildren = Jsonifier.ToJson(orgs);
                        }
                        else
                        {
                            jchildren = Jsonifier.ToJson(children);
                        }

                        if (jchildren != null)
                        {
                            RestUtils.Push(context.Response, JsonOpStatus.Ok, jchildren.ToString());
                        }
                        else
                        {
                            RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));  //empty returned above
                        }
                    }
                    catch
                    {
                        RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
                    }
                    return;
                }
                else if (method.Equals("parent", StringComparison.OrdinalIgnoreCase))
                {
                    try
                    {
                        CompoundIdentity cid = JsonUtils.ToId(JsonUtils.GetDataPayload(context.Request));
                        if (cid != null)
                        {
                            GetParent(cid, user, context, cancel);
                            return;
                        }
                        RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
                    }
                    catch
                    {
                        RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
                        return;
                    }
                }
                else if (method.Equals("add", StringComparison.OrdinalIgnoreCase))
                {
                    try
                    {
                        //parse request
                        JToken                     token      = JsonUtils.GetDataPayload(context.Request);
                        CompoundIdentity           parent     = JsonUtils.ToId(token["parentid"]);
                        HashSet <CompoundIdentity> child_cids = JsonUtils.ToIds(token["childid"]);  //1 or more

                        //get default hierarchy
                        OrganizationHierarchyProviderBase provider  = OrganizationHierarchyManager.Instance.GetProvider(user);
                        OrganizationHierarchy             hierarchy = provider.GetReporting();

                        //insert
                        bool result = hierarchy.Add(parent, child_cids);
                        if (result == true)
                        {
                            RestUtils.Push(context.Response, JsonOpStatus.Ok);
                        }
                        else
                        {
                            RestUtils.Push(context.Response, JsonOpStatus.Failed);
                        }
                    }
                    catch
                    {
                        RestUtils.Push(context.Response, JsonOpStatus.Failed);
                    }
                    return;
                }
                else if (method.Equals("move", StringComparison.OrdinalIgnoreCase))
                {
                    try
                    {
                        //parse request
                        JToken                     token   = JsonUtils.GetDataPayload(context.Request);
                        CompoundIdentity           old_cid = JsonUtils.ToId(token["parentid"]);
                        CompoundIdentity           new_cid = JsonUtils.ToId(token["newparentid"]);
                        HashSet <CompoundIdentity> cids    = JsonUtils.ToIds(token["childid"]);

                        //get default hierarchy
                        OrganizationHierarchyProviderBase provider  = OrganizationHierarchyManager.Instance.GetProvider(user);
                        OrganizationHierarchy             hierarchy = provider.GetReporting();

                        //move
                        bool result = hierarchy.Move(old_cid, new_cid, cids);
                        if (result == true)
                        {
                            RestUtils.Push(context.Response, JsonOpStatus.Ok);
                        }
                        else
                        {
                            RestUtils.Push(context.Response, JsonOpStatus.Failed);
                        }
                    }
                    catch
                    {
                        RestUtils.Push(context.Response, JsonOpStatus.Failed);
                    }

                    return;
                }
                else if (method.Equals("remove", StringComparison.OrdinalIgnoreCase))
                {
                    try
                    {
                        //parse request
                        JToken                     token      = JsonUtils.GetDataPayload(context.Request);
                        CompoundIdentity           parent_cid = JsonUtils.ToId(token["parentid"]);
                        HashSet <CompoundIdentity> child_cids = JsonUtils.ToIds(token["childid"]);

                        //get default hierarchy
                        OrganizationHierarchyProviderBase provider  = OrganizationHierarchyManager.Instance.GetProvider(user);
                        OrganizationHierarchy             hierarchy = provider.GetReporting();

                        //remove membership
                        bool result = hierarchy.Remove(parent_cid, child_cids);
                        if (result == true)
                        {
                            RestUtils.Push(context.Response, JsonOpStatus.Ok);
                        }
                        else
                        {
                            RestUtils.Push(context.Response, JsonOpStatus.Failed);
                        }
                    }
                    catch
                    {
                        RestUtils.Push(context.Response, JsonOpStatus.Failed);
                    }
                    return;
                }
            }
            context.Response.StatusCode = HttpStatusCodes.Status400BadRequest;
        }