protected bool update_user_confidentialities(ref XmlDocument doc)
        {
            if (!paramsContainer.GBEdit)
            {
                return(false);
            }

            List <KeyValuePair <string, int> > exItems = new List <KeyValuePair <string, int> >();

            XmlNodeList authors = doc.GetElementsByTagName("Item");

            foreach (XmlNode a in authors)
            {
                string un = a.Attributes["username"] == null ? null :
                            PublicMethods.verify_string(a.Attributes["username"].Value.Trim());
                int?lId = a.Attributes["levelid"] == null ? null : PublicMethods.parse_int(a.Attributes["levelid"].Value.Trim());

                if (!string.IsNullOrEmpty(un) && lId.HasValue && lId.Value > 0)
                {
                    exItems.Add(new KeyValuePair <string, int>(un, lId.Value));
                }
            }

            bool result = true;

            PublicMethods.split_list <KeyValuePair <string, int> >(exItems, 200, items => {
                result = DEController.update_user_confidentialities(paramsContainer.Tenant.Id, paramsContainer.CurrentUserID.Value, items);
            });

            return(result);
        }
        protected bool remove_nodes(ref XmlDocument doc)
        {
            if (!paramsContainer.GBEdit)
            {
                return(false);
            }

            List <KeyValuePair <string, string> > exNodes = new List <KeyValuePair <string, string> >();

            XmlNodeList nodes = doc.GetElementsByTagName("Node");

            foreach (XmlNode _nd in nodes)
            {
                string typeId = _nd.Attributes["typeid"] == null || _nd.Attributes["typeid"].ToString() == string.Empty ? null :
                                PublicMethods.verify_string(_nd.Attributes["typeid"].Value.Trim());
                string id = _nd.Attributes["id"] == null || _nd.Attributes["id"].ToString() == string.Empty ? null :
                            PublicMethods.verify_string(_nd.Attributes["id"].Value.Trim());

                if (!string.IsNullOrEmpty(id) && !string.IsNullOrEmpty(typeId) && !exNodes.Any(n => n.Value == typeId))
                {
                    exNodes.Add(new KeyValuePair <string, string>(typeId, id));
                }
            }

            bool result = true;

            PublicMethods.split_list <KeyValuePair <string, string> >(exNodes, 200, items =>
            {
                result = DEController.remove_nodes(paramsContainer.Tenant.Id,
                                                   paramsContainer.CurrentUserID.Value, items);
            });

            return(result);
        }
        protected bool update_nodes(ref XmlDocument doc)
        {
            if (!paramsContainer.GBEdit)
            {
                return(false);
            }

            string nodeType = PublicMethods.verify_string(doc.DocumentElement.Attributes["nodetype"].Value);

            List <ExchangeNode> exNodes = new List <ExchangeNode>();

            XmlNodeList nodes = doc.GetElementsByTagName("Node");

            foreach (XmlNode _nd in nodes)
            {
                string tags = _nd.Attributes["tags"] == null || _nd.Attributes["tags"].ToString() == string.Empty ?
                              null : _nd.Attributes["tags"].Value.Trim();

                if (!string.IsNullOrEmpty(tags))
                {
                    tags = tags.Replace('-', '~').Replace(';', '~').Replace(',', '~');
                }

                ExchangeNode newNode = new ExchangeNode()
                {
                    Name         = _nd.Attributes["name"] == null ? null : _nd.Attributes["name"].Value.Trim(),
                    AdditionalID = _nd.Attributes["id"] == null || _nd.Attributes["id"].ToString() == string.Empty ? null :
                                   PublicMethods.verify_string(_nd.Attributes["id"].Value.Trim()),
                    ParentAdditionalID = _nd.Attributes["parentid"] == null || _nd.Attributes["parentid"].ToString() == string.Empty ?
                                         null : PublicMethods.verify_string(_nd.Attributes["parentid"].Value.Trim()),
                    Abstract = _nd.Attributes["abstract"] == null || _nd.Attributes["abstract"].ToString() == string.Empty ?
                               null : _nd.Attributes["abstract"].Value.Trim(),
                    Tags = tags
                };

                if (string.IsNullOrEmpty(newNode.AdditionalID) || !exNodes.Any(
                        u => !string.IsNullOrEmpty(u.AdditionalID) && u.AdditionalID.ToLower() == newNode.AdditionalID.ToLower()))
                {
                    exNodes.Add(newNode);
                }
            }

            exNodes = ExchangeNode.sort_nodes_based_on_parents(exNodes);

            bool result = true;

            PublicMethods.split_list <ExchangeNode>(exNodes, 200, nds =>
            {
                List <Guid> newNodeIds = new List <Guid>();

                result = DEController.update_nodes(paramsContainer.Tenant.Id,
                                                   nds, null, nodeType, paramsContainer.CurrentUserID.Value, ref newNodeIds);
            });

            return(result);
        }
