示例#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
        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);
            }
        }
示例#3
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();
        }