예제 #1
0
        /// <summary>
        /// Get my team members' leaves
        /// </summary>
        /// <param name="employeeID">GUID of current supervisor</param>
        /// <returns>List of leaves</returns>
        public List <LeaveInfo> GetMyTeamLeaves(string employeeID, bool showAllRecords)
        {
            Log.Info(GlobalParams.StartGetTeamLeaves);
            List <LeaveInfo> leaves = null;

            try
            {
                DateTime start;
                int      month = DateTime.Now.Month;

                if (month == 1)
                {
                    start = new DateTime(DateTime.Now.Year, 1, 1);
                }
                else
                {
                    start = new DateTime(DateTime.Now.Year, month - 1, 1);
                }

                leaves = LeaveBLL.GetMyTeamLeaves(employeeID, start, DateTime.MaxValue, showAllRecords);
            }
            catch (Exception ex)
            {
                Log.Exception(ex.StackTrace);
                Log.Exception(ex.Message);
                throw ex;
            }
            Log.Info(GlobalParams.EndGetTeamLeaves);

            return(leaves);
        }
예제 #2
0
        /// <summary>
        /// 删除请假信息
        /// </summary>
        /// <param name="context"></param>
        private void Deleteinfo(HttpContext context)
        {
            string str = context.Request["idlist"];

            string []          strarr = str.Split(',');
            List <LeaveEntity> list   = new LeaveBLL().GetSelectAll();

            //循环判断是否有的信息已经审批过 如果有则不能删除记录
            for (int i = 0; i < strarr.Length; i++)
            {
                var date = from o in list
                           where o.LeaveID.ToString() == strarr[i]
                           where o.LeaveState != 3
                           select o;
                if (date.ToList().Count > 0)
                {
                    LoginHandler.contextResponseWrite(context, "checksuccess");
                    return;
                }
            }
            if (new LeaveBLL().GetDeleteInfoBylevidlist(str))
            {
                LoginHandler.contextResponseWrite(context, "delsuccess");
            }
            else
            {
                LoginHandler.contextResponseWrite(context, "delfailed");
            }
        }
예제 #3
0
        /// <summary>
        /// 请假审核信息
        /// </summary>
        /// <param name="context"></param>
        private void Selectbydept(HttpContext context)
        {
            string starttime = (context.Request["starttime"]);
            string endtime   = (context.Request["endtime"]);

            if (user.RoleID != 4 || user.RoleID != 5)
            {
                List <LeaveEntity> list = null;
                if (starttime != "" && endtime != "")
                {
                    string str = " AND LeaveTime BETWEEN '" + starttime + "' AND '" + endtime + "'";
                    list = new LeaveBLL().GetSelectBydept(user.DepartmentName, str);
                }
                else
                {
                    list = new LeaveBLL().GetSelectBydept(user.DepartmentName, "");
                }


                LoginHandler.contextResponseWrite(context, list);
            }
            else
            {
                LoginHandler.contextResponseWrite(context, "error");
            }
            //throw new NotImplementedException();
        }
예제 #4
0
        public bool RecallLeave(string pkleaveInfoID, string employeeID)
        {
            Log.Info(GlobalParams.StartRecallLeave);
            bool result = false;

            try
            {
                EmailConfig.SetRootPath(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath);

                LeaveInfo leaveInfo = LeaveBLL.GetLeaveInfoByID(pkleaveInfoID);
                result = LeaveBLL.RecallLeave(pkleaveInfoID);
                Employee employee = EmployeeBLL.GetEmployeeByID(employeeID);
                if (result && EmailConfig.EmailTemplates.ContainsKey(EmailType.ApplyLeave.ToString()))
                {
                    Log.Info(GlobalParams.StartMail);
                    EmailContent ec = EmailConfig.EmailTemplates[EmailType.RecallLeave.ToString()];
                    // {0} - Manager First Name
                    // {1} - First Name
                    // {2} - Hours
                    // {3} - Leave Type
                    // {4} - Reason
                    // {5} - Description
                    // {6} - Start
                    // {7} - End
                    // {8} - CARSAddress
                    string emailBody = string.Format(ec.Body, employee.Manager.FirstName, employee.FirstName, leaveInfo.Hours,
                                                     leaveInfo.Type.Name + " Leave", leaveInfo.Reason, leaveInfo.Description,
                                                     leaveInfo.FirstStartTime.ToString(EmailConfig.TimeFormatInEmail),
                                                     leaveInfo.LastEndTime.ToString(EmailConfig.TimeFormatInEmail), EmailConfig.CARSAddress);
                    // {0} - First Name
                    // {1} - Hours
                    // {2} - Leave Type
                    string        emailTitle    = string.Format(ec.Title, employee.FirstName, leaveInfo.Hours, leaveInfo.Type.Name + " Leave");
                    string        employeeEmail = GetEmail(employee.Email);
                    string        managerEmail  = GetEmail(employee.Manager.Email);
                    List <string> ccList        = new List <string>();
                    ccList.Add(employeeEmail);
#if DEBUG
                    managerEmail = "*****@*****.**";
#endif
                    SendMail sender = new SendMail(managerEmail, ccList, EmailConfig.EmailAccount, emailBody, emailTitle, EmailConfig.Password, EmailConfig.Host);
                    sender.Send();
                    Log.Info(GlobalParams.EndMail);
                }
                else
                {
                    Log.Warn(GlobalParams.MailError);
                    throw new Exception(GlobalParams.MailError);
                }
            }
            catch (Exception ex)
            {
                Log.Exception(ex.StackTrace);
                Log.Exception(ex.Message);
                throw ex;
            }
            Log.Info(GlobalParams.EndRecallLeave);

            return(result);
        }
예제 #5
0
        /// <summary>
        /// 获取所有请假的信息记录
        /// </summary>
        /// <param name="context"></param>
        private void SelectLeaveinfo(HttpContext context)
        {
            string             starttime = (context.Request["starttime"]);
            string             endtime   = (context.Request["endtime"]);
            int                pagesize  = Convert.ToInt32(context.Request["limit"]);
            int                pageindex = Convert.ToInt32(context.Request["offset"]);
            int                count     = 0;
            List <LeaveEntity> list      = new LeaveBLL().GetBootstrapPageSelect(pageindex, pagesize, ref count);//GetAllInfo("")

            if (starttime != "" && endtime != "")
            {
                var datetime = from o in new LeaveBLL().GetSelectDate(starttime, endtime)
                               where o.UserID == user.UserID
                               select o;
                var json = new
                {
                    total = datetime.ToList().Count,//count,
                    rows  = datetime
                };
                LoginHandler.contextResponseWrite(context, json);
            }
            else
            {
                var date = from o in list
                           where o.UserID == user.UserID
                           select o;
                var json = new
                {
                    total = date.ToList().Count,//count,
                    rows  = date
                };
                LoginHandler.contextResponseWrite(context, json);
            }
        }