Esempio n. 4
0
        private static void update_users(Guid applicationId)
        {
            try
            {
                string res = CallWebService.CallWebMethod("http://wsrefahicard.isfahan.ir/RefahService.asmx",
                                                          "GetknowledgemanagementEmployeeWithArg", "knowledgemanagement", "EmpknowledgemanageWebService@128",
                                                          new Dictionary <string, string>());

                XmlDocument doc = new XmlDocument();
                doc.LoadXml(res);

                XmlNodeList nodes = doc.GetElementsByTagName("Personel");

                List <ExchangeUser> users = new List <ExchangeUser>();

                foreach (XmlNode nd in nodes)
                {
                    string un = nd.SelectSingleNode("MelliCode").InnerText.Trim();

                    if (!string.IsNullOrEmpty(un))
                    {
                        string pass = un;
                        while (pass.Length < 5)
                        {
                            pass += un;
                        }

                        users.Add(new ExchangeUser()
                        {
                            //UserName = nd.SelectSingleNode("empno").InnerText.Trim(),
                            UserName  = un,
                            FirstName = PublicMethods.verify_string(nd.SelectSingleNode("Name").InnerText.Trim()),
                            LastName  = PublicMethods.verify_string(nd.SelectSingleNode("Family").InnerText.Trim()),
                            Password  = new Password(pass)
                        });
                    }
                }

                for (int i = 0; i < users.Count;)
                {
                    List <ExchangeUser> exLst = new List <ExchangeUser>();

                    for (int j = 0; j < 200 && i < users.Count; ++j)
                    {
                        exLst.Add(users[i++]);
                    }

                    DEController.update_users(applicationId, exLst);
                }
            }
            catch (Exception ex)
            {
                LogController.save_error_log(applicationId, null, "job_updateusers_esf_webservice", ex, ModuleIdentifier.Jobs);
            }
        }
        protected bool update_members(ref XmlDocument doc)
        {
            if (!paramsContainer.GBEdit)
            {
                return(false);
            }

            List <ExchangeMember> exMembers = new List <ExchangeMember>();

            List <string> usernames = new List <string>();

            XmlNodeList members = doc.GetElementsByTagName("Member");

            foreach (XmlNode _mbr in members)
            {
                ExchangeMember mm = new ExchangeMember()
                {
                    NodeTypeAdditionalID = _mbr.Attributes["nodetypeid"] == null ? null :
                                           PublicMethods.verify_string(_mbr.Attributes["nodetypeid"].Value.Trim()),
                    NodeAdditionalID = _mbr.Attributes["nodeid"] == null ? null :
                                       PublicMethods.verify_string(_mbr.Attributes["nodeid"].Value.Trim()),
                    UserName = _mbr.Attributes["username"] == null ? null :
                               PublicMethods.verify_string(_mbr.Attributes["username"].Value.Trim()),
                    IsAdmin = _mbr.Attributes["isadmin"] != null && _mbr.Attributes["isadmin"].Value.Trim().ToLower() == "true"
                };

                Guid nodeId = Guid.Empty;
                if (string.IsNullOrEmpty(mm.NodeTypeAdditionalID) && Guid.TryParse(mm.NodeAdditionalID, out nodeId))
                {
                    mm.NodeID = nodeId;
                }

                exMembers.Add(mm);
            }

            bool result = true;

            PublicMethods.split_list <ExchangeMember>(exMembers, 200, items => {
                result = DEController.update_members(paramsContainer.Tenant.Id, items);
            });

            return(result);
        }
        protected bool update_experts(ref XmlDocument doc)
        {
            if (!paramsContainer.GBEdit)
            {
                return(false);
            }

            List <ExchangeMember> exExperts = new List <ExchangeMember>();

            List <string> usernames = new List <string>();

            XmlNodeList experts = doc.GetElementsByTagName("Expert");

            foreach (XmlNode _xprt in experts)
            {
                ExchangeMember ex = new ExchangeMember()
                {
                    NodeTypeAdditionalID = _xprt.Attributes["nodetypeid"] == null ? null :
                                           PublicMethods.verify_string(_xprt.Attributes["nodetypeid"].Value.Trim()),
                    NodeAdditionalID = _xprt.Attributes["nodeid"] == null ? null :
                                       PublicMethods.verify_string(_xprt.Attributes["nodeid"].Value.Trim()),
                    UserName = _xprt.Attributes["username"] == null ? null :
                               PublicMethods.verify_string(_xprt.Attributes["username"].Value.Trim())
                };

                Guid nodeId = Guid.Empty;
                if (string.IsNullOrEmpty(ex.NodeTypeAdditionalID) && Guid.TryParse(ex.NodeAdditionalID, out nodeId))
                {
                    ex.NodeID = nodeId;
                }

                exExperts.Add(ex);
            }

            bool result = true;

            PublicMethods.split_list <ExchangeMember>(exExperts, 200, items => {
                result = DEController.update_experts(paramsContainer.Tenant.Id, items);
            });

            return(result);
        }
        protected bool update_relations(ref XmlDocument doc)
        {
            if (!paramsContainer.GBEdit)
            {
                return(false);
            }

            List <ExchangeRelation> exRelations = new List <ExchangeRelation>();

            XmlNodeList relations = doc.GetElementsByTagName("Relation");

            foreach (XmlNode r in relations)
            {
                ExchangeRelation rel = new ExchangeRelation()
                {
                    SourceTypeAdditionalID = r.Attributes["nodetypeid"] == null ? null :
                                             PublicMethods.verify_string(r.Attributes["nodetypeid"].Value.Trim()),
                    SourceAdditionalID = r.Attributes["nodeid"] == null ? null :
                                         PublicMethods.verify_string(r.Attributes["nodeid"].Value.Trim()),
                    DestinationTypeAdditionalID = r.Attributes["relatednodetypeid"] == null ? null :
                                                  PublicMethods.verify_string(r.Attributes["relatednodetypeid"].Value.Trim()),
                    DestinationAdditionalID = r.Attributes["relatedid"] == null ? null :
                                              PublicMethods.verify_string(r.Attributes["relatedid"].Value.Trim()),
                    Bidirectional = false //r.Attributes["bidirectional"] == null ? false : r.Attributes["bidirectional"].Value.ToLower() == "true"
                };

                exRelations.Add(rel);
            }

            bool result = true;

            PublicMethods.split_list <ExchangeRelation>(exRelations, 200, items => {
                result = DEController.update_relations(paramsContainer.Tenant.Id,
                                                       paramsContainer.CurrentUserID.Value, items);
            });

            return(result);
        }
        protected bool update_permissions(ref XmlDocument doc)
        {
            if (!paramsContainer.GBEdit)
            {
                return(false);
            }

            List <ExchangePermission> exDropAll     = new List <ExchangePermission>();
            List <ExchangePermission> exPermissions = new List <ExchangePermission>();

            XmlNodeList items = doc.GetElementsByTagName("Item");

            foreach (XmlNode a in items)
            {
                PermissionType pt = PermissionType.None;
                if (a.Attributes["permission"] != null)
                {
                    Enum.TryParse <PermissionType>(a.Attributes["permission"].Value.Trim(), out pt);
                }

                bool?deny    = a.Attributes["deny"] == null ? null : PublicMethods.parse_bool(a.Attributes["deny"].Value.Trim());
                bool?dropAll = a.Attributes["drop_all"] == null ? null : PublicMethods.parse_bool(a.Attributes["drop_all"].Value.Trim());

                ExchangePermission item = new ExchangePermission()
                {
                    NodeTypeAdditionalID = a.Attributes["nodetypeid"] == null ? null :
                                           PublicMethods.verify_string(a.Attributes["nodetypeid"].Value.Trim()),
                    NodeAdditionalID = a.Attributes["nodeid"] == null ? null :
                                       PublicMethods.verify_string(a.Attributes["nodeid"].Value.Trim()),
                    GroupTypeAdditionalID = a.Attributes["grouptypeid"] == null ? null :
                                            PublicMethods.verify_string(a.Attributes["grouptypeid"].Value.Trim()),
                    GroupAdditionalID = a.Attributes["groupid"] == null ? null :
                                        PublicMethods.verify_string(a.Attributes["groupid"].Value.Trim()),
                    UserName = a.Attributes["username"] == null ? null :
                               PublicMethods.verify_string(a.Attributes["username"].Value.Trim()),
                    PermissionType = pt,
                    Allow          = !deny.HasValue || !deny.Value
                };

                if (!string.IsNullOrEmpty(item.NodeTypeAdditionalID) && !string.IsNullOrEmpty(item.NodeAdditionalID))
                {
                    if (dropAll.HasValue && dropAll.Value)
                    {
                        exDropAll.Add(new ExchangePermission()
                        {
                            NodeTypeAdditionalID = item.NodeTypeAdditionalID,
                            NodeAdditionalID     = item.NodeAdditionalID,
                            DropAll = dropAll
                        });
                    }

                    bool valid = !string.IsNullOrEmpty(item.GroupTypeAdditionalID) && !string.IsNullOrEmpty(item.GroupAdditionalID);
                    valid = valid || !string.IsNullOrEmpty(item.UserName);
                    valid = valid && item.PermissionType != PermissionType.None;

                    if (valid)
                    {
                        exPermissions.Add(item);
                    }
                }
            }

            bool result = true;

            PublicMethods.split_list <ExchangePermission>(exDropAll, 200, lst => {
                result = DEController.update_permissions(paramsContainer.Tenant.Id, paramsContainer.CurrentUserID.Value, lst);
            });

            PublicMethods.split_list <ExchangePermission>(exPermissions, 200, lst => {
                result = DEController.update_permissions(paramsContainer.Tenant.Id, paramsContainer.CurrentUserID.Value, lst);
            });

            return(result);
        }
        protected bool update_authors(ref XmlDocument doc)
        {
            if (!paramsContainer.GBEdit)
            {
                return(false);
            }

            List <ExchangeAuthor> exAuthors = new List <ExchangeAuthor>();

            XmlNodeList authors = doc.GetElementsByTagName("Author");

            foreach (XmlNode a in authors)
            {
                ExchangeAuthor item = new ExchangeAuthor()
                {
                    NodeTypeAdditionalID = a.Attributes["nodetypeid"] == null ? null :
                                           PublicMethods.verify_string(a.Attributes["nodetypeid"].Value.Trim()),
                    NodeAdditionalID = a.Attributes["nodeid"] == null ? null :
                                       PublicMethods.verify_string(a.Attributes["nodeid"].Value.Trim()),
                    UserName = a.Attributes["username"] == null ? null :
                               PublicMethods.verify_string(a.Attributes["username"].Value.Trim()),
                    Percentage = a.Attributes["percentage"] == null ? null : PublicMethods.parse_int(a.Attributes["percentage"].Value.Trim())
                };

                if (!string.IsNullOrEmpty(item.NodeTypeAdditionalID) && !string.IsNullOrEmpty(item.NodeAdditionalID) &&
                    !string.IsNullOrEmpty(item.UserName) && item.Percentage.HasValue && item.Percentage > 0 &&
                    item.Percentage <= 100 && !exAuthors.Any(u =>
                                                             u.NodeTypeAdditionalID.ToLower() == item.NodeTypeAdditionalID.ToLower() &&
                                                             u.NodeAdditionalID.ToLower() == item.NodeAdditionalID.ToLower() &&
                                                             u.UserName.ToLower() == item.UserName.ToLower()))
                {
                    exAuthors.Add(item);
                }
            }

            exAuthors = ExchangeAuthor.sort_items(exAuthors);

            int SIZE = 200;

            bool result = true;

            while (exAuthors.Count > 0)
            {
                List <ExchangeAuthor> newItems = exAuthors.Take(Math.Min(exAuthors.Count, SIZE)).ToList();
                ExchangeAuthor        lastItem = newItems[newItems.Count - 1];

                exAuthors.RemoveRange(0, newItems.Count);

                List <ExchangeAuthor> additionalItems = exAuthors.TakeWhile(
                    u => u.NodeTypeAdditionalID.ToLower() == lastItem.NodeTypeAdditionalID.ToLower() &&
                    u.NodeAdditionalID.ToLower() == lastItem.NodeAdditionalID.ToLower()).ToList();

                if (additionalItems.Count > 0)
                {
                    newItems.AddRange(additionalItems);
                    exAuthors.RemoveRange(0, additionalItems.Count);
                }

                result = DEController.update_authors(paramsContainer.Tenant.Id,
                                                     paramsContainer.CurrentUserID.Value, newItems);
            }

            return(result);
        }
