Beispiel #1
0
        private void MemberTree_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            MemberNode node = MemberTree.GetNodeAt(e.Location) as MemberNode;

            if (node == null)
            {
                return;
            }

            OpMenuItem info = new OpMenuItem(node.UserID, 0);

            if (Locations.ActiveClientCount(node.UserID) > 0)
            {
                var im = ParentView.UI.GetService(ServiceIDs.IM) as IMUI;
                if (im != null)
                {
                    im.OpenIMWindow(info.UserID);
                }
            }
            else
            {
                var mail = ParentView.UI.GetService(ServiceIDs.Mail) as MailUI;
                if (mail != null)
                {
                    mail.OpenComposeWindow(info.UserID);
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// 获取部门所有成员,并以membertree的形式返回
        /// </summary>
        /// <param name="ds"></param>
        /// <returns></returns>
        private MemberTree GetAllMembers(DataSet ds)
        {
            MemberTree Department = new MemberTree();

            Department.Name = "电学部";

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                if (dr["部门"].ToString() == "电子部" && dr["在职状态"].ToString() != "False")
                {
                    //新建一个与datarow对应的子树
                    MemberTree Company = new MemberTree();
                    Company.Name     = dr["分公司"].ToString();
                    Company.Children = new List <MemberTree>();
                    MemberTree Group = new MemberTree();
                    Group.Name     = dr["组别"].ToString();
                    Group.Children = new List <MemberTree>();
                    MemberTree Member = new MemberTree();
                    Member.Name = dr["姓名"].ToString();

                    Group.Children.Add(Member);
                    Company.Children.Add(Group);

                    //将子树合并到部门树中去
                    Department.Add(Company);
                }
            }
            return(Department);
        }
Beispiel #3
0
        private void InitialWeChat()
        {
            InitialTree(userManager.UserInfo.InitialUrl, true);
            StatusNotifyRequestModel snrm = StatusNotifyRequestModel.Create(userManager.UserInfo);

            string value = HttpHelper.GetResponseValue(userManager.UserInfo.StatusNotifyUrl, HttpMethod.POST, JsonConvert.SerializeObject(snrm), userManager.UserInfo.Cookies);

            value = HttpHelper.GetResponseValue(userManager.UserInfo.ContactUrl, HttpMethod.GET, null, userManager.UserInfo.Cookies);

            using (StreamWriter sw = new StreamWriter(Path + "\\getcontact.txt", true))
                sw.Write(value);

            MemberTree memberTree = JsonConvert.DeserializeObject <MemberTree>(value);

            BatchRequestModel brm = BatchRequestModel.Create(userManager.UserInfo);

            for (int i = 0; i < memberTree.MemberCount; ++i)
            {
                brm.Count++;
                brm.List.AddLast(new BatchItem {
                    UserName = memberTree.MemberList[i].UserName
                });
                if (i > 0 && i % 50 == 0)
                {
                    string json = JsonConvert.SerializeObject(brm);
                    using (StreamWriter sw = new StreamWriter(Path + "\\batch.txt", true))
                    {
                        sw.WriteLine(json);
                    }

                    value = HttpHelper.GetResponseValue(userManager.UserInfo.BatchContactUrl, HttpMethod.POST, json, userManager.UserInfo.Cookies);
                    InitialContactTree tree = JsonConvert.DeserializeObject <InitialContactTree>(value);
                    tree.Initial();
                    userManager.UserInfo.SetContact(tree.ContactList);

                    brm.Count = 0;
                    brm.List.Clear();

                    Thread.Sleep(100);
                }
            }

            if (brm.Count > 0)
            {
                string json = JsonConvert.SerializeObject(brm);
                using (StreamWriter sw = new StreamWriter(Path + "\\batch.txt", true))
                {
                    sw.WriteLine(json);
                }

                value = HttpHelper.GetResponseValue(userManager.UserInfo.BatchContactUrl, HttpMethod.POST, json, userManager.UserInfo.Cookies);
                using (StreamWriter sw = new StreamWriter(Path + "\\member.txt", true))
                {
                    sw.WriteLine(value);
                }
                InitialContactTree tree = JsonConvert.DeserializeObject <InitialContactTree>(value);
                tree.Initial();
                userManager.UserInfo.SetContact(tree.ContactList);
            }
        }
Beispiel #4
0
        /// <summary>
        /// 获取部门所有成员,并以membertree的形式返回
        /// </summary>
        /// <param name="ds"></param>
        /// <returns></returns>
        private MemberTree GetAllMembers(string department)
        {
            MemberTree Department = new MemberTree();

            Department.Name = department;

            using (mainEntities db = new mainEntities())
            {
                List <staff> staffs = new List <staff>();
                staffs = db.staffs.Where(x => x.部门 == department).ToList <staff>();;
                foreach (var item in staffs)
                {
                    //新建一个与datarow对应的子树
                    MemberTree Company = new MemberTree();
                    Company.Name     = item.分公司;
                    Company.Children = new List <MemberTree>();
                    MemberTree Group = new MemberTree();
                    Group.Name     = item.组别;
                    Group.Children = new List <MemberTree>();
                    MemberTree Member = new MemberTree();
                    //Member.Name = dr["姓名"].ToString()+"("+dr["系统账号"].ToString()+")";
                    Member.Name = item.Name;

                    Member.Account = item.Account;

                    Group.Children.Add(Member);
                    Company.Children.Add(Group);

                    //将子树合并到部门树中去
                    Department.Add(Company);
                }
            }

            return(Department);
        }
Beispiel #5
0
        public void TestMemberTree()
        {
            string path = AppDomain.CurrentDomain.BaseDirectory;
            string json = string.Empty;

            using (StreamReader sr = new StreamReader(path + "\\data\\MemberTree.json"))
            {
                json = sr.ReadToEnd();
            }

            MemberTree tree = JsonConvert.DeserializeObject <MemberTree>(json);
        }
Beispiel #6
0
        private AttorneyStatus GetAttorneyStatusofOne(MemberTree mt)
        {
            DataRow[] drs    = ds.Tables[0].Select("承办人 LIKE '" + mt.Name + "'");
            DataSet   dstemp = new DataSet();

            dstemp = ds.Clone();
            foreach (DataRow dr in drs)
            {
                dstemp.Tables[0].Rows.Add(dr.ItemArray);
            }
            AttorneyStatus ats = new AttorneyStatus(dstemp);

            return(ats);
        }
Beispiel #7
0
 internal Class(TypeBuilder typeBuilder, string name, DynamicAssembly assembly, Type mappingType, IEnumerable <PropertyBinding> bindings)
 {
     _typeBuilder           = typeBuilder;
     Name                   = name;
     _assembly              = assembly;
     _mappingType           = mappingType;
     _bindings              = bindings;
     _isInternal            = mappingType == null;
     _mappingTypeMember     = new MemberTree(_mappingType);
     _propertyBuilders      = new Dictionary <string, PropertyBuilder>(StringComparer.OrdinalIgnoreCase);
     _subClasses            = new Dictionary <string, Class>();
     _alternativeProperties = new Dictionary <string, Class>();
     _ctorBuilder           = DeclareConstructor();
 }
Beispiel #8
0
        /// <summary>
        /// 如果是叶子节点,则获取指标详情
        /// </summary>
        /// <param name="mt"></param>
        /// <returns></returns>
        private ViewModel.AttorneyIndex GetAttorneyIndexofOne(MemberTree mt)
        {
            DataRow[] drs    = ds.Tables[0].Select("承办人 LIKE '" + mt.Name + "'");
            DataSet   dstemp = new DataSet();

            dstemp = ds.Clone();
            foreach (DataRow dr in drs)
            {
                dstemp.Tables[0].Rows.Add(dr.ItemArray);
            }
            ViewModel.AttorneyIndex aii = new ViewModel.AttorneyIndex(dstemp, dpStart.SelectedDate, dpEnd.SelectedDate);
            aii.Name            = mt.Name;
            aii.PercentofExceed = Math.Round(aii.PercentofExceed, 3);
            return(aii);
        }
Beispiel #9
0
        private void memberTree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e)
        {
            MemberTree   tvi    = (MemberTree)memberTree.SelectedItem;
            List <staff> staffs = new List <staff>();

            switch (tvi.NodeType)
            {
            case "专业部":
                using (mainEntities db = new mainEntities())
                {
                    staffs = db.staffs.Where(x => x.部门 == tvi.Name).ToList <staff>();
                }
                break;

            case "分公司":
                using (mainEntities db = new mainEntities())
                {
                    staffs = db.staffs.Where(x => x.部门 == tvi.Department && x.分公司 == tvi.Company).ToList <staff>();
                }
                break;

            case "组":
                using (mainEntities db = new mainEntities())
                {
                    staffs = db.staffs.Where(x => x.部门 == tvi.Department && x.分公司 == tvi.Company && x.组别 == tvi.Name).ToList <staff>();
                }
                break;

            default:
                using (mainEntities db = new mainEntities())
                {
                    staffs = db.staffs.Where(x => x.Name == tvi.Name).ToList <staff>();
                }
                break;
            }

            using (mainEntities db = new mainEntities())
            {
                foreach (var staff in staffs)
                {
                    List <Task> taskstemp = db.Tasks.Where(x => x.Attorney == staff.Name).ToList <Task>();
                    tasks = tasks.Concat(taskstemp).ToList();
                }
            }
        }
