public Task <EmployeeStatistics> GetStatistics() { EmployeeStatistics stats = new EmployeeStatistics(); var employees = _empRepository.GetEmployeesForStats(); stats.CurrentEmployeeCount = employees.Where(x => x.IsDeleted != true).Count(); stats.DeletedEmployeeCount = employees.Where(x => x.IsDeleted == true).Count(); stats.ModifiedEmployeeCount = employees.Where(x => x.IsDeleted != true && x.ModifiedDate != null).Count(); stats.TotalEmployeeCount = employees.Count(); var AddedGroup = employees.GroupBy(x => x.YearOfJoining); foreach (var group in AddedGroup) { stats.YearList.Add(group.Key); stats.EmployeeAdded.Add(group.Count()); stats.EmployeeDeleted.Add(group.Where(x => x.IsDeleted == true && x.ModifiedDate.Year == group.Key).Count()); } var deletedGroup = employees.Where(x => x.IsDeleted == true).GroupBy(x => x.ModifiedDate.Year); foreach (var group in deletedGroup) { if (!stats.YearList.Any(x => x == group.Key)) { stats.YearList.Add(group.Key); stats.EmployeeDeleted.Add(group.Where(x => x.IsDeleted == true && x.ModifiedDate.Year == group.Key).Count()); } } return(Task.FromResult <EmployeeStatistics>(stats)); }
public void StatisticsEmployee(object source, EventArgs e) { if (CheckValid()) { try { //在此收集数据源以防底层查询很多次 List <Employee> employeesource = _IEmployeeHistoryFacade.GetEmployeeOnDutyByDepartmentAndDateTime( _ICommonStatisticsView.IStatisticsConditionView.DepartmentID, Convert.ToDateTime(_ICommonStatisticsView.IStatisticsConditionView.StatisticsTime), true, _Operator, HrmisPowers.A405, null); EmployeeStatistics EmployeeStatistics = _IEmployeeStatisticsFacade.BindEmployeeStatistics(DateTime.Now, _ICommonStatisticsView. IStatisticsConditionView. DepartmentID, _Operator, employeesource); _ICommonStatisticsView.IAgePieChartView.EmployeeStatistics = EmployeeStatistics; _ICommonStatisticsView.IGenderPieChartView.EmployeeStatistics = EmployeeStatistics; _ICommonStatisticsView.IEduBgPieChartView.EmployeeStatistics = EmployeeStatistics; _ICommonStatisticsView.IWorkTypePieChartView.EmployeeStatistics = EmployeeStatistics; _ICommonStatisticsView.IWorkAgePieChartView.EmployeeStatistics = EmployeeStatistics; ComeAndLeaveTablePresenter ComeAndLeaveTablePresenter = new ComeAndLeaveTablePresenter(_ICommonStatisticsView.IComeAndLeaveTableView, _ICommonStatisticsView.IStatisticsConditionView, _Operator); ComeAndLeaveTablePresenter.DrawChart(); _ICommonStatisticsView.IComeAndLeaveBarChartView.EmployeeComeAndLeaveList = _ICommonStatisticsView.IComeAndLeaveTableView.EmployeeComeAndLeaveList; _ICommonStatisticsView.ILeaveRateLineChartView.EmployeeComeAndLeaveList = _ICommonStatisticsView.IComeAndLeaveTableView.EmployeeComeAndLeaveList; PositionGradeTowerTablePresenter PositionGradeTowerTablePresenter = new PositionGradeTowerTablePresenter(_ICommonStatisticsView.IPositionGradeTowerTableView, _ICommonStatisticsView.IStatisticsConditionView, _Operator); PositionGradeTowerTablePresenter.DrawChart(employeesource); OtherStatisticsDataPresenter OtherStatisticsDataPresenter = new OtherStatisticsDataPresenter(_ICommonStatisticsView.IOtherStatisticsDataView, _ICommonStatisticsView.IStatisticsConditionView, _Operator); OtherStatisticsDataPresenter.BindData(employeesource, _ICommonStatisticsView.IComeAndLeaveTableView.EmployeeComeAndLeaveList[11]); } catch (ApplicationException) { //_IMonthAttendanceView.Message = "<span class='fontred'>" + ex.Message + "</span>"; } } }
/// <summary> /// /// </summary> /// <returns></returns> public EmployeeStatistics BindEmployeeStatistics() { _Employeesource = _Employeesource ?? _GetEmployeeHistory.GetEmployeeOnDutyByDepartmentAndDateTime(_DepartmentID, _Date, true, _AccountOperator, HrmisPowers.A405, null); List <Employee> employeeList = Employee.CopyEmployeeList(_Employeesource); EmployeeStatistics employeeStatistics = new EmployeeStatistics(employeeList); employeeStatistics.GenderStatistics(); employeeStatistics.WorkTypeStatistics(); employeeStatistics.EducationalBackgroundStatistics(); employeeStatistics.AgeStatistics(); employeeStatistics.WorkAgeStatistics(); return(employeeStatistics); }
public void CountFemaleManagers() { //Arrange var empManager = new EmployeeManager(); empManager.AddEmployee(new Employee { Name = "Leen", Gender = Gender.Female, Position = Position.Manager }); empManager.AddEmployee(new Employee { Name = "Mike", Gender = Gender.Male, Position = Position.Administrator }); //Act var stats = new EmployeeStatistics(empManager); //Assert Assert.That(stats.CountFemaleManagers(), Is.EqualTo(1)); Assert.That(stats.CountMaleAdmins(), Is.EqualTo(1)); }
static void Main(string[] args) { //example bad var employeeManagerBad = new EmployeeManager(); employeeManagerBad.AddEmployee(new Employee { Name = "Leen", Gender = Gender.Female, Position = Position.Manager }); employeeManagerBad.AddEmployee(new Employee { Name = "Mike", Gender = Gender.Male, Position = Position.Administrator }); var employeeStatisticBad = new EmployeeStatistics(employeeManagerBad); var femaleManagers1 = employeeStatisticBad.CountFemaleManagers(); Console.WriteLine($"Number of female managers in our company is: {femaleManagers1}"); Console.ReadLine(); //example good var employeeManagerGood = new EmployeeManagerGood(); employeeManagerGood.AddEmployee(new Employee { Name = "Leen", Gender = Gender.Female, Position = Position.Manager }); employeeManagerGood.AddEmployee(new Employee { Name = "Mike", Gender = Gender.Male, Position = Position.Administrator }); var femaleExecuteives = employeeManagerGood.GetEmployeesByGenderAndPosition(Gender.Female, Position.Executive).Count(); Console.WriteLine($"Number of female executeives in our company is: {femaleExecuteives}"); var empStatistic = new EmployeeStatisticsGood(employeeManagerGood); var femaleManagers2 = empStatistic.CountFemaleManagers(); Console.WriteLine($"Number of female managers in our company is: {femaleManagers2}"); Console.ReadLine(); }
public Task <EmployeeStatistics> GetStatistics() { EmployeeStatistics stats = new EmployeeStatistics(); var employees = _empRepository.GetEmployeesForStats(); stats.CurrentEmployeeCount = employees.Where(x => x.IsDeleted != true).Count(); stats.DeletedEmployeeCount = employees.Where(x => x.IsDeleted == true).Count(); stats.ModifiedEmployeeCount = employees.Where(x => x.IsDeleted != true && x.ModifiedDate != null).Count(); stats.TotalEmployeeCount = employees.Count(); var yearOfJoiningList = employees.Select(x => x.YearOfJoining); var yearOfQuitingList = employees.Where(x => x.YearOfQuiting != 0).Select(x => (x.YearOfQuiting)); var yearList = yearOfJoiningList.Union(yearOfQuitingList).OrderBy(x => x); foreach (var year in yearList) { stats.YearList.Add(year); stats.EmployeeAdded.Add(employees.Where(x => x.YearOfJoining == year).Count()); stats.EmployeeDeleted.Add(employees.Where(x => x.IsDeleted == true && x.YearOfQuiting == year).Count()); } return(Task.FromResult <EmployeeStatistics>(stats)); }