Esempio n. 10
0
        protected bool update_users(ref XmlDocument doc)
        {
            if (!paramsContainer.GBEdit)
            {
                return(false);
            }

            List <ExchangeUser> exUsers = new List <ExchangeUser>();

            List <string> usernames = new List <string>();

            XmlNodeList users = doc.GetElementsByTagName("User");

            foreach (XmlNode _usr in users)
            {
                ExchangeUser eu = new ExchangeUser()
                {
                    UserName = _usr.Attributes["username"] == null ? null :
                               PublicMethods.verify_string(_usr.Attributes["username"].Value.Trim()),
                    NewUserName = _usr.Attributes["newusername"] == null ? null :
                                  PublicMethods.verify_string(_usr.Attributes["newusername"].Value.Trim()),
                    FirstName    = _usr.Attributes["firstname"] == null ? null : _usr.Attributes["firstname"].Value.Trim(),
                    LastName     = _usr.Attributes["lastname"] == null ? null : _usr.Attributes["lastname"].Value.Trim(),
                    DepartmentID = _usr.Attributes["departmentid"] == null ? null : _usr.Attributes["departmentid"].Value.Trim()
                };

                if (!string.IsNullOrEmpty(eu.UserName) && eu.UserName.ToLower() == "admin")
                {
                    eu.NewUserName = null;
                }

                if (string.IsNullOrEmpty(eu.UserName) ||
                    exUsers.Any(u => u.UserName.ToLower() == eu.UserName.ToLower()))
                {
                    continue;
                }

                EmploymentType empType = EmploymentType.NotSet;
                if (_usr.Attributes["employmenttype"] == null ||
                    !Enum.TryParse <EmploymentType>(_usr.Attributes["employmenttype"].Value.Trim(), out empType))
                {
                    empType = EmploymentType.NotSet;
                }
                eu.EmploymentType = empType;

                if (_usr.Attributes["ismanager"] != null)
                {
                    eu.IsManager = PublicMethods.parse_bool(_usr.Attributes["ismanager"].Value);
                }
                if (_usr.Attributes["resetpassword"] != null)
                {
                    eu.ResetPassword = PublicMethods.parse_bool(_usr.Attributes["resetpassword"].Value);
                }
                if (eu.NewUserName == eu.UserName)
                {
                    eu.NewUserName = null;
                }

                string password = eu.UserName;
                while (password.Length < 5)
                {
                    password += eu.UserName;
                }
                eu.Password = new Password(password);

                exUsers.Add(eu);
            }

            bool result = true;

            PublicMethods.split_list <ExchangeUser>(exUsers, 200, items => {
                result = DEController.update_users(paramsContainer.Tenant.Id, items);
            });

            return(result);
        }
