public EmployeeStatisticsModel Statistic(string owner) { EmployeeStatisticsModel result = new EmployeeStatisticsModel(); result.EmployeeCountInProjects = new List <EmployeeCountInProjectModel>(); List <Employee> employees = _context.Employee.Where(e => e.Owner == owner).ToList(); result.TotalManpower = 0; result.ManpowerUsing = 0; foreach (var item in employees) { result.TotalManpower += item.Manpower; if (item.Active == true) { result.ManpowerUsing += item.Manpower; } } List <Project> projects = _context.Project.Include(x => x.EmployeeInProject).Where(p => p.Email == owner).ToList(); var empTbls = new Dictionary <int, int>(); foreach (var project in projects) { foreach (var item in project.EmployeeInProject) { if (item.Active) { int oldValue = 0; try { empTbls.TryGetValue(item.EmployeeId, out oldValue); } catch { oldValue = 0; } if (oldValue == 0) { empTbls.Add(item.EmployeeId, 1); } else { empTbls.Remove(item.EmployeeId); empTbls.Add(item.EmployeeId, oldValue + 1); } } } } foreach (var item in empTbls) { EmployeeCountInProjectModel employeeCountInProjectModel = new EmployeeCountInProjectModel() { EmpName = _context.Employee.FirstOrDefault(e => e.Id == item.Key).FullName, ProjectCount = item.Value }; result.EmployeeCountInProjects.Add(employeeCountInProjectModel); } return(result); }
public EmployeeStatisticsModel Statistic(string email) { try { EmployeeStatisticsModel result = _employeeRepository.Statistic(email); return(result); } catch (Exception e) { throw new Exception(e.Message); } }