예제 #6
0
        /// <summary>
        /// Approve leave
        /// </summary>
        /// <param name="managerID">GUID of supervisor</param>
        /// <param name="leaveID">GUID of leave</param>
        /// <param name="status">Leave status</param>
        /// <returns>Approved leave</returns>
        public LeaveInfo ApproveLeave(string managerID, string leaveID, LeaveStatus status)
        {
            Log.Info(GlobalParams.StartApproveLeave);
            LeaveInfo result = null;

            try
            {
                result = LeaveBLL.ApproveLeave(managerID, leaveID, status);
                Employee employee = EmployeeBLL.GetEmployeeByID(result.FKSubmitEmployeeID.ToString());
                Employee manager  = EmployeeBLL.GetEmployeeByID(result.FKReportManagerID.ToString());
                if (result != null)
                {
                    Log.Info(GlobalParams.StartMail);
                    EmailConfig.SetRootPath(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath);
                    EmailContent ec = EmailConfig.EmailTemplates[EmailType.ApproveLeave.ToString()];
                    // {0} - First Name
                    // {1} - Manager First Name
                    // {2} - Hours
                    // {3} - Leave Type
                    // {4} - Reason
                    // {5} - Description
                    // {6} - Start
                    // {7} - End
                    // {8} - "Approved"
                    // {9} - ""
                    // {10} - CARSAddress
                    string emailBody = string.Format(ec.Body, employee.FirstName, manager.FirstName, result.Hours, result.Type.Name + " Leave", result.Reason, result.Description, result.FirstStartTime.ToString(EmailConfig.TimeFormatInEmail), result.LastEndTime.ToString(EmailConfig.TimeFormatInEmail), "Approved", "", EmailConfig.CARSAddress);
                    // {0} - First Name
                    // {1} - Hours
                    // {2} - Leave Type
                    // {3} - Manager First Name
                    // {4} - "Approved"
                    string emailTitle    = string.Format(ec.Title, employee.FirstName, result.Hours, result.Type.Name + " Leave", manager.FirstName, "Approved");
                    string employeeEmail = GetEmail(employee.Email);
                    string managerEmail  = GetEmail(employee.Manager.Email);
#if DEBUG
                    managerEmail = "*****@*****.**";
#endif
                    List <string> ccList = new List <string>();
                    ccList.Add(managerEmail);
                    SendMail sender = new SendMail(employeeEmail, ccList, EmailConfig.EmailAccount, emailBody, emailTitle, EmailConfig.Password, EmailConfig.Host);
                    sender.Send();
                    Log.Info(GlobalParams.EndMail);
                }
            }
            catch (Exception ex)
            {
                Log.Exception(ex.StackTrace);
                Log.Exception(ex.Message);
                throw ex;
            }
            Log.Info(GlobalParams.EndApproveLeave);

            return(result);
        }
예제 #7
0
        private static Employee PrepareData()
        {
            List <SearchCondition> conditions = new List <SearchCondition>();

            conditions.Add(SearchCondition.CreateSearchCondition("Email", "*****@*****.**", SearchComparator.Equal, SearchType.SearchString));
            Employee employee = CommonDAL <Employee> .GetSingleObject(conditions);

            List <TimeDurationInfo> list = new List <TimeDurationInfo>();

            list.Add(TimeDurationInfo.CreateTimeDurationInfo(DateTime.Now.AddDays(-1), DateTime.Now));

            for (int i = 0; i < 150; i++)
            {
                LeaveBLL.ApplyLeave(employee.PKEmployeeID.ToString(), "test multi thread", "Annual", "test multi thread", list);
            }

            return(employee);
        }
예제 #8
0
        /// <summary>
        /// Get leave types
        /// </summary>
        /// <returns>List of leave types</returns>
        public List <LeaveType> GetLeaveTypes()
        {
            Log.Info(GlobalParams.StartGetLeaveTypes);
            List <LeaveType> leaveTypes = null;

            try
            {
                leaveTypes = LeaveBLL.GetLeaveTypes();
            }
            catch (Exception ex)
            {
                Log.Exception(ex.StackTrace);
                Log.Exception(ex.Message);
                throw ex;
            }
            Log.Info(GlobalParams.EndGetLeaveTypes);

            return(leaveTypes);
        }
예제 #9
0
        /// <summary>
        /// Get employee's used sick leave hours
        /// </summary>
        /// <param name="employeeID">GUID of employee</param>
        /// <returns>Hours</returns>
        public int GetSickLeaveUsedHours(string employeeID)
        {
            Log.Info(GlobalParams.StartGetSickLeaveUsedHours);
            int result = 0;

            try
            {
                result = (int)LeaveBLL.GetUsedHours(employeeID, GlobalParams.SickLeave);
            }
            catch (Exception ex)
            {
                Log.Exception(ex.StackTrace);
                Log.Exception(ex.Message);
                throw ex;
            }
            Log.Info(GlobalParams.EndGetSickLeaveUsedHours);

            return(result);
        }
예제 #10
0
        /// <summary>
        /// Get my leaves
        /// </summary>
        /// <param name="employeeID">GUID of current employee</param>
        /// <returns>List of leaves</returns>
        public List <LeaveInfo> GetMyLeaves(string employeeID)
        {
            Log.Info(GlobalParams.StartGetPersonalLeaves);
            List <LeaveInfo> leaves = null;

            try
            {
                leaves = LeaveBLL.GetMyLeaves(employeeID, new DateTime(DateTime.Now.Year, 1, 1), DateTime.MaxValue);
            }
            catch (Exception ex)
            {
                Log.Exception(ex.StackTrace);
                Log.Exception(ex.Message);
                throw ex;
            }
            Log.Info(GlobalParams.EndGetPersonalLeaves);

            return(leaves);
        }