Beispiel #10
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                if (!Singleton <BITCurrentSession> .Inst.isLoginUser)
                {
                    Response.Redirect("~/Admin/Login.aspx");
                }
                else
                {
                    var            ParentCodeId = Singleton <BITCurrentSession> .Inst.SessionMember.CodeId;
                    List <MEMBERS> lstMember    = new List <MEMBERS>();

                    if (Singleton <BITCurrentSession> .Inst.SessionMember.Username.ToUpper().IndexOf("ADMIN") > 0)
                    {
                        lstMember = Singleton <MEMBERS_BC> .Inst.Tree_GetData(string.Empty, string.Empty, string.Empty, string.Empty, string.Empty);
                    }
                    else
                    {
                        lstMember = Singleton <MEMBERS_BC> .Inst.Tree_GetItem_By_CodeId(ParentCodeId);
                    }

                    List <MemberTree> lstTreemember = new List <MemberTree>();
                    foreach (var _item in lstMember)
                    {
                        MemberTree itemTree = new MemberTree(_item);
                        lstTreemember.Add(itemTree);
                    }
                    if (lstMember != null && lstMember.Count > 0)
                    {
                        MemberTree root = new MemberTree();
                        root.CodeId_Sponsor = null;
                        root.CodeId         = Singleton <BITCurrentSession> .Inst.SessionMember.CodeId_Sponsor;
                        root.Fullname       = "Đây là root node";
                        root.IsLock         = 1;
                        lstTreemember.Add(root);


                        var tree = lstTreemember.ToTree();
                        ltrTree.Text = this.ShowTree(tree.Childens);
                    }
                }
            }
        }
