/** проверяем, согласован ли отпуск с линейным руководителем */ protected Boolean vacationIsApprovedByLineManager(Vacation vacation) throws VacationApprovalServiceException { if (vacation.getStatus() != null && approvedByLineManager.contains( vacation.getStatus().getId())) { // проверка уже утвержденного отпуска return true; } if (!managerExists( vacation .getEmployee())) { // если линейных нет или сам себе линейный - утверждаем без проверок setFinalStatusForVacationAndSendVacationApprovedMessages(vacation, true); return true; } /* APLANATS-865 Boolean manager2Result = getManager2Result(vacation); //если второй линейный отказал - сразу возвращаем отказ if (BooleanUtils.isFalse(manager2Result)) { return manager2Result; }*/ int lineManagerDaysToApprove = getControlTimeForLineManager(vacation); VacationApproval lineManagerApproval = getTopLineManagerApproval(vacation); if (lineManagerApproval.getResult() != null) { // нашли результат у одного из линейных setFinalStatusForVacationAndSendVacationApprovedMessages( vacation, lineManagerApproval.getResult()); return lineManagerApproval.getResult(); } if (lineManagerHasTimeToApproveVacation( lineManagerDaysToApprove, lineManagerApproval)) { // у линейного еще есть время подумать return lineManagerApproval.getResult(); } /*if (manager2Result != null) { //после проверки всех линейных, если они не отвечают и если второй линейный вынес решение - возвращаем его return manager2Result; }*/ VacationApproval approvalResult = prepareApproveLetterForLineManagerOfEmployee(vacation, lineManagerApproval.getManager()); if (approvalResult != null) { sendMailService.performVacationApproveRequestSender( approvalResult); // посылаем письмо с уведомлением следующему в иерархии линейному // руководителю } else { if (!employeeService.isLineManager( vacation.getEmployee())) { // проверяем, что сотрудник - не чей-то линейный setFinalStatusForVacationAndSendVacationApprovedMessages(vacation, true); return true; } } return false; }
// возвращает количество дней в списке отпусков (в зависимости от того какой список был передан) private int getSummaryDaysCount(Map<Vacation, Integer> days) { int summaryDays = 0; for (Map.Entry<Vacation, Integer> entry : days.entrySet()) { Vacation vacation = entry.getKey(); Integer daysInVacation = entry.getValue(); if (VacationStatusEnum.APPROVED.getId() == vacation.getStatus().getId() || VacationTypesEnum.PLANNED.getId() == vacation.getType().getId()) { summaryDays += daysInVacation; } } return summaryDays; }
public JsonArrayNodeBuilder createVacationsNode(Employee employee, List<Vacation> vacationList) { JsonArrayNodeBuilder vacationNode = anArrayBuilder(); for (Vacation vacation : vacationList) { if (vacation.getEmployee().equals(employee)) { vacationNode.withElement( anObjectBuilder() .withField( "beginDate", aStringBuilder(dateToString(vacation.getBeginDate(), VIEW_DATE_PATTERN))) .withField( "endDate", aStringBuilder(dateToString(vacation.getEndDate(), VIEW_DATE_PATTERN))) .withField("status", aStringBuilder(vacation.getStatus().getValue())) .withField("type", aStringBuilder(vacation.getType().getId().toString())) .withField("typeName", aStringBuilder(vacation.getType().getValue()))); } } return vacationNode; }
/* функция возвращает можно ли удалить планируемый отпуск в таблице заявлений на отпуск */ public Boolean isVacationDeletePermission(Vacation vacation, Employee employee) { if (employee != null && vacation != null) { /* проверим Админ ли текущий пользователь */ if (employeeService.isEmployeeAdmin(employee.getId())) { return Boolean.TRUE; } else { /* для запланированных отпусков проверяем что это либо создатель отпуска либо сам отпускник * либо является лин. рук. отпускника */ if (vacation.getType().getId() == VacationTypesEnum.PLANNED.getId() && (vacation.getEmployee().equals(employee) || vacation.getAuthor().equals(employee) || employeeService.getLinearEmployees(vacation.getEmployee()).contains(employee))) { return Boolean.TRUE; } /* пользователь создатель или отпускник и статус не отклонено и не утверждено */ if ((vacation.getEmployee().equals(employee) || vacation.getAuthor().equals(employee)) && vacation.getStatus().getId() != VacationStatusEnum.REJECTED.getId() && vacation.getStatus().getId() != VacationStatusEnum.APPROVED.getId()) { return Boolean.TRUE; } } } return Boolean.FALSE; }
public Boolean isVacationNotApproved(Vacation vacation) { return !vacation .getStatus() .getId() .equals(dictionaryItemService.find(VacationStatusEnum.APPROVED.getId()).getId()); }
private boolean needsToBeApproved(Vacation vacation) { return !vacation.getStatus().getId().equals(VacationStatusEnum.APPROVED.getId()); }