예제 #11
0
        /// <summary>
        /// Find leaves
        /// </summary>
        /// <param name="supervisor">Supervisor name</param>
        /// <param name="applicant">Applicant name</param>
        /// <param name="leaveTypeId">GUID of leave type</param>
        /// <param name="leaveStatus">Leave status</param>
        /// <param name="start">Start time</param>
        /// <param name="end">End time</param>
        /// <param name="supervisorIDs">GUIDs of supervisor</param>
        /// <returns>List of leaves</returns>
        public List <LeaveInfo> FindLeaves(string supervisor, string applicant, string leaveTypeId, string leaveStatus, DateTime start, DateTime end, string supervisorIDs)
        {
            Log.Info(GlobalParams.StartFindLeaves);
            List <LeaveInfo> result = null;

            try
            {
                if (leaveStatus == "All")
                {
                    leaveStatus = "None";
                }
                LeaveStatus status = (LeaveStatus)Enum.Parse(typeof(LeaveStatus), leaveStatus);
                result = LeaveBLL.FindLeaves(supervisor, applicant, leaveTypeId, (int)status, start, end, supervisorIDs);
            }
            catch (Exception ex)
            {
                Log.Exception(ex.StackTrace);
                Log.Exception(ex.Message);
                throw ex;
            }
            Log.Info(GlobalParams.EndFindLeaves);
            return(result);
        }
