public async Task <Timesheet> GetFullTimesheetDetails(Timesheet ts) { Employee emp = await _employeeRepository.Get(ts.EmployeeId); emp.Timesheets = null; ts.Employee = emp; var timesheetRows = (await _timesheetRowRepository.GetAll()) .Where(t => t.TimesheetId == ts.TimesheetId && t.TimesheetVersionNumber == ts.VersionNumber); if (ts.TimesheetRows != null) { foreach (var tsTimesheetRow in ts.TimesheetRows) { tsTimesheetRow.Timesheet = null; WorkPackage wp = await _workPackageRepository.Get(tsTimesheetRow.WorkPackageId); Project proj = await _projectRepository.Get(wp.ProjectId); TimesheetRowViewModel tsRowViewModel = new TimesheetRowViewModel(tsTimesheetRow, proj, wp.WorkPackageCode); } } TimesheetViewModel tsViewModel = new TimesheetViewModel(ts); ts.TimesheetRows = timesheetRows.ToList(); return(ts); }
public async Task <ActionResult <WorkPackageReportGetViewModel> > GetWorkPackageReport(int id) { try { //var workPackage = (await _workPackageRepository.GetAll()).FirstOrDefault(w => w.WorkPackageCode.Equals(id)); //var project = await _projectRepository.Get(workPackage.ProjectId); //int wpId = (await _workPackageRepository.GetAll()).FirstOrDefault(w => w.WorkPackageCode.Equals(id)) // .WorkPackageId; var workPackageReport = await _workPackageReportRepository.Get(id); int wpId = workPackageReport.WorkPackageId; var workPackage = (await _workPackageRepository.Get(wpId)); var project = await _projectRepository.Get(workPackage.ProjectId); var projectManager = await _employeeRepository.Get(project.ProjectManagerId); projectManager.LabourGrade = await _labourGradeRepository.Get(projectManager.LabourGradeId); var responsibleEngineer = await _employeeRepository.Get(workPackage.ResponsibleEngineerId); responsibleEngineer.LabourGrade = await _labourGradeRepository.Get(responsibleEngineer.LabourGradeId); List <EmployeeReportViewModel> engineers = new List <EmployeeReportViewModel>(); foreach (EmployeeWorkPackageAssignment item in await _employeeWorkPackageAssignmentRepository.GetAll()) { if (item.WorkPackageId == wpId) { var engineer = await _employeeRepository.Get(item.EmployeeId); engineer.LabourGrade = await _labourGradeRepository.Get(engineer.LabourGradeId); engineers.Add(new EmployeeReportViewModel(engineer)); } } List <WorkPackageReportDetailsViewModel> details = new List <WorkPackageReportDetailsViewModel>(); foreach (WorkPackageReportDetails item in await _workPackageReportDetailsRepository.GetAll()) { if (item.WorkPackageReportId == workPackageReport.WorkPackageReportId) { details.Add(new WorkPackageReportDetailsViewModel(item)); } } WorkPackageReportGetViewModel workPackageReportGetViewModel = new WorkPackageReportGetViewModel(workPackageReport, workPackage, project, projectManager, responsibleEngineer, engineers, details); return(workPackageReportGetViewModel); } catch (NullReferenceException e) { return(Ok(new Exception("Null pointer: WorkPackageview's wp code might not exist in database. " + "Cannot get ID for wp code." + " Error msg: " + e.ToString()))); } catch (Exception e) { return(Ok(new Exception("Something went wrong trying to get the workpackage Report of id: " + id + ". Error msg: " + e.ToString()))); } }
public async Task <ActionResult <WorkPackage> > GetWorkPackage(string code) { //Get WpId from param that is WpCode int id = _workPackageRepository.GetIdByCode(code); //Get WP WorkPackage wp = await _workPackageRepository.Get(id); //Get ParentWPCode int? parentWpId = wp.ParentWorkPackageId; string parentWpCode = null; WorkPackage parentWp; if (parentWpId != null) { parentWp = await _workPackageRepository.Get((int)parentWpId); parentWpCode = parentWp.WorkPackageCode; } //GetProject Project proj = await _projectRepository.Get(wp.ProjectId); //Filter EmployeeWokPackageAssignments IEnumerable <EmployeeWorkPackageAssignment> empWpAssignments = await _empWorkPackageAssignmentRepository.GetAll(); empWpAssignments = empWpAssignments.Where(x => x.WorkPackageId == id); //Get employees list and Responsible Engineer IList <EmployeeNameViewModel> employees = new List <EmployeeNameViewModel>(); EmployeeNameViewModel responsibleEngineer = null; foreach (EmployeeWorkPackageAssignment empWpAssignment in empWpAssignments) { Employee emp = await _employeeRepository.Get(empWpAssignment.EmployeeId); if (wp.ResponsibleEngineerId != empWpAssignment.EmployeeId) { employees.Add(new EmployeeNameViewModel(emp)); } else { responsibleEngineer = new EmployeeNameViewModel(emp); } } //Filter WorkPackageLabourGradeAssignments IEnumerable <WorkPackageLabourGradeAssignment> wpLabourGradeAssignments = await _workPackageLabourGradeRepository.GetAll(); wpLabourGradeAssignments = wpLabourGradeAssignments.Where(x => x.WorkPackageId == id); //Get PmPlannings IList <PmPlanningViewModel> pmPlannings = new List <PmPlanningViewModel>(); foreach (WorkPackageLabourGradeAssignment item in wpLabourGradeAssignments) { pmPlannings.Add(new PmPlanningViewModel(item)); } //Create the viewmodel WorkPackageViewModel wpViewModel = new WorkPackageViewModel(wp, parentWpCode, proj, responsibleEngineer, employees, pmPlannings); // return Ok(await _workPackageRepository.Get(id)); //this is just plain database table object return(Ok(wpViewModel)); }