Esempio n. 11
0
        private static void update_projects(Guid applicationId, string from, string to)
        {
            try
            {
                string projectTypeAddId = "2";

                Dictionary <string, string> parameters = new Dictionary <string, string>();

                string username = @"sigma\knowledgetosigma";
                string password = "******";

                parameters["p1"]   = "knowledgePrjList";
                parameters["From"] = from;
                parameters["To"]   = to;

                BasicHttpBinding binding = new BasicHttpBinding();
                EndpointAddress  address = new EndpointAddress("http://sigma.isfahan.ir/_layouts/15/ahdaUtility15/ahdaUtility15.asmx?op=QuerySQL2");
                binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm;
                binding.Security.Transport.ProxyCredentialType  = HttpProxyCredentialType.None;
                binding.Security.Message.ClientCredentialType   = BasicHttpMessageCredentialType.UserName;

                binding.MessageEncoding        = WSMessageEncoding.Text;
                binding.TextEncoding           = Encoding.UTF8;
                binding.Security.Mode          = BasicHttpSecurityMode.TransportCredentialOnly;
                binding.MaxReceivedMessageSize = 10000000;

                EsfahanProjects.ahdaUtility15SoapClient client = new EsfahanProjects.ahdaUtility15SoapClient(binding, address);
                client.ClientCredentials.Windows.ClientCredential          = new System.Net.NetworkCredential(username, password);
                client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Delegation;
                XmlNode res = client.QuerySQL2(parameters["p1"], parameters["From"], parameters["To"]);

                XmlNodeList nodes = res.SelectNodes("item");

                List <ExchangeNode> exNodes = new List <ExchangeNode>();

                Dictionary <string, bool> ids = new Dictionary <string, bool>();

                foreach (XmlNode nd in nodes)
                {
                    string id    = nd.SelectSingleNode("ProjectCode").InnerText.Trim();
                    string title = nd.SelectSingleNode("Title").InnerText.Trim();

                    if (!string.IsNullOrEmpty(id) && !string.IsNullOrEmpty(title) &&
                        !exNodes.Any(u => u.AdditionalID == id))
                    {
                        exNodes.Add(new ExchangeNode()
                        {
                            AdditionalID = id,
                            Name         = title
                        });
                    }
                }

                if (exNodes.Count == 0)
                {
                    return;
                }

                PublicMethods.split_list <ExchangeNode>(exNodes, 200, lst =>
                {
                    List <Guid> nIds = new List <Guid>();

                    DEController.update_nodes(applicationId, lst, null, projectTypeAddId,
                                              Guid.Parse("6B9E8414-C1EA-4E59-8AA8-34B4BCEB74E7"), ref nIds);
                });

                //Save Log
                LogController.save_error_log(applicationId, null, "job_update_projects_esf_webservice",
                                             "From: " + from + ", To: " + to + ", Count: " + exNodes.Count.ToString(), ModuleIdentifier.Jobs, LogLevel.Trace);
                //end of Save Log
            }
            catch (Exception ex)
            {
                LogController.save_error_log(applicationId, null, "job_update_projects_esf_webservice", ex, ModuleIdentifier.Jobs);
            }
        }