Beispiel #11
0
        private static void PopulateChildren2(MemberTree node, List <MemberTree> all)
        {
            var childs = all.Where(x => x.CodeId_Sponsor == node.CodeId).ToList();

            foreach (var item in childs)
            {
                node.ExistsChild = true;

                node.Childens.Add(item);
            }

            foreach (var item in childs)
            {
                all.Remove(item);
            }

            foreach (var item in childs)
            {
                PopulateChildren2(item, all);
            }
        }
Beispiel #12
0
        /// <summary>
        /// 获取某个节点上的所有叶子节点,也即所有的代理人
        /// </summary>
        /// <param name="mt"></param>
        /// <returns></returns>
        private List <MemberTree> GetAllLeafofOneNode(MemberTree mt)
        {
            List <MemberTree> leafs = new List <MemberTree>();

            if (mt.Children != null)
            {
                foreach (MemberTree mtchild in mt.Children)
                {
                    foreach (MemberTree mtleaf in GetAllLeafofOneNode(mtchild))
                    {
                        leafs.Add(mtleaf);
                    }
                }
            }
            else
            {
                leafs.Add(mt);
            }

            return(leafs);
        }
Beispiel #13
0
        /// <summary>
        /// 选中一个节点时,在列表区展示相应范围的代理人
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MemberTree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e)
        {
            MemberTree   tvi    = (MemberTree)memberTree.SelectedItem;
            List <staff> staffs = new List <staff>();

            switch (tvi.NodeType)
            {
            case "专业部":
                using (mainEntities db = new mainEntities())
                {
                    staffs = db.staffs.Where(x => x.部门 == tvi.Name).ToList <staff>();
                }
                break;

            case "分公司":
                using (mainEntities db = new mainEntities())
                {
                    staffs = db.staffs.Where(x => x.部门 == tvi.Department && x.分公司 == tvi.Company).ToList <staff>();
                }
                break;

            case "组":
                using (mainEntities db = new mainEntities())
                {
                    staffs = db.staffs.Where(x => x.部门 == tvi.Department && x.分公司 == tvi.Company && x.组别 == tvi.Name).ToList <staff>();
                }
                break;

            default:
                using (mainEntities db = new mainEntities())
                {
                    staffs = db.staffs.Where(x => x.Name == tvi.Name).ToList <staff>();
                }
                break;
            }
            dgStaff.ItemsSource = staffs;
        }
