Esempio n. 1
0
        public void Constructor()
        {
            var result = new EmployeeChange(_employee, _employee, "SomeDetails");

            Assert.IsTrue(result.Date - DateTime.Now < new TimeSpan(0, 0, 0, 2));
            Assert.AreEqual(result.Details, "SomeDetails");
        }
Esempio n. 2
0
        public void CopyConstructor()
        {
            var temp = new EmployeeChange(_employee, _employee, "SomeDetails");

            temp.Id = 2;
            var result = new EmployeeChange(temp);

            Assert.AreEqual(result.Date, temp.Date);
            Assert.AreEqual(result.Employee, temp.Employee);
            Assert.AreEqual(result.Details, temp.Details);
            Assert.AreEqual(result.Id, temp.Id);
        }
Esempio n. 3
0
        private void compare(List <Employee> list1, List <Employee> list2)
        {
            Dictionary <string, Employee> old     = new Dictionary <string, MainForm.Employee>();
            Dictionary <string, Employee> current = new Dictionary <string, MainForm.Employee>();
            Dictionary <string, List <EmployeeChange> > changeList = new Dictionary <string, List <EmployeeChange> >();

            foreach (Employee item in list1)
            {
                old.Add(item.alias, item);
            }

            foreach (Employee item in list2)
            {
                current.Add(item.alias, item);
            }

            foreach (Employee item in list1)
            {
                if (!current.ContainsKey(item.alias))
                {
                    EmployeeChange change = new EmployeeChange();
                    change.current = item;
                    change.type    = "QUIT";
                    change.old     = item.title;
                    if (!changeList.ContainsKey(change.current.alias))
                    {
                        changeList.Add(change.current.alias, new List <EmployeeChange>());
                    }
                    changeList[change.current.alias].Add(change);
                }
            }

            try {
                foreach (Employee item in list2)
                {
                    if (!old.ContainsKey(item.alias))
                    {
                        EmployeeChange change = new EmployeeChange();
                        change.current = item;
                        change.type    = "NEW";

                        if (!changeList.ContainsKey(change.current.alias))
                        {
                            changeList.Add(change.current.alias, new List <EmployeeChange>());
                        }
                        changeList[change.current.alias].Add(change);
                        continue;
                    }

                    if (old[item.alias].boss != item.boss)
                    {
                        EmployeeChange change = new EmployeeChange();
                        change.current = item;
                        change.type    = "BOSS CNG";
                        change.old     = old[item.alias].boss;

                        if (!changeList.ContainsKey(change.current.alias))
                        {
                            changeList.Add(change.current.alias, new List <EmployeeChange>());
                        }
                        changeList[change.current.alias].Add(change);
                    }

                    if (old[item.alias].org != item.org)
                    {
                        EmployeeChange change = new EmployeeChange();
                        change.current = item;
                        change.type    = "ORG CNG";
                        change.old     = old[item.alias].org;

                        if (!changeList.ContainsKey(change.current.alias))
                        {
                            changeList.Add(change.current.alias, new List <EmployeeChange>());
                        }
                        changeList[change.current.alias].Add(change);
                    }

                    if (old[item.alias].office != item.office)
                    {
                        EmployeeChange change = new EmployeeChange();
                        change.current = item;
                        change.type    = "OFFICE CNG";
                        change.old     = old[item.alias].office;

                        if (!changeList.ContainsKey(change.current.alias))
                        {
                            changeList.Add(change.current.alias, new List <EmployeeChange>());
                        }
                        changeList[change.current.alias].Add(change);
                    }

                    if (old[item.alias].title != item.title)
                    {
                        EmployeeChange change = new EmployeeChange();
                        change.current = item;
                        change.type    = "TITLE CNG";
                        change.old     = simpleTitle(old[item.alias].title);
                        string currentTitle = simpleTitle(item.title);

                        if (!changeList.ContainsKey(change.current.alias))
                        {
                            changeList.Add(change.current.alias, new List <EmployeeChange>());
                        }
                        changeList[change.current.alias].Add(change);
                    }

                    if (old[item.alias].email != item.email)
                    {
                        EmployeeChange change = new EmployeeChange();
                        change.current = item;
                        change.type    = "EMAIL CNG";
                        change.old     = old[item.alias].email;

                        if (!changeList.ContainsKey(change.current.alias))
                        {
                            changeList.Add(change.current.alias, new List <EmployeeChange>());
                        }
                        changeList[change.current.alias].Add(change);
                    }

                    if (old[item.alias].name != item.name)
                    {
                        EmployeeChange change = new EmployeeChange();
                        change.current = item;
                        change.type    = "NAME CNG";
                        change.old     = old[item.alias].name;

                        if (!changeList.ContainsKey(change.current.alias))
                        {
                            changeList.Add(change.current.alias, new List <EmployeeChange>());
                        }
                        changeList[change.current.alias].Add(change);
                    }

                    if (old.ContainsKey(item.alias) && old[item.alias].surname != item.surname)
                    {
                        EmployeeChange change = new EmployeeChange();
                        change.current = item;
                        change.type    = "NAME CNG";
                        change.old     = old[item.alias].surname;

                        if (!changeList.ContainsKey(change.current.alias))
                        {
                            changeList.Add(change.current.alias, new List <EmployeeChange>());
                        }
                        changeList[change.current.alias].Add(change);
                    }

                    if (old[item.alias].chtName != item.chtName)
                    {
                        EmployeeChange change = new EmployeeChange();
                        change.current = item;
                        change.type    = "NAME CNG";
                        change.old     = old[item.alias].chtName;

                        if (!changeList.ContainsKey(change.current.alias))
                        {
                            changeList.Add(change.current.alias, new List <EmployeeChange>());
                        }
                        changeList[change.current.alias].Add(change);
                    }
                }
            } catch (Exception e) {
            }
            int newer   = 0;
            int quiter  = 0;
            int bossCng = 0;
            int nameCng = 0;
            Dictionary <string, int> titleChange     = new Dictionary <string, int>();
            Dictionary <string, int> titleChangeOrg  = new Dictionary <string, int>();
            Dictionary <string, int> quitTitle       = new Dictionary <string, int>();
            Dictionary <string, int> quitTitleOrg    = new Dictionary <string, int>();
            Dictionary <string, int> newerTitle      = new Dictionary <string, int>();
            Dictionary <string, int> newerTitleOrg   = new Dictionary <string, int>();
            Dictionary <string, int> bossChgTitle    = new Dictionary <string, int>();
            Dictionary <string, int> bossChgTitleOrg = new Dictionary <string, int>();

            try {
                foreach (List <EmployeeChange> item in changeList.Values)
                {
                    foreach (EmployeeChange subitem in item)
                    {
                        if (subitem.type == "NEW")
                        {
                            newer++;
                            if (subitem.current != null)
                            {
                                if (!newerTitle.ContainsKey(subitem.current.title))
                                {
                                    newerTitle.Add(subitem.current.title, 1);
                                }
                                else
                                {
                                    newerTitle[subitem.current.title]++;
                                }

                                string org = simpleOrg(subitem.current.org);
                                if (!newerTitleOrg.ContainsKey(org))
                                {
                                    newerTitleOrg.Add(org, 1);
                                }
                                else
                                {
                                    newerTitleOrg[org]++;
                                }
                            }
                        }
                        else if (subitem.type == "QUIT")
                        {
                            quiter++;
                            if (subitem.old != null)
                            {
                                if (!quitTitle.ContainsKey(subitem.old))
                                {
                                    quitTitle.Add(subitem.old, 1);
                                }
                                else
                                {
                                    quitTitle[subitem.old]++;
                                }

                                string org = simpleOrg(subitem.current.org);
                                if (!quitTitleOrg.ContainsKey(org))
                                {
                                    quitTitleOrg.Add(org, 1);
                                }
                                else
                                {
                                    quitTitleOrg[org]++;
                                }
                            }
                        }
                        else if (subitem.type == "BOSS CNG")
                        {
                            bossCng++;
                            if (subitem.current != null)
                            {
                                if (!bossChgTitle.ContainsKey(subitem.current.title))
                                {
                                    bossChgTitle.Add(subitem.current.title, 1);
                                }
                                else
                                {
                                    bossChgTitle[subitem.current.title]++;
                                }

                                string org = simpleOrg(subitem.current.org);
                                if (!bossChgTitleOrg.ContainsKey(org))
                                {
                                    bossChgTitleOrg.Add(org, 1);
                                }
                                else
                                {
                                    bossChgTitleOrg[org]++;
                                }
                            }
                        }
                        else if (subitem.type == "NAME CNG")
                        {
                            nameCng++;
                        }
                        else if (subitem.type == "TITLE CNG")
                        {
                            string currentTitle = simpleTitle(subitem.current.title);
                            if (subitem.old != currentTitle)
                            {
                                string str = currentTitle;
                                string org = simpleOrg(subitem.current.org);

                                if (!titleChangeOrg.ContainsKey(org))
                                {
                                    titleChangeOrg.Add(org, 1);
                                }
                                else
                                {
                                    titleChangeOrg[org]++;
                                }

                                if (!titleChange.ContainsKey(str))
                                {
                                    titleChange.Add(str, 0);
                                }
                                titleChange[str]++;
                            }
                            else
                            {
                            }
                        }
                    }
                }
            } catch {
            }

            try {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("新來的: " + newer);
                sb.AppendLine(getTitleOrderCount(newerTitle));
                sb.AppendLine(getOrgDistr(newerTitleOrg));
                sb.AppendLine("-----------------------------------------");
                sb.AppendLine("走掉的: " + quiter);
                sb.AppendLine(getTitleOrderCount(quitTitle));
                sb.AppendLine(getOrgDistr(quitTitleOrg));
                sb.AppendLine("-----------------------------------------");
                sb.AppendLine("換名字: " + nameCng);
                sb.AppendLine("換老闆: " + bossCng);
                sb.AppendLine(getTitleOrderCount(bossChgTitle));
                sb.AppendLine(getOrgDistr(bossChgTitleOrg));
                sb.AppendLine("-----------------------------------------");
                int titleCngCount = 0;
                foreach (int item in titleChange.Values)
                {
                    titleCngCount += item;
                }
                sb.AppendLine("升官: " + titleCngCount + " / " + old.Count + " (" + string.Format("{0:P}", (float)titleCngCount / old.Count) + ")");
                sb.AppendLine(getTitleOrderCount(titleChange));
                sb.AppendLine(getOrgDistr(titleChangeOrg));
                chagneTextBox.Text = sb.ToString();
                sb.AppendLine("-----------------------------------------");
            } catch {
            }
        }