public CompanyDashboardModel GetCompanyDashboard(int year, int month) { CompanyDashboardModel companyDashboard = new CompanyDashboardModel(); decimal baseHours = GetMonthlyWorkingDays(year, month) * 8; List <CompanyDashboardRawModel> rawData = _storedProcedures.GetStoredProcedure <CompanyDashboardRawModel>("CompanyWorkingHoursData", new int[] { year, month }); List <CompanyEmployeeHoursModel> employeeHours = _storedProcedures.GetStoredProcedure <CompanyEmployeeHoursModel>("EmployeeHoursByDayType", new int[] { year, month }); List <CompanyOvertimeModel> overtime = _storedProcedures.GetStoredProcedure <CompanyOvertimeModel>("CompanyOvertimeHours", new int[] { year, month }); List <MasterModel> activeTeams = new List <MasterModel>(); activeTeams.AddRange(rawData.GroupBy(x => new { Id = x.TeamId, Name = x.TeamName }).ToList().Select(x => new MasterModel { Id = x.Key.Id, Name = x.Key.Name }).ToList()); companyDashboard.EmployeesCount = rawData.GroupBy(x => x.EmployeeId).Count(); companyDashboard.ProjectsCount = rawData.GroupBy(x => x.ProjectId).Count(); companyDashboard.TotalHours = companyDashboard.EmployeesCount * baseHours; companyDashboard.TotalWorkingHours = rawData.Sum(x => x.WorkingHours); companyDashboard.Projects = GetCompanyProjectModels(rawData); companyDashboard.Roles = GetRoleUtilization(rawData, baseHours); companyDashboard.Teams = GetCompanyTeamModels(rawData, employeeHours, activeTeams, overtime); GetCompanyMissingEntries(employeeHours, companyDashboard.Teams, baseHours, overtime); return(companyDashboard); }
public IActionResult GetCompanyDashboard(int year, int month) { try { DateTime start = DateTime.Now; CompanyDashboardModel dashboard = companyDashboard.GetCompanyDashboard(year, month); DateTime end = DateTime.Now; return(Ok(new { (end - start).TotalMilliseconds, dashboard })); } catch (Exception ex) { return(HandleException(ex)); } }