Beispiel #14
0
        void Chat_MembersUpdate()
        {
            MemberTree.BeginUpdate();

            MemberTree.Nodes.Clear();
            NodeMap.Clear();

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

            Room.Members.LockReading(delegate()
            {
                if (Room.Members.SafeCount == 0)
                {
                    MemberTree.EndUpdate();
                    return;
                }

                users = Room.Members.ToList();

                TreeListNode root = MemberTree.virtualParent;

                if (Room.Host != 0)
                {
                    root = new MemberNode(this, Room.Host);

                    if (Room.IsLoop)
                    {
                        ((MemberNode)root).IsLoopRoot = true;
                    }
                    else
                    {
                        NodeMap[Room.Host] = root as MemberNode;
                    }

                    UpdateNode(root as MemberNode);

                    MemberTree.Nodes.Add(root);
                    root.Expand();
                }

                foreach (ulong id in Room.Members)
                {
                    if (id != Room.Host)
                    {
                        // if they left the room dont show them
                        if (!ChatService.IsCommandRoom(Room.Kind))
                        {
                            if (Room.Members.SafeCount == 0)
                            {
                                continue;
                            }
                        }

                        MemberNode node = new MemberNode(this, id);
                        NodeMap[id]     = node;
                        UpdateNode(node);
                        GuiUtils.InsertSubNode(root, node);
                    }
                }
            });

            MemberTree.EndUpdate();

            if (VoiceButton != null)
            {
                AudioDirection direction = AudioDirection.Both;

                if (ParentView.ViewHigh != null && ParentView.ViewLow != null)
                {
                    if (Room.Kind == RoomKind.Command_High || Room.Kind == RoomKind.Live_High)
                    {
                        direction = AudioDirection.Left;
                    }

                    else if (Room.Kind == RoomKind.Command_Low || Room.Kind == RoomKind.Live_Low)
                    {
                        direction = AudioDirection.Right;
                    }
                }

                VoiceButton.SetUsers(users, direction);
            }
        }
Beispiel #15
0
        void UpdateNode(MemberNode node)
        {
            if (!Room.Members.SafeContains(node.UserID))
            {
                if (node.IsLoopRoot)
                {
                    node.Text = "Trust Loop";
                }

                return;
            }

            // get if node is connected
            bool connected = (Room.Active &&
                              (node.UserID == Core.UserID || Chat.Network.RudpControl.GetActiveSessions(node.UserID).Count > 0));

            // get away status
            bool away = false;


            foreach (ClientInfo info in Core.Locations.GetClients(node.UserID))
            {
                if (info != null && info.Data.Away)
                {
                    away = true;
                }
            }


            node.Text = Core.GetName(node.UserID);

            if (away)
            {
                node.Text += " [away]";
            }


            // bold if local
            if (node.UserID == Core.UserID)
            {
                node.Font = new Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            }


            // color based on connect status
            Color foreColor = connected ? Color.Black : Color.Gray;

            if (node.ForeColor == foreColor)
            {
                MemberTree.Invalidate();
                return; // no change
            }

            /*if (!node.Unset) // on first run don't show everyone as joined
             * {
             *  string message = "";
             *
             *  if (connected)
             *      message = Core.GetName(node.UserID) + " has joined the room";
             *  else
             *      message = Core.GetName(node.UserID) + " has left the room";
             *
             *
             *  // dont log
             *  Chat_Update(new ChatMessage(Core, message, true));
             * }*/

            node.Unset = false;

            node.ForeColor = foreColor;
            MemberTree.Invalidate();
        }
