@Override public ProjectManagerReport getProjectManagerDetailedReport(Project project) { ProjectManagerReport report = new ProjectManagerReport(); // get the project report.setProject(project); // get a proper report range DateRange reportRange = getReportRangeForProject(project); report.setReportRange(reportRange); // get all aggregates List<Project> projects = Arrays.asList(project); SortedSet<AssignmentAggregateReportElement> aggregates = new TreeSet<AssignmentAggregateReportElement>(reportAggregatedDAO.getCumulatedHoursPerAssignmentForProjects(projects, reportRange)); // filter out just the id's List<Integer> assignmentIds = new ArrayList<>(); for (AssignmentAggregateReportElement aggregate : aggregates) { assignmentIds.add(aggregate.getProjectAssignment().getAssignmentId()); } // get all assignments for this period regardless whether they booked hours on it List<ProjectAssignment> allAssignments = projectAssignmentService.getProjectAssignments(project, reportRange); for (ProjectAssignment assignment : allAssignments) { if (!assignmentIds.contains(assignment.getAssignmentId())) { AssignmentAggregateReportElement emptyAggregate = new AssignmentAggregateReportElement(); emptyAggregate.setProjectAssignment(assignment); aggregates.add(emptyAggregate); } } report.setAggregates(aggregates); report.deriveTotals(); return report; }
@Before public void setUp() { a1 = new AssignmentAggregateReportElement(); a2 = new AssignmentAggregateReportElement(); a1.setProjectAssignment(ProjectAssignmentObjectMother.createProjectAssignment(1)); a2.setProjectAssignment(ProjectAssignmentObjectMother.createProjectAssignment(2)); }
public static AssignmentAggregateReportElement createProjectAssignmentAggregate(int baseId, int customerId, int userId) { AssignmentAggregateReportElement pag = new AssignmentAggregateReportElement(); pag.setHours(baseId); pag.setProjectAssignment(ProjectAssignmentObjectMother.createProjectAssignment(baseId, customerId, userId)); return pag; } }
@Test public void should_get_timesheet_overview() throws Exception { List<TimesheetEntry> daoResults = new ArrayList<>(); List<AssignmentAggregateReportElement> reportResults = new ArrayList<>(); Calendar cal = new GregorianCalendar(); TimesheetEntry entryA, entryB; TimesheetEntryId idA, idB; idA = new TimesheetEntryId(new Date(2006 - 1900, Calendar.OCTOBER, 2), null); entryA = new TimesheetEntry(); entryA.setEntryId(idA); entryA.setHours((float) 5); daoResults.add(entryA); idB = new TimesheetEntryId(new Date(2006 - 1900, Calendar.OCTOBER, 6), null); entryB = new TimesheetEntry(); entryB.setEntryId(idB); entryB.setHours((float) 3); daoResults.add(entryB); AssignmentAggregateReportElement agg = new AssignmentAggregateReportElement(); ProjectAssignment pa = ProjectAssignmentObjectMother.createProjectAssignment(0); agg.setProjectAssignment(pa); reportResults.add(agg); when(timesheetDAO.getTimesheetEntriesInRange(1, DateUtil.calendarToMonthRange(cal))).thenReturn(daoResults); when(aggregateReportService.getHoursPerAssignmentInRange(1, DateUtil.calendarToMonthRange(cal))).thenReturn(reportResults); timesheetService.getTimesheetOverview(new User(1), cal); verify(timesheetDAO).getTimesheetEntriesInRange(1, DateUtil.calendarToMonthRange(cal)); verify(aggregateReportService).getHoursPerAssignmentInRange(1, DateUtil.calendarToMonthRange(cal)); }
@Test public void testGetProgressPercentageAllotted() { ProjectAssignment assignment = new ProjectAssignment(); assignment.setAssignmentType(new ProjectAssignmentType(EhourConstants.ASSIGNMENT_TIME_ALLOTTED_FIXED)); assignment.setAllottedHours(100f); AssignmentAggregateReportElement ele = new AssignmentAggregateReportElement(); ele.setHours(96f); ele.setProjectAssignment(assignment); assertEquals(96, ele.getProgressPercentage().get(), 0f); }
/** * Test method for {@link net.rrm.ehour.persistence.persistence.report.reports.element.AssignmentAggregateReportElement#getAvailableHours()}. */ @Test public void testGetAvailableHoursFixed() { ProjectAssignment assignment = new ProjectAssignment(); assignment.setAssignmentType(new ProjectAssignmentType(EhourConstants.ASSIGNMENT_TIME_ALLOTTED_FIXED)); assignment.setAllottedHours(100f); AssignmentAggregateReportElement ele = new AssignmentAggregateReportElement(); ele.setHours(96f); ele.setProjectAssignment(assignment); assertEquals(4, ele.getAvailableHours().get(), 0f); }
/** * Test method for {@link net.rrm.ehour.persistence.persistence.report.reports.element.AssignmentAggregateReportElement#getAvailableHours()}. */ @Test public void testGetAvailableHoursFlex() { ProjectAssignment assignment = new ProjectAssignment(); assignment.setAssignmentType(new ProjectAssignmentType(EhourConstants.ASSIGNMENT_TIME_ALLOTTED_FLEX)); assignment.setAllottedHours(100f); assignment.setAllowedOverrun(40f); AssignmentAggregateReportElement ele = new AssignmentAggregateReportElement(); ele.setHours(113f); ele.setProjectAssignment(assignment); assertEquals(27, ele.getAvailableHours().get(), 0f); }
@Test public void testGetProgressPercentageDate() { ProjectAssignment assignment = new ProjectAssignment(); assignment.setAssignmentType(new ProjectAssignmentType(EhourConstants.ASSIGNMENT_DATE)); LocalDate base = LocalDate.parse("2015-01-01"); DateTimeUtils.setCurrentMillisFixed(base.toDateTimeAtCurrentTime().getMillis()); assignment.setDateStart(base.minusDays(3).toDate()); assignment.setDateEnd(base.plusDays(3).toDate()); AssignmentAggregateReportElement ele = new AssignmentAggregateReportElement(); ele.setProjectAssignment(assignment); assertEquals(50, ele.getProgressPercentage().get(), 2f); }