예제 #12
0
        private void btnGenerateTestData_Click(object sender, EventArgs e)
        {
            #region Delete Data First
            DeleteData();
            #endregion

            int         countEmployee = 0;
            int         countLeave    = 0;
            List <Guid> managerIDs    = new List <Guid>();

            #region Check Input
            if (!Int32.TryParse(txtCountEmployee.Text, out countEmployee))
            {
                MessageBox.Show("Count of Employees must be a number.");
                return;
            }

            if (!Int32.TryParse(txtCountLeave.Text, out countLeave))
            {
                MessageBox.Show("Count of level records for each employee must be a number.");
                return;
            }

            // we don't have more than 200 employees in BJ office.
            if (countEmployee > 200 || countEmployee < 1)
            {
                MessageBox.Show("We don't have more than 200 employees in BJ office.\r\nCount of Employees must >=1 and <201.");
                return;
            }

            // each employee can ask 150 leaves for a year? don't believe so
            if (countLeave > 150 || countLeave < 0)
            {
                MessageBox.Show("Each employee can ask 150 leaves for a year? Don't believe so.\r\nCount of level records for each employee must >=0 and <151.");
                return;
            }
            #endregion

            #region Add Role - Manager/Admin/Employee
            WriteLog("<< TEST DATA >>\r\n");
            WriteLog("\r\n==Roles==\r\n");
            // Stanley add: Our Real data is "Admin"/"Manager" and "Employee"
            string strManagerRole = "Manager";
            Role   roleManager    = Role.CreateRole(strManagerRole);
            roleManager.Save();
            //List<EmployeeRoleRL> employeeRoleList_Manager = new List<EmployeeRoleRL>();
            //employeeRoleList_Manager.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, roleManager.PKRoleID));
            WriteLog("Role: Manager\r\n");

            // Stanley add: Our Real data is "Admin"/"Manager" and "Employee"
            string strAdminRole = "Admin";
            Role   roleAdmin    = Role.CreateRole(strAdminRole);
            roleAdmin.Save();
            //List<EmployeeRoleRL> employeeRoleList_Admin = new List<EmployeeRoleRL>();
            //employeeRoleList_Admin.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, roleAdmin.PKRoleID));
            WriteLog("Role: Admin\r\n");

            // Stanley add: Our Real data is "Admin"/"Manager" and "Employee"
            string strEmployeeRole = "Employee";
            Role   roleEmployee    = Role.CreateRole(strEmployeeRole);
            roleEmployee.Save();
            //List<EmployeeRoleRL> employeeRoleList_Employee = new List<EmployeeRoleRL>();
            //employeeRoleList_Employee.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, roleEmployee.PKRoleID));
            WriteLog("Role: Employee\r\n");
            #endregion

            #region Add Leave Type, 7 types actually

            /**
             * Annual Leave
             * Bereavement Leave
             * Marriage Leave
             * Maternity Leave
             * Paternity Leave
             * Regular Check
             * Sick Leave
             */
            WriteLog("\r\n==Leave Types==\r\n");
            string    leave_Annual     = "Annual Leave";
            LeaveType leaveType_Annual = LeaveType.CreateLeaveType(leave_Annual,
                                                                   120,
                                                                   Convert.ToDateTime("1/1/2010"),
                                                                   Convert.ToDateTime("1/1/2011"));
            leaveType_Annual.Save();
            WriteLog("\r\nLeave Type: Annual Leave\r\n");

            string    leave_Sick     = "Sick Leave";
            LeaveType leaveType_Sick = LeaveType.CreateLeaveType(leave_Sick,
                                                                 80,
                                                                 Convert.ToDateTime("1/1/2010"),
                                                                 Convert.ToDateTime("1/1/2011"));
            leaveType_Sick.Save();
            WriteLog("Leave Type: Sick Leave\r\n");

            string    leave_Marriage     = "Marriage Leave";
            LeaveType leaveType_Marriage = LeaveType.CreateLeaveType(leave_Marriage,
                                                                     80,
                                                                     Convert.ToDateTime("1/1/2010"),
                                                                     Convert.ToDateTime("1/1/2011"));
            leaveType_Marriage.Save();
            WriteLog("Leave Type: Marriage Leave\r\n");

            // only for female
            string    leave_Maternity     = "Maternity Leave";
            LeaveType leaveType_Maternity = LeaveType.CreateLeaveType(leave_Maternity,
                                                                      960,
                                                                      Convert.ToDateTime("1/1/2010"),
                                                                      Convert.ToDateTime("1/1/2011"));
            leaveType_Maternity.Save();
            WriteLog("Leave Type: Maternity Leave\r\n");

            // only for male
            string    leave_Paternity     = "Paternity Leave";
            LeaveType leaveType_Paternity = LeaveType.CreateLeaveType(leave_Paternity,
                                                                      40,
                                                                      Convert.ToDateTime("1/1/2010"),
                                                                      Convert.ToDateTime("1/1/2011"));
            leaveType_Paternity.Save();
            WriteLog("Leave Type: Paternity Leave\r\n");

            // only for female
            string    leave_RegularCheck     = "Regular Check Leave";
            LeaveType leaveType_RegularCheck = LeaveType.CreateLeaveType(leave_RegularCheck,
                                                                         80,
                                                                         Convert.ToDateTime("1/1/2010"),
                                                                         Convert.ToDateTime("1/1/2011"));
            leaveType_RegularCheck.Save();
            WriteLog("Leave Type: Regular Check Leave\r\n");

            string    leave_Bereavement     = "Bereavement Leave";
            LeaveType leaveType_Bereavement = LeaveType.CreateLeaveType(leave_Bereavement,
                                                                        80,
                                                                        Convert.ToDateTime("1/1/2010"),
                                                                        Convert.ToDateTime("1/1/2011"));
            leaveType_Bereavement.Save();
            WriteLog("Leave Type: Bereavement Leave\r\n");
            #endregion

            #region Add a default (root) manager, it's rchou or hniu actually, here using rchou as example.
            Employee rootManager = Employee.CreateEmployee("*****@*****.**",
                                                           CryptographyStuff.AES_EncryptString("1234"),
                                                           Sex.Male,
                                                           "Richard",
                                                           Convert.ToDateTime("1/1/2001"),
                                                           "Chou");
            List <EmployeeRoleRL> employeeRoleList_RootManager = new List <EmployeeRoleRL>();
            employeeRoleList_RootManager.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, roleManager.PKRoleID));
            employeeRoleList_RootManager.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, roleAdmin.PKRoleID));
            employeeRoleList_RootManager.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, roleEmployee.PKRoleID));
            rootManager.SetRoleList(employeeRoleList_RootManager);             // manager & admin & employee
            rootManager.IsActive = true;
            rootManager.Save();
            rootManager.IsAdmin = rootManager.IsManager = true;
            managerIDs.Add(rootManager.PKEmployeeID);             // managerIDs[0] is rchou's GUID

            WriteLog("\r\n==Test data of Users==\r\n");
            WriteLog("=====================================================================\r\n");
            WriteLog("Name\t\tIsManager\tIsAdmin\tBelong to\tLeave Counts\r\n");
            WriteLog("=====================================================================\r\n");
            WriteLog(rootManager.Email.Replace("@Advent.com", "") + "\t\t" + rootManager.IsManager.ToString() + "\t\t" + rootManager.IsAdmin.ToString() + "\t \t\t0\r\n");
            WriteLog("---------------------------------------------------------------------\r\n");
            #endregion

            #region As Shan said, create two test accounts, Admin(super-user) and Manager.
            // test account [email protected] (admin and manager)
            Employee adminAccount = Employee.CreateEmployee("*****@*****.**",
                                                            CryptographyStuff.AES_EncryptString("1234"),
                                                            Sex.Female,
                                                            "Admin",
                                                            Convert.ToDateTime("1/1/2001"),
                                                            "Test");
            List <EmployeeRoleRL> adminRoleList_EmployeeAccount = new List <EmployeeRoleRL>();
            adminRoleList_EmployeeAccount.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, roleEmployee.PKRoleID));
            adminRoleList_EmployeeAccount.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, roleAdmin.PKRoleID));
            adminRoleList_EmployeeAccount.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, roleManager.PKRoleID));
            adminAccount.SetRoleList(adminRoleList_EmployeeAccount);             // admin, manager and employee
            adminAccount.IsActive          = true;
            adminAccount.FKReportManagerID = rootManager.PKEmployeeID;           // report to Richard
            adminAccount.Save();
            adminAccount.IsAdmin = adminAccount.IsManager = true;
            managerIDs.Add(adminAccount.PKEmployeeID);             // managerIDs[1] is testAdmin's GUID
            WriteLog(adminAccount.Email.Replace("@Advent.com", "") + "\t\t" + adminAccount.IsManager.ToString() + "\t\t" + adminAccount.IsAdmin.ToString() + "\t" + rootManager.Email.Replace("@Advent.com", "") + "\t\t");
            WriteLog("0\r\n");
            WriteLog("---------------------------------------------------------------------\r\n");

            // test account [email protected]
            Employee managerAccount = Employee.CreateEmployee("*****@*****.**",
                                                              CryptographyStuff.AES_EncryptString("1234"),
                                                              Sex.Male,
                                                              "Manager",
                                                              Convert.ToDateTime("1/1/2001"),
                                                              "Test");
            List <EmployeeRoleRL> employeeRoleList_ManagerAccount = new List <EmployeeRoleRL>();
            employeeRoleList_ManagerAccount.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, roleManager.PKRoleID));
            employeeRoleList_ManagerAccount.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, roleEmployee.PKRoleID));
            managerAccount.SetRoleList(employeeRoleList_ManagerAccount);             // manager & employee
            managerAccount.IsActive          = true;
            managerAccount.FKReportManagerID = adminAccount.PKEmployeeID;            // report to admin
            managerAccount.Save();
            managerAccount.IsManager = true;
            managerIDs.Add(managerAccount.PKEmployeeID);             // managerIDs[2] is testManager's GUID
            WriteLog(managerAccount.Email.Replace("@Advent.com", "") + "\t\t" + managerAccount.IsManager.ToString() + "\t\t" + managerAccount.IsAdmin.ToString() + "\t" + adminAccount.Email.Replace("@Advent.com", "") + "\t\t");
            WriteLog("0\r\n");
            WriteLog("---------------------------------------------------------------------\r\n");
            #endregion

            #region Create an employee randomlly
            int    index        = 0;
            string employeeName = "";
            Sex    sex          = Sex.Male;
            // create employees (admins and managers)
            while (countEmployee > 0)
            {
                bool   isAdmin   = false;
                bool   isManager = false;
                Random random    = new Random((int)DateTime.Now.Ticks);
                index++;
                List <EmployeeRoleRL> employeeRoleList = new List <EmployeeRoleRL>();
                switch ((index - 1) % 6)                 // many employees, few admins and managers
                {
                case 0:
                    employeeRoleList.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, roleManager.PKRoleID));
                    employeeName = "m" + index.ToString("000") + "@Advent.com";
                    isManager    = true;
                    break;

                case 1:
                    employeeRoleList.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, roleAdmin.PKRoleID));
                    employeeName = "a" + index.ToString("000") + "@Advent.com";
                    isAdmin      = true;
                    break;

                case 2:
                    employeeRoleList.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, roleEmployee.PKRoleID));
                    employeeName = "e" + index.ToString("000") + "@Advent.com";
                    break;

                default:
                    employeeRoleList.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, roleEmployee.PKRoleID));
                    employeeName = "e" + index.ToString("000") + "@Advent.com";
                    break;
                }

                if (random.Next(100) % 3 == 0)
                {
                    sex = Sex.Female;                                             // 1/3 people are female
                }
                int      tempDay  = -random.Next(30, 720);
                Employee employee = Employee.CreateEmployee(employeeName,
                                                            CryptographyStuff.AES_EncryptString("1234"),
                                                            sex,                                                             //Sex.Male,
                                                            string.Format(newFirstName, index.ToString("000")) + employeeName[0],
                                                            DateTime.Now.AddDays(tempDay),
                                                            string.Format(newLastName, index.ToString("000")) + employeeName[0]);
                employee.SetRoleList(employeeRoleList);
                employee.IsActive = true;
                if (employeeName.StartsWith("m"))                 // a manager
                {
                    employee.FKReportManagerID = managerIDs[0];   // manager reports to root manager
                }
                else if (employeeName.StartsWith("a"))            // a admin
                {
                    employee.FKReportManagerID = managerIDs[0];   // admin reports to root manager
                }
                else
                {
                    Random randomTemp = new Random((int)DateTime.Now.Ticks);
                    if (managerIDs.Count == 1)
                    {
                        employee.FKReportManagerID = managerIDs[0];                         // only have one manager
                    }
                    else if (managerIDs.Count == 2)
                    {
                        employee.FKReportManagerID = managerIDs[1];                         // normally, others employees belong to a normal manager, not root manager
                    }
                    else
                    {
                        int tempIndex = randomTemp.Next(1, managerIDs.Count - 1);
                        employee.FKReportManagerID = managerIDs[tempIndex];
                    }
                }
                employee.Save();
                employee.IsManager = isManager;
                employee.IsAdmin   = isAdmin;
                Employee tempManager = EmployeeBLL.GetEmployeeByID(employee.FKReportManagerID.ToString());
                WriteLog(employee.Email.Replace("@Advent.com", "") + "\t\t" + employee.IsManager.ToString() + "\t\t" + employee.IsAdmin.ToString() + "\t" + tempManager.Email.Replace("@Advent.com", "") + "\t\t");

                // add manager to management team
                if (employeeName.StartsWith("m"))
                {
                    managerIDs.Add(employee.PKEmployeeID);
                }

                int count  = countLeave;
                int leaves = 0;
                while (count > 0)
                {
                    string name = string.Empty;
                    switch (random.Next(100) % 7)
                    {
                    case 0:
                        name = leave_Annual;
                        break;

                    case 1:
                        name = leave_Sick;
                        break;

                    case 2:
                        name = leave_Marriage;
                        break;

                    case 3:
                        name = leave_Bereavement;
                        break;

                    case 4:
                        name = leave_Maternity;
                        break;

                    case 5:
                        name = leave_Paternity;
                        break;

                    case 6:
                        name = leave_RegularCheck;
                        break;

                    default:
                        name = leave_Annual;
                        break;
                    }

                    #region Create Random TimeDurationInfo
                    Random randomForTimeDurationInfo         = new Random((int)DateTime.Now.Ticks);
                    List <TimeDurationInfo> timeDurationList = new List <TimeDurationInfo>();
                    for (int i = 0; i < randomForTimeDurationInfo.Next(5); i++)
                    {
                        DateTime durationStartTime = DateTime.Now;
                        DateTime durationEndTime   = DateTime.Now;
                        GenerateStartEndTime(ref durationStartTime, ref durationEndTime);
                        TimeDurationInfo timeDurationInfo = TimeDurationInfo.CreateTimeDurationInfo(durationStartTime, durationEndTime);
                        timeDurationList.Add(timeDurationInfo);
                    }
                    #endregion

                    if (timeDurationList.Count > 0)
                    {
                        LeaveBLL.ApplyLeave(employee.PKEmployeeID.ToString(), "generated automatically", name, "generated automatically", timeDurationList);
                        leaves++;
                    }

                    count--;
                }
                WriteLog(leaves.ToString() + "\r\n");
                WriteLog("---------------------------------------------------------------------\r\n");

                countEmployee--;
            }
            #endregion

            if (MessageBox.Show("Finished!") == System.Windows.Forms.DialogResult.OK)
            {
                Process.Start(logFile);
            }
        }
