public static FlatReportElement buildFlatReportElement(ProjectAssignment assignment) { FlatReportElement element = new FlatReportElement(); element.setAssignmentId(assignment.getAssignmentId()); element.setRole(assignment.getRole()); Project project = assignment.getProject(); Customer customer = project.getCustomer(); element.setCustomerCode(customer.getCode()); element.setCustomerId(customer.getCustomerId()); element.setCustomerName(customer.getName()); element.setEmptyEntry(true); element.setProjectCode(project.getProjectCode()); element.setProjectId(project.getProjectId()); element.setProjectName(project.getName()); element.setRate(assignment.getHourlyRate()); User user = assignment.getUser(); element.setUserId(user.getUserId()); element.setUserFirstName(user.getFirstName()); element.setUserLastName(user.getLastName()); element.setDisplayOrder(1); return element; } }
/** * @see java.lang.Object#equals(Object) */ public boolean equals(Object object) { if (!(object instanceof FlatReportElement)) { return false; } FlatReportElement rhs = (FlatReportElement) object; return new EqualsBuilder() .append(this.assignmentId, rhs.getAssignmentId()) .append(this.dayDate, rhs.getDayDate()) .append(this.entryDate, rhs.getEntryDate()) .append(this.totalHours, rhs.getTotalHours()) .append(this.totalTurnOver, rhs.getTotalTurnOver()) .append(this.displayOrder, rhs.getDisplayOrder()) .isEquals(); }
@Test public void should_add_locked_days_to_detailed_report() { DateTime dateTime = new DateTime(reportCriteria.getReportRange().getDateStart()); Interval interval = new Interval(dateTime, dateTime); provideNoAssignmentsWithoutBookings(); when(timesheetLockService.findLockedDatesInRange(any(Date.class), any(Date.class))) .thenReturn(WrapAsScala$.MODULE$.asScalaBuffer(Lists.newArrayList(interval))); FlatReportElement reportElement = new FlatReportElement(); reportElement.setDayDate(dateTime.toDate()); when(detailedReportDao.getHoursPerDay(any(DateRange.class))) .thenReturn(Arrays.asList(reportElement)); noFilteringOnUserOrProject(); ReportData reportData = detailedReportService.getDetailedReportData(reportCriteria); FlatReportElement flat = (FlatReportElement) reportData.getReportElements().get(0); assertTrue(flat.getLockableDate().isLocked()); verify(detailedReportDao).getHoursPerDay(any(DateRange.class)); verify(timesheetLockService).findLockedDatesInRange(any(Date.class), any(Date.class)); }
@Override protected List<FlatReportElement> getReportElements(List<User> users, List<Project> projects, List<Date> lockedDates, DateRange reportRange, boolean showZeroBookings) { List<Integer> userIds = DomainUtil.getIdsFromDomainObjects(users); List<Integer> projectIds = DomainUtil.getIdsFromDomainObjects(projects); List<FlatReportElement> elements = getElements(userIds, projectIds, reportRange); for (FlatReportElement element : elements) { Date date = element.getDayDate(); element.setLockableDate(new LockableDate(date, lockedDates.contains(date))); } if (showZeroBookings) { List<FlatReportElement> reportElementsForAssignmentsWithoutBookings = getReportElementsForAssignmentsWithoutBookings(reportRange, userIds, projectIds); reportElementsForAssignmentsWithoutBookings.addAll(elements); return reportElementsForAssignmentsWithoutBookings; } else { return elements; } }
@Test public void shouldGetHoursPerDayForProjectsAndUsers() { DateRange dateRange = new DateRange(new Date(2006 - 1900, 5 - 1, 1), // deprecated? hmm ;) new Date(2008 - 1900, 1, 3)); List<Integer> projectIds = new ArrayList<>(); projectIds.add(2); List<Integer> userIds = new ArrayList<>(); userIds.add(1); List<FlatReportElement> results = detailedReportDao.getHoursPerDayForProjectsAndUsers(projectIds, userIds, dateRange); assertEquals(2, results.size()); assertEquals(2, results.get(0).getProjectId().intValue()); }
@Test public void should_provide_assignments_without_bookings() { provideNoLocks(); noFilteringOnUserOrProject(); when(reportAggregatedDao.getAssignmentsWithoutBookings(reportCriteria.getReportRange())).thenReturn(Arrays.asList(ProjectAssignmentObjectMother.createProjectAssignment(1))); userSelectedCriteria.setShowZeroBookings(true); Project billableProject = ProjectObjectMother.createProject(1); billableProject.setBillable(true); Project notBillableProject = ProjectObjectMother.createProject(2); notBillableProject.setBillable(false); when(projectDao.findAllActive()).thenReturn(Arrays.asList(billableProject)); when(detailedReportDao.getHoursPerDay(reportCriteria.getReportRange())).thenReturn(Arrays.asList(createFlatReportElement())); ReportData reportData = detailedReportService.getDetailedReportData(reportCriteria); FlatReportElement element = (FlatReportElement) reportData.getReportElements().get(0); assertTrue(element.isEmptyEntry()); verify(detailedReportDao).getHoursPerDay(reportCriteria.getReportRange()); verify(reportAggregatedDao).getAssignmentsWithoutBookings(reportCriteria.getReportRange()); } }
@Test public void shouldGetHoursPerDayForProjects() { DateRange dateRange = new DateRange(new Date(2006 - 1900, 5 - 1, 1), // deprecated? hmm ;) new Date(2008 - 1900, 1, 3)); List<Integer> projectIds = new ArrayList<>(); projectIds.add(2); List<FlatReportElement> results = detailedReportDao.getHoursPerDayForProjects(projectIds, dateRange); assertEquals(4, results.size()); assertEquals(2, results.get(0).getProjectId().intValue()); }
@Test public void shouldGetHoursPerDayForUsers() { DateRange dateRange = new DateRange(new Date(2006 - 1900, 5 - 1, 1), // deprecated? hmm ;) new Date(2008 - 1900, 1, 3)); List<Integer> userIds = new ArrayList<>(); userIds.add(1); List<FlatReportElement> results = detailedReportDao.getHoursPerDayForUsers(userIds, dateRange); assertEquals(10, results.size()); assertNotNull(results.get(0).getProjectId()); }