// user func
  @RequestMapping(
      value = {"/workspace/general/to-participate-in-the-event"},
      method = RequestMethod.GET)
  public String toParticipateInTheEvent(
      ModelMap modelMap, @RequestParam String eventId, Principal principal) {
    EventEntity eventEntity = eventService.findById(eventId);
    UserEntity userEntity = userService.findByUsername(principal.getName());
    Set<EventEntity> userEvents = userEntity.getUserEvents();
    if (eventEntity.getTheCurrentNumberOfParticipants() + 1 > eventEntity.getCountParticipants()) {
      modelMap.addAttribute("textPage", ActionMessage.THE_EXCESS_NUMBER_OF_PARTICIPANTS);
      return "pages/general/success-template-page";
    } else {
      if (null != userEvents) {
        userEvents.add(eventEntity);
      } else {
        userEvents = new HashSet<EventEntity>();
        userEvents.add(eventEntity);
      }
      userEntity.setUserEvents(userEvents);
      userService.update(userEntity);

      try {
        mailService.sendEmail(
            MailMessageText.helloLetterRegisterOfEventHeader(eventEntity),
            MailMessageText.helloLetterRegisterOfEventBody(eventEntity),
            new String[] {userEntity.getEmail()});
      } catch (MessagingException e) {
        modelMap.addAttribute("textPage", ActionMessage.ERROR_ACTION);
      }

      modelMap.addAttribute("textPage", ActionMessage.SUCCESS_EVENT_USER_REGISTRATION);
      return "pages/general/success-template-page";
    }
  }
 @RequestMapping(
     value = {"/workspace/general/delete-event"},
     method = RequestMethod.POST)
 public String deleteEvents(
     ModelMap modelMap,
     @RequestParam String eventId,
     @RequestParam String theReasonForRemoval,
     Principal principal) {
   EventEntity eventEntity = eventService.findById(eventId);
   if (null != eventId && null != eventEntity) {
     List<String> usersMail = eventService.getMailParticipants(eventId);
     String[] userMailArray = new String[usersMail.size()];
     eventEntity.setTheReasonForRemoval(theReasonForRemoval);
     eventEntity.setEventStatus("Проведение мероприятия остановленно");
     eventService.update(eventEntity);
     try {
       mailService.sendEmail(
           MailMessageText.removeEventLetterRegisterOfEventHeader(eventEntity),
           MailMessageText.removeEventLetterRegisterOfEventHeader(eventEntity),
           usersMail.toArray(userMailArray));
     } catch (MessagingException e) {
       modelMap.addAttribute("textPage", ActionMessage.ERROR_ACTION);
       return "pages/general/success-template-page";
     }
     modelMap.addAttribute("textPage", ActionMessage.STOPPING_OF_CONDUCT);
     return "pages/general/success-template-page";
   } else {
     modelMap.addAttribute("textPage", ActionMessage.ERROR_ACTION);
     return "pages/general/success-template-page";
   }
 }
  @RequestMapping(
      value = "/workspace/trade-union-activists/update-event-images",
      method = RequestMethod.POST,
      produces = "text/plain; charset=utf-8")
  public String getUpdateEventImg(
      @ModelAttribute("uploadForm") FileUploadForm uploadForm,
      ModelMap map,
      @RequestParam String eventId,
      @RequestParam(required = false) String[] idPictures) {

    EventEntity eventEntity = eventService.findById(eventId);

    Set<ImageEntity> imageEntityList = new HashSet<>();

    if (null != idPictures) {
      imageEntityList = eventService.deleteFromEventsImage(eventEntity, idPictures);
    }

    byte fileBytes[];
    FileOutputStream fos = null;
    List<MultipartFile> list = uploadForm.getFiles();
    List<String> filenames = new ArrayList<>();
    if (list != null && list.size() > 0) {
      for (MultipartFile multipartFile : list) {
        final String fileName = multipartFile.getOriginalFilename();
        String webappRoot = servletContext.getRealPath("/");
        final String relativeFolder =
            "/resources" + File.separator + "img" + File.separator + "files" + File.separator;
        String path = webappRoot + relativeFolder + fileName;

        if (checkFormatFileUtils.checkingForImage(fileName)) {
          ImageEntity imageEntity =
              new ImageEntity() {
                {
                  setIdImage(Utils.generateIdentifier());
                  setPathToTheFileSystem(relativeFolder + fileName);
                }
              };
          imageEntityList.add(imageEntity);
        }
        try {
          fos = new FileOutputStream(new File(path));
          fileBytes = multipartFile.getBytes();
          fos.write(fileBytes);
          filenames.add(fileName);
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }
    if (null != imageEntityList) {
      eventEntity.setEventImages(imageEntityList);
    }
    eventService.update(eventEntity);
    map.addAttribute("textPage", ActionMessage.READ_EVENT);
    return "pages/general/success-template-page";
  }
 @RequestMapping(
     value = {"/workspace/general/update-event"},
     method = RequestMethod.POST,
     produces = "application/json; charset=utf-8")
 public @ResponseBody String updateEvents(
     @RequestParam String eventName,
     @RequestParam String typeOfEvent,
     @RequestParam String countParticipants,
     @RequestParam String dateBegin,
     @RequestParam String dateEnd,
     @RequestParam String descriptionEvent,
     @RequestParam String roleUser,
     @RequestParam String eventId,
     Principal principal,
     ModelMap modelMap) {
   EventEntity eventEntity = eventService.findById(eventId);
   if (null != eventId && null != eventEntity) {
     if (eventService.checkChangeRoleUsersOnEvent(roleUser, eventId)) {
       if (eventService.changeCountParticipantsUser(countParticipants, eventId)) {
         TypeOfEventEntity typeOfEventEntity = eventTypeService.findById(typeOfEvent);
         eventEntity.setRoleParticipants("[" + roleUser + "]");
         eventEntity.setEventDescription(descriptionEvent);
         eventEntity.setEventName(eventName);
         eventEntity.setCountParticipants(new Integer(countParticipants));
         eventEntity.setDateAndTimeBegin(Utils.convertStringToSqlFormatDate(dateBegin));
         eventEntity.setDateAndTimeEnd(Utils.convertStringToSqlFormatDate(dateEnd));
         eventEntity.setIdTypeOfEvent(typeOfEventEntity.getIdTypeOfEvent());
         eventEntity.setEventStatus(eventService.checkStatusEvent(dateBegin, dateEnd));
         eventService.update(eventEntity);
         return String.valueOf(HttpStatus.OK);
       } else {
         return String.valueOf(ActionMessage.ERROR_CHANGE_COUNT_PARTICIPANTS);
       }
     } else {
       return String.valueOf(ActionMessage.ERROR_CHANGE_EVENT_USER_ROLE);
     }
   } else {
     return ActionMessage.ERROR_ACTION;
   }
 }
  @RequestMapping(
      value = {"/workspace/trade-union-activists/add-event"},
      method = RequestMethod.POST)
  public String addEvents(
      @ModelAttribute("uploadForm") FileUploadForm uploadForm,
      @RequestParam String eventName,
      @RequestParam String typeOfEvent,
      @RequestParam String countParticipants,
      @RequestParam String dateBegin,
      @RequestParam String dateEnd,
      @RequestParam String descriptionEvent,
      @RequestParam String roleUser,
      @RequestParam String intervalsOfAMailingGroup,
      Principal principal,
      ModelMap modelMap) {
    TypeOfEventEntity typeOfEventEntity = eventTypeService.findById(typeOfEvent);
    EventEntity eventEntity = new EventEntity();
    eventEntity.setRoleParticipants("[" + roleUser + "]");
    eventEntity.setIdEvent(Utils.generateIdentifier());
    eventEntity.setEventDescription(descriptionEvent);
    eventEntity.setIntervalsOfAMailingGroup(intervalsOfAMailingGroup);
    eventEntity.setEventName(eventName);
    eventEntity.setCountParticipants(new Integer(countParticipants));
    eventEntity.setDateAndTimeBegin(Utils.convertStringToSqlFormatDate(dateBegin));
    eventEntity.setDateAndTimeEnd(Utils.convertStringToSqlFormatDate(dateEnd));
    eventEntity.setIdTypeOfEvent(typeOfEventEntity.getIdTypeOfEvent());
    eventEntity.setEventStatus(eventService.checkStatusEvent(dateBegin, dateEnd));
    eventEntity.setTheCurrentNumberOfParticipants(0);
    eventEntity.setIdOrganizer(userService.findByUsername(principal.getName()).getIdUser());
    eventEntity.setEventOrganizer(userService.findByUsername(principal.getName()));

    Set<ImageEntity> imageEntityList = new HashSet<>();

    byte fileBytes[];
    FileOutputStream fos = null;
    List<MultipartFile> list = uploadForm.getFiles();
    Set<String> filenames = new HashSet<>();
    if (list != null && list.size() > 0) {
      for (MultipartFile multipartFile : list) {
        String fileName = multipartFile.getOriginalFilename();

        String webappRoot = servletContext.getRealPath("/");
        String relativeFolder =
            "/resources" + File.separator + "img" + File.separator + "files" + File.separator;
        String path = webappRoot + relativeFolder + fileName;

        if (checkFormatFileUtils.checkingForImage(fileName)) {
          ImageEntity imageEntity = new ImageEntity();
          imageEntity.setIdImage(Utils.generateIdentifier());
          imageEntity.setPathToTheFileSystem(relativeFolder + fileName);
          imageEntityList.add(imageEntity);
        }
        File file = new File(path);

        try {

          fos = new FileOutputStream(file);
          fileBytes = multipartFile.getBytes();
          fos.write(fileBytes);
          filenames.add(fileName);
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }

    /*newsEntity.setNewsDocuments(documentEntities);*/
    eventEntity.setEventImages(imageEntityList);

    eventService.save(eventEntity);
    modelMap.addAttribute("textPage", ActionMessage.SUCCESS_EVENT_REGISTER);
    return "pages/general/success-template-page";
  }