예제 #13
0
        private static bool SendReminderEmail(Employee m)
        {
            try
            {
                DateTime now   = DateTime.Now;
                DateTime start = new DateTime(now.Year, now.Month, 1, 0, 0, 0);
                DateTime end   = new DateTime(now.Year, now.Month, DateTime.DaysInMonth(now.Year, now.Month), 23, 59, 59);

#if DEBUG
                start = new DateTime(2016, 7, 1, 0, 0, 0);
                end   = new DateTime(2016, 7, 31, 23, 59, 59);
#endif

                List <LeaveInfo> leaves = LeaveBLL.GetMyTeamLeaves(m.PKEmployeeID.ToString(),
                                                                   start,
                                                                   end,
                                                                   false
                                                                   );

                if (leaves.Count == 0)
                {
                    return(false);                    // do nothing
                }
                #region Title
                string title = string.Empty;

                if (leaves.Count == 1)
                {
                    title = "1 leave application";
                }
                else
                {
                    title = string.Format("{0} leave applications", leaves.Count);
                }

                Info(string.Format("{0} has {1} to be handled.", m.FirstName + " " + m.LastName, title));

                title = string.Format(ec.Title, title);
                #endregion

                #region Table Rows
                StringBuilder sb = new StringBuilder();
                foreach (LeaveInfo info in leaves)
                {
                    if (info.Status != CARS.Backend.Common.LeaveStatus.Applying)
                    {
                        continue;
                    }

                    string row = string.Empty;

                    /*
                     * 0 - Employee Name
                     * 1 - Leave Hours
                     * 2 - Leave Type
                     * 3 - Reason
                     * 4 - Description
                     * 5 - Start
                     * 6 - End
                     */
                    row = string.Format(ec.TableRow,
                                        (info.Submitter.FirstName + " " + info.Submitter.LastName),
                                        info.Hours,
                                        info.Type.Name,
                                        info.Reason,
                                        info.Description,
                                        info.FirstStartTime.ToString(EmailConfig.TimeFormatInEmail),
                                        info.LastEndTime.ToString(EmailConfig.TimeFormatInEmail));

                    sb.Append(row);
                }
                #endregion

                #region Body

                /*
                 * 0 - Manager Name
                 * 1 - Table Rows
                 */
                string body = string.Format(ec.Body, m.FirstName, sb.ToString(), EmailConfig.Host);
                #endregion

                string managerEmail = m.Email;

#if DEBUG
                managerEmail = "*****@*****.**";
#endif

                if (debugMode)
                {
                    managerEmail = "*****@*****.**";
                }

                SendMail sender = new SendMail(managerEmail, null, EmailConfig.EmailAccount, body, title, EmailConfig.Password, EmailConfig.Host);
                sender.Send();
                return(true);
            }
            catch (Exception ex)
            {
                Error(ex.Message + Environment.NewLine + Environment.NewLine + ex.ToString());
                return(false);
            }
        }
