@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);
  }
Esempio n. 2
0
 /* функция возвращает можно ли удалить планируемый отпуск в таблице заявлений на отпуск */
 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;
 }