@Transactional public String deleteVacationApprovalByIdAndCheckIsApproved(Integer approvalId) { final JsonArrayNodeBuilder builder = anArrayBuilder(); VacationApproval vacationApproval = find(approvalId); final Employee employee = securityService.getSecurityPrincipal().getEmployee(); final boolean isAdmin = employeeService.isEmployeeAdmin(employee.getId()); String message = null; if (isAdmin) { if (vacationApproval != null) { deleteVacationApproval(vacationApproval); } else { message = "Ошибка при удалении, данные отсутствуют"; } } else { message = "Ошибка доступа"; } Vacation vacation = vacationApproval.getVacation(); if (vacation == null) { message = "Ошибка при удалении, данные отсутствуют"; } try { vacationApprovalProcessService.checkVacationIsApproved(vacation); } catch (VacationApprovalServiceException e) { message = e.getLocalizedMessage(); } builder.withElement( anObjectBuilder() .withField("status", aNumberBuilder(message == null ? "0" : "-1")) .withField("message", aStringBuilder(message == null ? "" : message))); return JsonUtil.format(builder); }
/* функция возвращает можно ли удалить планируемый отпуск в таблице заявлений на отпуск */ 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; }