예제 #14
0
        public void TestApproveLeave()
        {
            // Insert a manager role
            Role managerRole = Role.CreateRole(Guid.NewGuid().ToString());

            managerRole.Save();

            // Insert an employee who is a manager
            Employee manager = Employee.CreateEmployee(Guid.NewGuid().ToString(), "123", Sex.Female, "Helen", DateTime.Now, "Niu");

            manager.IsActive     = true;
            manager.ServiceYears = 8;
            List <EmployeeRoleRL> managerRoleList = new List <EmployeeRoleRL>();

            managerRoleList.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, managerRole.PKRoleID));
            manager.SetRoleList(managerRoleList);
            manager.Save();
            Guid managerGuid = manager.PKEmployeeID;

            // Insert a role
            Role role = Role.CreateRole(Guid.NewGuid().ToString());

            role.Save();

            // Insert an employee.
            Employee employee = Employee.CreateEmployee(Guid.NewGuid().ToString(), "123", Sex.Male, "Hui", DateTime.Now, "Ji");

            employee.IsActive          = true;
            employee.ServiceYears      = 10;
            employee.FKReportManagerID = managerGuid;
            List <EmployeeRoleRL> employeeRoleList = new List <EmployeeRoleRL>();

            employeeRoleList.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, role.PKRoleID));
            employee.SetRoleList(employeeRoleList);
            employee.Save();
            Guid employeeGuid = employee.PKEmployeeID;

            // Insert a leave type
            DateTime  leaveTypeStartTime = Convert.ToDateTime("01/01/2000");
            DateTime  leaveTypeEndTime   = Convert.ToDateTime("01/01/3000");
            LeaveType leaveType          = LeaveType.CreateLeaveType(Guid.NewGuid().ToString(), 100, leaveTypeStartTime, leaveTypeEndTime);

            leaveType.PKLeaveTypeID = Guid.NewGuid();
            leaveType.Save();
            Guid leaveTypeGuid = leaveType.PKLeaveTypeID;

            // Insert a leave time duration for this leave
            DateTime                durationStartTime  = Convert.ToDateTime("02/02/2001");
            DateTime                durationEndTime    = Convert.ToDateTime("02/05/2001");
            TimeDurationInfo        timeDurationInfo   = TimeDurationInfo.CreateTimeDurationInfo(durationStartTime, durationEndTime);
            DateTime                durationStartTime2 = Convert.ToDateTime("02/02/2011");
            DateTime                durationEndTime2   = Convert.ToDateTime("02/05/2011");
            TimeDurationInfo        timeDurationInfo2  = TimeDurationInfo.CreateTimeDurationInfo(durationStartTime2, durationEndTime2);
            List <TimeDurationInfo> timeDurationList   = new List <TimeDurationInfo>();

            timeDurationList.Add(timeDurationInfo);
            timeDurationList.Add(timeDurationInfo2);

            LeaveInfo leave = LeaveBLL.ApplyLeave(employeeGuid.ToString(), "Test", leaveType.Name, "Test Desc", timeDurationList);

            // Approve the applying leave.
            LeaveBLL.ApproveLeave(managerGuid.ToString(), leave.PKLeaveInfoID.ToString(), LeaveStatus.Accepted);

            // Get the employee's leave list
            List <SearchCondition> conditions = new List <SearchCondition>();

            conditions.Add(SearchCondition.CreateSearchCondition("FKSubmitEmployeeID", employeeGuid.ToString(), SearchComparator.Equal, SearchType.SearchString));
            List <LeaveInfo> leaveList = CommonDAL <LeaveInfo> .GetObjects(conditions);

            Assert.IsTrue(leaveList[0].PKLeaveInfoID == leave.PKLeaveInfoID && leaveList[0].Status == LeaveStatus.Accepted);

            leave.Delete();
            leaveType.Delete();
            employee.Delete();
            role.Delete();
            manager.Delete();
            managerRole.Delete();
        }
예제 #15
0
        public void TestGetMyTeamLeaves()
        {
            // Insert a manager role
            Role managerRole = Role.CreateRole(Guid.NewGuid().ToString());

            managerRole.Save();

            // Insert an employee who is a manager
            Employee manager = Employee.CreateEmployee(Guid.NewGuid().ToString(), "123", Sex.Female, "Helen", DateTime.Now, "Niu");

            manager.IsActive     = true;
            manager.ServiceYears = 8;
            List <EmployeeRoleRL> managerRoleList = new List <EmployeeRoleRL>();

            managerRoleList.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, managerRole.PKRoleID));
            manager.SetRoleList(managerRoleList);
            manager.Save();
            Guid managerGuid = manager.PKEmployeeID;

            // Insert a role
            Role role = Role.CreateRole(Guid.NewGuid().ToString());

            role.Save();

            // Insert an employee.
            Employee employee = Employee.CreateEmployee(Guid.NewGuid().ToString(), "123", Sex.Male, "Hui", DateTime.Now, "Ji");

            employee.IsActive          = true;
            employee.ServiceYears      = 10;
            employee.FKReportManagerID = managerGuid;
            List <EmployeeRoleRL> employeeRoleList = new List <EmployeeRoleRL>();

            employeeRoleList.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, role.PKRoleID));
            employee.SetRoleList(employeeRoleList);
            employee.Save();
            Guid employeeGuid = employee.PKEmployeeID;

            // Insert a leave type
            DateTime  leaveTypeStartTime = Convert.ToDateTime("01/01/2000");
            DateTime  leaveTypeEndTime   = Convert.ToDateTime("01/01/3000");
            LeaveType leaveType          = LeaveType.CreateLeaveType(Guid.NewGuid().ToString(), 100, leaveTypeStartTime, leaveTypeEndTime);

            leaveType.PKLeaveTypeID = Guid.NewGuid();
            leaveType.Save();
            Guid leaveTypeGuid = leaveType.PKLeaveTypeID;

            // Insert a leave time duration for this leave
            DateTime                durationStartTime  = Convert.ToDateTime("02/02/2001");
            DateTime                durationEndTime    = Convert.ToDateTime("02/05/2001");
            TimeDurationInfo        timeDurationInfo   = TimeDurationInfo.CreateTimeDurationInfo(durationStartTime, durationEndTime);
            DateTime                durationStartTime2 = Convert.ToDateTime("02/02/2011");
            DateTime                durationEndTime2   = Convert.ToDateTime("02/05/2011");
            TimeDurationInfo        timeDurationInfo2  = TimeDurationInfo.CreateTimeDurationInfo(durationStartTime2, durationEndTime2);
            List <TimeDurationInfo> timeDurationList   = new List <TimeDurationInfo>();

            timeDurationList.Add(timeDurationInfo);
            timeDurationList.Add(timeDurationInfo2);

            LeaveInfo leave = LeaveBLL.ApplyLeave(employeeGuid.ToString(), "Test", leaveType.Name, "Test Desc", timeDurationList);

            // Get the employee's leave list
            List <LeaveInfo> leaveList = LeaveBLL.GetMyTeamLeaves(managerGuid.ToString(), true);

            // Compare these two list
            bool result = leave.PKLeaveInfoID == leaveList[0].PKLeaveInfoID;

            if (result)
            {
                //foreach (LeaveInfo leave in leave)
                //{
                //    bool existAndEqual = false;
                //    foreach (LeaveInfo leaveItem in leaveList)
                //    {
                //        if (leave.FirstStartTime == leaveItem.FirstStartTime && leave.LastEndTime == leaveItem.LastEndTime)
                //        {
                //            existAndEqual = true;
                //            break;
                //        }
                //    }

                //    result = existAndEqual;
                //    if (!result) break;
                //}
            }

            Assert.IsTrue(result);

            //foreach (LeaveInfo leave in leave)
            //{
            leave.Delete();
            //}
            leaveType.Delete();
            employee.Delete();
            role.Delete();
            manager.Delete();
            managerRole.Delete();
        }