Beispiel #16
0
        /// <summary>
        /// 点击节点的处理逻辑:获取该节点下的所有人名,并生成指标数据填入【详情列表】中。
        /// 同时将汇总数据填入【指标详情区】
        /// 同时将案件情况填入【案件情况区】
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MemberTree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e)
        {
            //生成指标数据填入【详情列表】中
            List <MemberTree> leafs = new List <MemberTree>();                             //创建叶子列表用于保存所有的叶子节点
            MemberTree        mt    = new MemberTree();                                    //创建成员树对象,用于保存所选择的节点数实例
            List <ViewModel.AttorneyIndex> indices = new List <ViewModel.AttorneyIndex>(); //创建指标详情列表,用于保存所选择的节点下的所有叶子节点的指标详情
            List <AttorneyStatus>          atss    = new List <AttorneyStatus>();          //创建案件情况列表,用于保存所选择的节点下的所有叶子节点的案件情况

            mt    = (MemberTree)memberTree.SelectedItem;
            leafs = GetAllLeafofOneNode(mt);

            foreach (MemberTree leaf in leafs)
            {
                indices.Add(GetAttorneyIndexofOne(leaf));
                atss.Add(GetAttorneyStatusofOne(leaf));
            }

            dgDetail.ItemsSource = indices;

            //将汇总数据填入【指标详情区】
            ViewModel.AttorneyIndex indextotal = new ViewModel.AttorneyIndex();
            foreach (ViewModel.AttorneyIndex index in indices)
            {
                indextotal.FirstVirsionWeight       += index.FirstVirsionWeight;
                indextotal.DoneWeight               += index.DoneWeight;
                indextotal.NumofDoneOA              += index.NumofDoneOA;
                indextotal.NumofHandled             += index.NumofHandled;
                indextotal.NumofExceedlimit         += index.NumofExceedlimit;
                indextotal.NumofExceedOutsidelimit  += index.NumofExceedOutsidelimit;
                indextotal.NumofEntrusted           += index.NumofEntrusted;
                indextotal.DaysofExceedlimit        += index.DaysofExceedlimit;
                indextotal.DaysofExceedOutsidelimit += index.DaysofExceedOutsidelimit;
                indextotal.TdsFirstVirsions          = indextotal.TdsFirstVirsions.Concat(index.TdsFirstVirsions).ToList();
                indextotal.TdsDone               = indextotal.TdsDone.Concat(index.TdsDone).ToList();
                indextotal.TdsDoneOA             = indextotal.TdsDoneOA.Concat(index.TdsDoneOA).ToList();
                indextotal.TdsEntrusted          = indextotal.TdsEntrusted.Concat(index.TdsEntrusted).ToList();
                indextotal.TdsExceedOutsidelimit = indextotal.TdsExceedlimit.Concat(index.TdsExceedOutsidelimit).ToList();
                indextotal.TdsExceedlimit        = indextotal.TdsExceedlimit.Concat(index.TdsExceedlimit).ToList();

                indextotal.TdsHandled = indextotal.TdsHandled.Concat(index.TdsHandled).ToList();
            }
            indextotal.PercentofExceed        = (double)indextotal.NumofExceedlimit / indextotal.NumofHandled;
            indextotal.PercentofExceedOutside = (double)indextotal.NumofExceedOutsidelimit / indextotal.NumofHandled;

            spIndex.DataContext = indextotal;

            //将汇总数据填入【案件情况区】
            AttorneyStatus atstotal = new AttorneyStatus();

            foreach (AttorneyStatus ats in atss)
            {
                atstotal.IntCN           += ats.IntCN;
                atstotal.IntForeign      += ats.IntForeign;
                atstotal.IntTodo         += ats.IntTodo;
                atstotal.IntFirstVirsion += ats.IntFirstVirsion;
                atstotal.IntAllOA        += ats.IntAllOA;
                atstotal.IntOAin30       += ats.IntOAin30;
                atstotal.TdsCN            = atstotal.TdsCN.Concat(ats.TdsCN).ToList();
                atstotal.TdsForeign       = atstotal.TdsForeign.Concat(ats.TdsForeign).ToList();
                atstotal.TdsFirstVirsions = atstotal.TdsFirstVirsions.Concat(ats.TdsFirstVirsions).ToList();
                atstotal.TdsTodo          = atstotal.TdsTodo.Concat(ats.TdsTodo).ToList();
                atstotal.TdsAllOA         = atstotal.TdsAllOA.Concat(ats.TdsAllOA).ToList();
                atstotal.TdsOAin30        = atstotal.TdsOAin30.Concat(ats.TdsOAin30).ToList();
            }

            spStatus.DataContext = atstotal;
        }
