private String getAvailableActCategoriesJson() {
   StringBuilder sb = new StringBuilder();
   List<DictionaryItem> actTypes = dictionaryItemService.getTypesOfActivity();
   List<ProjectRole> projectRoles = projectRoleService.getProjectRoles();
   sb.append("[");
   for (int i = 0; i < actTypes.size(); i++) {
     for (ProjectRole projectRole : projectRoles) {
       sb.append("{actType:'").append(actTypes.get(i).getId()).append("', ");
       sb.append("projRole:'").append(projectRole.getId()).append("', ");
       List<AvailableActivityCategory> avActCats =
           availableActivityCategoryService.getAvailableActivityCategories(
               actTypes.get(i), projectRole);
       sb.append("avActCats:[");
       for (int k = 0; k < avActCats.size(); k++) {
         sb.append("'").append(avActCats.get(k).getActCat().getId()).append("'");
         if (k < (avActCats.size() - 1)) {
           sb.append(", ");
         }
       }
       sb.append("]}");
       if (i < (actTypes.size())) {
         sb.append(", ");
       }
     }
   }
   return sb.toString().substring(0, (sb.toString().length() - 2)) + "]";
 }
 private String getSelectedCalDateJson(TimeSheetForm tsForm) {
   StringBuilder sb = new StringBuilder();
   String date = "";
   sb.append("'");
   if (DateTimeUtil.isDateValid(tsForm.getCalDate())) {
     date = DateTimeUtil.formatDateString(tsForm.getCalDate());
     sb.append(date);
   }
   sb.append("'");
   logger.debug("SelectedCalDateJson = {}", date);
   return sb.toString();
 }
 private String getSelectedLongVacationIllnessJson(TimeSheetForm tsForm) {
   StringBuilder sb = new StringBuilder();
   if (tsForm.isLongIllness() || tsForm.isLongVacation()) {
     sb.append("[");
     sb.append("{vacation:'").append(tsForm.isLongVacation()).append("', ");
     sb.append("illness:'").append(tsForm.isLongIllness()).append("', ");
     sb.append("beginDate:'").append(tsForm.getBeginLongDate()).append("', ");
     sb.append("endDate:'").append(tsForm.getEndLongDate()).append("'}");
     sb.append("]");
   } else {
     sb.append("[{vacation:'false', illness:'false', beginDate:'', endDate:''}]");
   }
   return sb.toString();
 }
 private String getSelectedActCategoriesJson(TimeSheetForm tsForm) {
   StringBuilder sb = new StringBuilder();
   List<TimeSheetTableRowForm> tablePart = tsForm.getTimeSheetTablePart();
   if (tablePart != null) {
     sb.append("[");
     for (int i = 0; i < tablePart.size(); i++) {
       sb.append("{row:'").append(i).append("', ");
       sb.append("actCat:'").append(tablePart.get(i).getActivityCategoryId()).append("'}");
       if (i < (tablePart.size() - 1)) {
         sb.append(", ");
       }
     }
     sb.append("]");
   } else {
     sb.append("[{row:'0', actCat:''}]");
   }
   return sb.toString();
 }
 private String getSelectedProjectRolesJson(TimeSheetForm tsForm) {
   StringBuilder sb = new StringBuilder();
   List<TimeSheetTableRowForm> tablePart = tsForm.getTimeSheetTablePart();
   if (tablePart != null) {
     sb.append("[");
     for (int i = 0; i < tablePart.size(); i++) {
       if (!"".equals(tablePart.get(i).getCqId())) {
         sb.append("{row:'").append(i).append("', ");
         sb.append("role:'").append(tablePart.get(i).getProjectRoleId()).append("'}");
         if (i < (tablePart.size() - 1)) {
           sb.append(", ");
         }
       }
     }
     sb.append("]");
   } else {
     sb.append("[{row:'0', role:''}]");
   }
   return sb.toString();
 }
 private String getProjectTaskListJson(List<Project> projects) {
   StringBuilder sb = new StringBuilder();
   sb.append("[");
   for (int i = 0; i < projects.size(); i++) {
     Integer projectId = projects.get(i).getId();
     List<ProjectTask> tasks = projectTaskService.getProjectTasks(projectId);
     sb.append("{projId:'");
     sb.append(projectId);
     sb.append("', projTasks:[");
     for (int j = 0; j < tasks.size(); j++) {
       sb.append("{id:'");
       sb.append(tasks.get(j).getCqId());
       sb.append("', value:'");
       sb.append(tasks.get(j).getCqId());
       sb.append("'}");
       if (j < (tasks.size() - 1)) {
         sb.append(", ");
       }
     }
     sb.append("]}");
     if (i < (projects.size() - 1)) {
       sb.append(", ");
     }
   }
   sb.append("]");
   return sb.toString();
 }
  private String getDictionaryItemsInJson(List<DictionaryItem> items) {
    StringBuilder builder = new StringBuilder();
    builder.append("[");
    for (DictionaryItem item : items) {
      builder.append("{id:'");
      builder.append(item.getId().toString());
      builder.append("', value:'");
      builder.append(item.getValue());
      builder.append("'},");
    }
    if (builder.length() > 1) {
      builder.deleteCharAt(builder.length() - 1);
    }

    builder.append("]");
    return builder.toString();
  }
  /*
   * Возвращает HashMap со значениями для заполнения списков сотрудников,
   * проектов, пресейлов, проектных задач, типов и категорий активности на
   * форме приложения.
   */
  private Map<String, Object> getListsToMAV() {
    Map<String, Object> result = new HashMap<String, Object>();

    List<DictionaryItem> typesOfActivity = dictionaryItemService.getTypesOfActivity();
    result.put("actTypeList", typesOfActivity);

    String typesOfActivityJson = getDictionaryItemsInJson(typesOfActivity);
    result.put("actTypeJson", typesOfActivityJson);

    String workplacesJson = getDictionaryItemsInJson(dictionaryItemService.getWorkplaces());
    result.put("workplaceJson", workplacesJson);

    result.put(
        "overtimeCauseJson", getDictionaryItemsInJson(dictionaryItemService.getOvertimeCauses()));
    result.put(
        "unfinishedDayCauseJson",
        getDictionaryItemsInJson(dictionaryItemService.getUnfinishedDayCauses()));
    result.put("overtimeThreshold", propertyProvider.getOvertimeThreshold());

    List<Division> divisions = divisionService.getDivisions();
    result.put("divisionList", divisions);

    result.put(
        "employeeListJson",
        employeeHelper.getEmployeeListJson(divisions, employeeService.isShowAll(request)));

    List<DictionaryItem> categoryOfActivity = dictionaryItemService.getCategoryOfActivity();
    result.put("actCategoryList", categoryOfActivity);

    String actCategoryListJson = getDictionaryItemsInJson(categoryOfActivity);
    result.put("actCategoryListJson", actCategoryListJson);

    result.put("availableActCategoriesJson", getAvailableActCategoriesJson());

    result.put("projectListJson", projectService.getProjectListJson(divisions));
    result.put("projectTaskListJson", getProjectTaskListJson(projectService.getProjectsWithCq()));

    List<ProjectRole> projectRoleList = projectRoleService.getProjectRoles();

    for (int i = 0; i < projectRoleList.size(); i++) {
      if (projectRoleList
          .get(i)
          .getCode()
          .equals("ND")) { // Убираем из списка роль "Не определена" APLANATS-270
        projectRoleList.remove(i);
        break;
      }
    }

    result.put("projectRoleList", projectRoleList);
    StringBuilder projectRoleListJson = new StringBuilder();
    projectRoleListJson.append("[");
    for (ProjectRole item : projectRoleList) {
      projectRoleListJson.append("{id:'");
      projectRoleListJson.append(item.getId().toString());
      projectRoleListJson.append("', value:'");
      projectRoleListJson.append(item.getName());
      projectRoleListJson.append("'},");
    }
    result.put(
        "projectRoleListJson",
        projectRoleListJson.toString().substring(0, (projectRoleListJson.toString().length() - 1))
            + "]");

    return result;
  }