예제 #16
0
        public void TestDeleteEmployeeLeaveSummaryByApproveLeave()
        {
            // Insert a manager role
            Role managerRole = Role.CreateRole(Guid.NewGuid().ToString());

            managerRole.Save();

            // Insert an employee who is a manager
            Employee manager = Employee.CreateEmployee(Guid.NewGuid().ToString(), "123", Sex.Female, "Helen", DateTime.Now, "Niu");

            manager.IsActive     = true;
            manager.ServiceYears = 8;
            List <EmployeeRoleRL> managerRoleList = new List <EmployeeRoleRL>();

            managerRoleList.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, managerRole.PKRoleID));
            manager.SetRoleList(managerRoleList);
            manager.Save();
            Guid managerGuid = manager.PKEmployeeID;

            // Insert a role
            Role role = Role.CreateRole(Guid.NewGuid().ToString());

            role.Save();

            // Insert an employee.
            Employee employee = Employee.CreateEmployee(Guid.NewGuid().ToString(), "123", Sex.Male, "Hui", DateTime.Now, "Ji");

            employee.IsActive          = true;
            employee.ServiceYears      = 10;
            employee.FKReportManagerID = managerGuid;
            List <EmployeeRoleRL> employeeRoleList = new List <EmployeeRoleRL>();

            employeeRoleList.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, role.PKRoleID));
            employee.SetRoleList(employeeRoleList);
            employee.Save();
            Guid employeeGuid = employee.PKEmployeeID;

            // Insert a leave type
            DateTime  leaveTypeStartTime = Convert.ToDateTime("01/01/2000");
            DateTime  leaveTypeEndTime   = Convert.ToDateTime("01/01/3000");
            LeaveType leaveType          = LeaveType.CreateLeaveType(Guid.NewGuid().ToString(), 100, leaveTypeStartTime, leaveTypeEndTime);

            leaveType.PKLeaveTypeID = Guid.NewGuid();
            leaveType.Save();
            Guid leaveTypeGuid = leaveType.PKLeaveTypeID;

            // Insert a leave time duration for this leave
            DateTime                durationStartTime  = Convert.ToDateTime("02/02/2001");
            DateTime                durationEndTime    = Convert.ToDateTime("02/05/2001");
            TimeDurationInfo        timeDurationInfo   = TimeDurationInfo.CreateTimeDurationInfo(durationStartTime, durationEndTime);
            DateTime                durationStartTime2 = Convert.ToDateTime("02/02/2011");
            DateTime                durationEndTime2   = Convert.ToDateTime("02/05/2011");
            TimeDurationInfo        timeDurationInfo2  = TimeDurationInfo.CreateTimeDurationInfo(durationStartTime2, durationEndTime2);
            List <TimeDurationInfo> timeDurationList   = new List <TimeDurationInfo>();

            timeDurationList.Add(timeDurationInfo);
            timeDurationList.Add(timeDurationInfo2);
            int leaveHours = CommonMethods.ComputeHours(timeDurationList);

            LeaveInfo leave = LeaveBLL.ApplyLeave(employeeGuid.ToString(), "Test", leaveType.Name, "Test Desc", timeDurationList);

            // Approve the applying leave.
            LeaveBLL.ApproveLeave(managerGuid.ToString(), leave.PKLeaveInfoID.ToString(), LeaveStatus.Accepted);


            // Get the inserted employee leave summary
            List <SearchCondition> conditions = new List <SearchCondition>();

            conditions.Add(SearchCondition.CreateSearchCondition("FKEmployeeID", employeeGuid.ToString(), SearchComparator.Equal, SearchType.SearchString));
            conditions.Add(SearchCondition.CreateSearchCondition("FKLeaveTypeID", leaveTypeGuid.ToString(), SearchComparator.Equal, SearchType.SearchString));
            EmployeeLeaveSummary employeeLeaveSummary = CommonDAL <EmployeeLeaveSummary> .GetSingleObject(conditions);

            // Apply another leave
            DateTime                durationStartTime3 = DateTime.Parse("03/04/2011");
            DateTime                durationEndtime3   = DateTime.Parse("03/08/2011");
            TimeDurationInfo        timeDurationInfo3  = TimeDurationInfo.CreateTimeDurationInfo(durationStartTime3, durationEndtime3);
            DateTime                durationStartTime4 = DateTime.Parse("03/10/2011");
            DateTime                durationEndtime4   = DateTime.Parse("03/11/2011");
            TimeDurationInfo        timeDurationInfo4  = TimeDurationInfo.CreateTimeDurationInfo(durationStartTime4, durationEndtime4);
            List <TimeDurationInfo> timeDurationList2  = new List <TimeDurationInfo>();

            timeDurationList2.Add(timeDurationInfo3);
            timeDurationList2.Add(timeDurationInfo4);
            int newLeaveHours = CommonMethods.ComputeHours(timeDurationList2);

            LeaveInfo newLeave = LeaveBLL.ApplyLeave(employeeGuid.ToString(), "New Leave", leaveType.Name, "New Leave Desc", timeDurationList2);
            LeaveInfo delLeave = LeaveBLL.ApproveLeave(managerGuid.ToString(), newLeave.PKLeaveInfoID.ToString(), LeaveStatus.Accepted);

            delLeave.Delete();

            // Get the update leave summary
            EmployeeLeaveSummary updatedLeaveSummary = CommonDAL <EmployeeLeaveSummary> .GetSingleObject(conditions);

            Assert.AreEqual(updatedLeaveSummary.UsedHours, leaveHours);

            // Delete inserted items
            employeeLeaveSummary.Delete();
            leave.Delete();
            leaveType.Delete();
            employee.Delete();
            manager.Delete();
            managerRole.Delete();
            role.Delete();
        }
