Пример #1
0
        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())));
            }
        }
Пример #3
0
        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));
        }