Beispiel #17
0
        private void MemberTree_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Right)
            {
                return;
            }

            MemberNode node = MemberTree.GetNodeAt(e.Location) as MemberNode;

            if (node == null)
            {
                return;
            }

            if (Core.Trust != null)
            {
                Core.Trust.Research(node.UserID, 0, false);
            }

            Core.Locations.Research(node.UserID);

            ContextMenuStripEx treeMenu = new ContextMenuStripEx();

            // views
            List <MenuItemInfo> quickMenus = new List <MenuItemInfo>();
            List <MenuItemInfo> extMenus   = new List <MenuItemInfo>();

            foreach (var service in ParentView.UI.Services.Values)
            {
                if (service is TrustService || service is BuddyService)
                {
                    continue;
                }

                service.GetMenuInfo(InterfaceMenuType.Quick, quickMenus, node.UserID, Room.ProjectID);

                service.GetMenuInfo(InterfaceMenuType.External, extMenus, node.UserID, Room.ProjectID);
            }

            if (quickMenus.Count > 0 || extMenus.Count > 0)
            {
                if (treeMenu.Items.Count > 0)
                {
                    treeMenu.Items.Add("-");
                }
            }

            foreach (MenuItemInfo info in quickMenus)
            {
                treeMenu.Items.Add(new OpMenuItem(node.UserID, Room.ProjectID, info.Path, info));
            }

            if (extMenus.Count > 0)
            {
                ToolStripMenuItem viewItem = new ToolStripMenuItem("Views", InterfaceRes.views);

                foreach (MenuItemInfo info in extMenus)
                {
                    viewItem.DropDownItems.SortedAdd(new OpMenuItem(node.UserID, Room.ProjectID, info.Path, info));
                }

                treeMenu.Items.Add(viewItem);
            }

            // add trust/buddy options at bottom
            quickMenus.Clear();

            ParentView.UI.Services[ServiceIDs.Buddy].GetMenuInfo(InterfaceMenuType.Quick, quickMenus, node.UserID, Room.ProjectID);

            if (ParentView.UI.Services.ContainsKey(ServiceIDs.Trust))
            {
                ParentView.UI.Services[ServiceIDs.Trust].GetMenuInfo(InterfaceMenuType.Quick, quickMenus, node.UserID, Room.ProjectID);
            }

            if (quickMenus.Count > 0)
            {
                treeMenu.Items.Add("-");
                foreach (MenuItemInfo info in quickMenus)
                {
                    treeMenu.Items.Add(new OpMenuItem(node.UserID, Room.ProjectID, info.Path, info));
                }
            }

            // show
            if (treeMenu.Items.Count > 0)
            {
                treeMenu.Show(MemberTree, e.Location);
            }
        }