예제 #17
0
        public static void ApplyLeave(object seed)
        {
            LeaveInfo leave = seed as LeaveInfo;

            LeaveBLL.ApproveLeave(leave.FKReportManagerID.ToString(), leave.PKLeaveInfoID.ToString(), LeaveStatus.Accepted);
        }
예제 #18
0
        private void btnGenerateData_Click(object sender, EventArgs e)
        {
            int countEmployee = Int32.Parse(txtCountEmployee.Text);
            int countLeave    = Int32.Parse(txtCountLeave.Text);

            string roleName1 = RoleRank.Admin.ToString();
            Role   role1     = Role.GetRoleByName(roleName1);

            if (null == role1)
            {
                role1 = Role.CreateRole(roleName1);
                role1.Save();
            }

            string roleName2 = RoleRank.Manager.ToString();
            Role   role2     = Role.GetRoleByName(roleName2);

            if (null == role2)
            {
                role2 = Role.CreateRole(roleName2);
                role2.Save();
            }

            string roleName3 = RoleRank.Employee.ToString();
            Role   role3     = Role.GetRoleByName(roleName3);

            if (null == role3)
            {
                role3 = Role.CreateRole(roleName3);
                role3.Save();
            }

            // Add a default manager.
            Employee manager = Employee.CreateEmployee(string.Format(emplyeeName, Guid.NewGuid().ToString().Substring(0, 5)),
                                                       CryptographyStuff.AES_EncryptString("1234"),
                                                       Sex.Male,
                                                       string.Format(firstName, Guid.NewGuid().ToString().Substring(0, 5)),
                                                       Convert.ToDateTime("1/1/2011"),
                                                       string.Format(lastName, Guid.NewGuid().ToString().Substring(0, 5)));
            List <EmployeeRoleRL> employeeRoleList = new List <EmployeeRoleRL>();

            employeeRoleList.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, role2.PKRoleID));
            manager.SetRoleList(employeeRoleList);
            manager.IsActive = true;
            manager.Save();
            Guid managerID = manager.PKEmployeeID;

            string    leaveTypeName1 = string.Format(leaveTypeName, Guid.NewGuid().ToString().Substring(0, 5));
            LeaveType leaveType1     = LeaveType.CreateLeaveType(leaveTypeName1,
                                                                 100,
                                                                 Convert.ToDateTime("1/1/2010"),
                                                                 Convert.ToDateTime("1/1/2011"));

            leaveType1.Save();

            string    leaveTypeName2 = string.Format(leaveTypeName, Guid.NewGuid().ToString().Substring(0, 5));
            LeaveType leaveType2     = LeaveType.CreateLeaveType(leaveTypeName2,
                                                                 100,
                                                                 Convert.ToDateTime("1/1/2010"),
                                                                 Convert.ToDateTime("1/1/2011"));

            leaveType2.Save();

            string    leaveTypeName3 = string.Format(leaveTypeName, Guid.NewGuid().ToString().Substring(0, 5));
            LeaveType leaveType3     = LeaveType.CreateLeaveType(leaveTypeName3,
                                                                 100,
                                                                 Convert.ToDateTime("1/1/2010"),
                                                                 Convert.ToDateTime("1/1/2011"));

            leaveType3.Save();

            DateTime durationStartTime  = Convert.ToDateTime("02/02/2001");
            DateTime durationEndTime    = Convert.ToDateTime("02/05/2001");
            DateTime durationStartTime2 = Convert.ToDateTime("02/02/2011");
            DateTime durationEndTime2   = Convert.ToDateTime("02/05/2011");

            while (countEmployee > 0)
            {
                employeeRoleList = new List <EmployeeRoleRL>();
                switch (countEmployee % 3)
                {
                case 0:
                    // Admin
                    employeeRoleList.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, role1.PKRoleID));
                    break;

                case 1:
                    // Manager
                    employeeRoleList.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, role2.PKRoleID));
                    break;

                case 2:
                    // Employee
                    employeeRoleList.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, role3.PKRoleID));
                    break;

                default:
                    // Employee
                    employeeRoleList.Add(EmployeeRoleRL.CreateEmployeeRoleRL(Guid.Empty, role3.PKRoleID));
                    break;
                }

                Employee employee = Employee.CreateEmployee(string.Format(emplyeeName, Guid.NewGuid().ToString().Substring(0, 5)),
                                                            CryptographyStuff.AES_EncryptString("1234"),
                                                            Sex.Male,
                                                            string.Format(firstName, Guid.NewGuid().ToString().Substring(0, 5)),
                                                            Convert.ToDateTime("1/1/2011"),
                                                            string.Format(lastName, Guid.NewGuid().ToString().Substring(0, 5)));
                employee.SetRoleList(employeeRoleList);
                employee.IsActive          = true;
                employee.FKReportManagerID = managerID;
                employee.Save();

                // Set the manager id as the employee who is manager.
                if (countEmployee % 3 == 1)
                {
                    managerID = employee.PKEmployeeID;
                }

                int count = countLeave;
                while (count > 0)
                {
                    string name = string.Empty;
                    switch (countLeave % 3)
                    {
                    case 0:
                        name = leaveTypeName1;
                        break;

                    case 1:
                        name = leaveTypeName2;
                        break;

                    case 2:
                        name = leaveTypeName3;
                        break;

                    default:
                        name = leaveTypeName1;
                        break;
                    }

                    List <TimeDurationInfo> timeDurationList  = new List <TimeDurationInfo>();
                    TimeDurationInfo        timeDurationInfo  = TimeDurationInfo.CreateTimeDurationInfo(durationStartTime, durationEndTime);
                    TimeDurationInfo        timeDurationInfo2 = TimeDurationInfo.CreateTimeDurationInfo(durationStartTime2, durationEndTime2);
                    timeDurationList.Add(timeDurationInfo);
                    timeDurationList.Add(timeDurationInfo2);

                    LeaveBLL.ApplyLeave(employee.PKEmployeeID.ToString(), "generated automatically", name, "generated automatically", timeDurationList);

                    count--;
                }

                countEmployee--;
            }

            MessageBox.Show("Finished!");
        }