Exemplo n.º 1
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;
     }
 }
Exemplo n.º 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;
     }
 }
Exemplo n.º 3
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;
        }