@Override @Transactional public void validatePMRoles(Project project) { userService.validateProjectManagementRoles(project.getProjectManager() == null ? null : project.getProjectManager().getUserId()); }
public static List<Project> filterProjectsOnPm(User requiredPm, Collection<Project> projects) { List<Project> pmProjects = Lists.newArrayList(); for (Project project : projects) { if (requiredPm.equals(project.getProjectManager())) { pmProjects.add(project); } } return pmProjects; } }
/** * @see java.lang.Object#toString() */ public String toString() { return new ToStringBuilder(this).append("active", this.active) .append("PK", this.getPK()) .append("defaultProject", this.defaultProject) .append("fullname", this.getFullName()) .append("projectCode", this.getProjectCode()) .append("name", this.getName()) .append("projectId", this.getProjectId()) .append("billable", this.isBillable()) .append("pm", this.getProjectManager()) .toString(); }
private boolean canNotifyPm(ProjectAssignment assignment) { return assignment.isNotifyPm() && assignment.getProject().getProjectManager() != null && assignment.getProject().getProjectManager().getEmail() != null; } }
@PostConstruct @Transactional(propagation = Propagation.REQUIRES_NEW) public void init() { LOGGER.info("Finding and fixing users who are PM but don't have PM role (EHO-381)"); List<Project> projectsWithPmSet = projectDao.findAllProjectsWithPmSet(); for (Project project : projectsWithPmSet) { User pm = project.getProjectManager(); boolean hasPmRole = pm.getUserRoles().contains(UserRole.PROJECTMANAGER); if (!hasPmRole) { LOGGER.warn(String.format("%s (%s) does not have PM role but is PM for %s. Adding PM role.", pm.getFullName(), pm.getPK(), project.getFullName())); projectService.validatePMRoles(project); } } } }
@Test public void should_mail_pm_when_status_of_project_changes() throws OverBudgetException { when(timesheetDAO.getLatestTimesheetEntryForAssignment(assignment.getAssignmentId())).thenReturn(newEntries.get(0)); when(timesheetDAO.getTimesheetEntriesInRange(any(ProjectAssignment.class), any(DateRange.class))).thenReturn(existingEntries); ProjectAssignmentStatus beforeStatus = new ProjectAssignmentStatus(); beforeStatus.addStatus(Status.IN_ALLOTTED); beforeStatus.setValid(true); ProjectAssignmentStatus afterStatus = new ProjectAssignmentStatus(); afterStatus.addStatus(Status.IN_OVERRUN); afterStatus.setValid(true); afterStatus.setAggregate(new AssignmentAggregateReportElement()); when(statusService.getAssignmentStatus(assignment)).thenReturn(beforeStatus); when(statusService.getAssignmentStatus(assignment)).thenReturn(beforeStatus, afterStatus); persister.validateAndPersist(assignment, newEntries, new DateRange(), Lists.<Date>newArrayList()); verify(timesheetDAO).delete(any(TimesheetEntry.class)); verify(timesheetDAO).merge(any(TimesheetEntry.class)); verify(projectManagerNotifierService).mailPMFlexAllottedReached(any(AssignmentAggregateReportElement.class), any(Date.class), eq(assignment.getProject().getProjectManager())); }
private void notifyPm(ProjectAssignment assignment, ProjectAssignmentStatus status) { TimesheetEntry entry; entry = timesheetDAO.getLatestTimesheetEntryForAssignment(assignment.getAssignmentId()); // over alloted - fixed if (assignment.getAssignmentType().getAssignmentTypeId() == EhourConstants.ASSIGNMENT_TIME_ALLOTTED_FIXED && status.getStatusses().contains(ProjectAssignmentStatus.Status.OVER_ALLOTTED)) { projectManagerNotifierService.mailPMFixedAllottedReached(status.getAggregate(), entry.getEntryId().getEntryDate(), assignment.getProject().getProjectManager()); } // over overrun - flex else if (assignment.getAssignmentType().getAssignmentTypeId() == EhourConstants.ASSIGNMENT_TIME_ALLOTTED_FLEX && status.getStatusses().contains(ProjectAssignmentStatus.Status.OVER_OVERRUN)) { projectManagerNotifierService.mailPMFlexOverrunReached(status.getAggregate(), entry.getEntryId().getEntryDate(), assignment.getProject().getProjectManager()); } // in overrun - flex else if (status.getStatusses().contains(ProjectAssignmentStatus.Status.IN_OVERRUN) && assignment.getAssignmentType().getAssignmentTypeId() == EhourConstants.ASSIGNMENT_TIME_ALLOTTED_FLEX) { projectManagerNotifierService.mailPMFlexAllottedReached(status.getAggregate(), entry.getEntryId().getEntryDate(), assignment.getProject().getProjectManager()); } }