Esempio n. 12
0
        private static void update_chart(Guid applicationId)
        {
            try
            {
                string depTypeAddId = "6";

                string res = CallWebService.CallWebMethod("http://wsrefahicard.isfahan.ir/RefahService.asmx",
                                                          "GetknowledgeManagementEmpChartWithArg", "knowledgemanagement", "EmpknowledgemanageWebService@128",
                                                          new Dictionary <string, string>());

                XmlDocument doc = new XmlDocument();
                doc.LoadXml(res);

                XmlNodeList nodes = doc.GetElementsByTagName("Personel");

                List <ExchangeNode>   exNodes   = new List <ExchangeNode>();
                List <ExchangeMember> exMembers = new List <ExchangeMember>();

                Dictionary <string, bool> ids = new Dictionary <string, bool>();

                foreach (XmlNode nd in nodes)
                {
                    string id       = nd.SelectSingleNode("ChartId").InnerText.Trim();
                    string parentId = nd.SelectSingleNode("parentid").InnerText.Trim();
                    string title    = nd.SelectSingleNode("title").InnerText.Trim();
                    string username = nd.SelectSingleNode("melicode").InnerText.Trim();
                    string isAdmin  = nd.SelectSingleNode("IsManagement").InnerText.Trim();

                    long val = 0;
                    if (!long.TryParse(id, out val) || val <= 0)
                    {
                        id = null;
                    }
                    if (!long.TryParse(parentId, out val) || val <= 0)
                    {
                        parentId = null;
                    }
                    if (!long.TryParse(username, out val) || val <= 0)
                    {
                        username = string.Empty;
                    }
                    if (!long.TryParse(isAdmin, out val) || val <= 0)
                    {
                        isAdmin = string.Empty;
                    }

                    if (!string.IsNullOrEmpty(id) && !string.IsNullOrEmpty(title) &&
                        !exNodes.Any(u => u.AdditionalID == id))
                    {
                        exNodes.Add(new ExchangeNode()
                        {
                            AdditionalID       = id,
                            ParentAdditionalID = parentId,
                            Name = title
                        });
                    }

                    if (!string.IsNullOrEmpty(id) && !string.IsNullOrEmpty(username) &&
                        !exMembers.Any(u => u.NodeAdditionalID == id && u.UserName == username))
                    {
                        exMembers.Add(new ExchangeMember()
                        {
                            NodeTypeAdditionalID = depTypeAddId,
                            NodeAdditionalID     = id,
                            UserName             = username,
                            IsAdmin = !string.IsNullOrEmpty(isAdmin) && isAdmin != "0"
                        });
                    }
                }

                List <Guid> nIds = new List <Guid>();

                DEController.update_nodes(applicationId, exNodes, null, depTypeAddId,
                                          Guid.Parse("6B9E8414-C1EA-4E59-8AA8-34B4BCEB74E7"), ref nIds);

                for (int i = 0; i < exMembers.Count;)
                {
                    List <ExchangeMember> exLst = new List <ExchangeMember>();

                    for (int j = 0; j < 200 && i < exMembers.Count; ++j)
                    {
                        exLst.Add(exMembers[i++]);
                    }

                    DEController.update_members(applicationId, exLst);
                }
            }
            catch (Exception ex)
            {
                LogController.save_error_log(applicationId, null, "job_update_dep_and_members_esf_webservice", ex, ModuleIdentifier.Jobs);
            }
        }
        private static void update_users(Guid applicationId)
        {
            string nodeTypeAdditionalId = "2246"; //کد کلاس مناطق
            Guid?  nodeTypeId           = CNController.get_node_type_id(applicationId, nodeTypeAdditionalId);

            if (!nodeTypeId.HasValue)
            {
                return;
            }

            Dictionary <string, string> codes = new Dictionary <string, string>(); //Key: HRIS Code, Value: RaaiVan AdditionalID

            codes["83"] = "10028";                                                 //منطقه کرمانشاه
            codes["76"] = "10035";                                                 //منطقه هرمزگان
            codes["17"] = "10030";                                                 //منطقه گلستان
            codes["44"] = "10012";                                                 //منطقه آذربایجان غربی
            codes["63"] = "10019";                                                 //منطقه خوزستان
            codes["35"] = "10037";                                                 //منطقه یزد
            codes["86"] = "10034";                                                 //منطقه مرکزی
            codes["34"] = "10027";                                                 //منطقه کرمان
            codes["45"] = "10006";                                                 //منطقه اردبیل
            codes["77"] = "10013";                                                 //منطقه بوشهر
            codes["25"] = "10025";                                                 //منطقه قم
            codes["24"] = "10020";                                                 //منطقه زنجان
            codes["13"] = "10031";                                                 //منطقه گیلان
            codes["38"] = "10015";                                                 //منطقه چهار محال و بختیاری
            codes["15"] = "10033";                                                 //منطقه مازندران
            codes["41"] = "10010";                                                 //منطقه آذربایجان شرقی
            codes["56"] = "10016";                                                 //منطقه خراسان جنوبی
            codes["23"] = "10021";                                                 //منطقه سمنان
            codes["31"] = "10007";                                                 //منطقه اصفهان
            codes["54"] = "10022";                                                 //منطقه سیستان و بلوچستان
            codes["10"] = "10003";                                                 //شرکت مخابرات ایران
            codes["58"] = "10018";                                                 //منطقه خراسان شمالی
            codes["87"] = "10026";                                                 //منطقه کردستان
            codes["28"] = "10024";                                                 //منطقه قزوین
            codes["66"] = "10032";                                                 //منطقه لرستان
            codes["81"] = "10036";                                                 //منطقه همدان
            codes["84"] = "10009";                                                 //منطقه ایلام
            codes["74"] = "10029";                                                 //منطقه کهگیلویه و بویراحمد
            codes["51"] = "10017";                                                 //منطقه خراسان رضوی
            codes["71"] = "10023";                                                 //منطقه فارس
            codes["92"] = "10005";                                                 //شرکت مدیریت املاک( سامان سازه غدیر)
            codes["21"] = "10014";                                                 //منطقه تهران

            /*
             * codes[""] = "10008"; //منطقه البرز
             * codes[""] = "10001"; //شرکت گسترش خدمات ارتباطات کاراشاب
             */

            codes.Keys.ToList().ForEach(key =>
            {
                List <ExchangeUser> users = get_useres(applicationId, key);

                if (users.Count == 0)
                {
                    return;
                }

                Guid nodeId = CNController.get_node_id(applicationId, codes[key], nodeTypeId.Value);

                if (nodeId == Guid.Empty)
                {
                    return;
                }

                List <NodeMember> admins = CNController.get_members(applicationId, nodeId, null, true);

                List <ExchangeMember> members = new List <ExchangeMember>();

                users.ForEach(u => members.Add(new ExchangeMember()
                {
                    NodeTypeAdditionalID = nodeTypeAdditionalId,
                    NodeAdditionalID     = codes[key],
                    UserName             = u.UserName,
                    IsAdmin = admins.Any(m => m.Member.UserName.ToLower() == u.UserName.ToLower())
                }));

                PublicMethods.split_list <ExchangeUser>(users, 200, items => {
                    DEController.update_users(applicationId, items);
                }, 2000);

                PublicMethods.split_list <ExchangeMember>(members, 200, items => {
                    DEController.update_members(applicationId, items);
                }, 2000);

                //Save Log
                LogController.save_error_log(applicationId, null, "update_users_with_hris",
                                             "Code: " + key + ", Count: " + members.Count.ToString(), ModuleIdentifier.Jobs, LogLevel.Trace);
                //end of Save Log
            });
        }