// 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/refuse-to-participate-in-the-event"},
     method = RequestMethod.GET)
 public String refuseToParticipateInTheEvent(
     ModelMap modelMap, @RequestParam String eventId, Principal principal) {
   EventEntity eventEntity = eventService.findById(eventId);
   UserEntity userEntity = userService.findByUsername(principal.getName());
   Set<EventEntity> userEvents = userEntity.getUserEvents();
   userEvents.remove(eventEntity);
   userEntity.setUserEvents(userEvents);
   userService.update(userEntity);
   try {
     mailService.sendEmail(
         MailMessageText.cancelLetterRegisterOfEventHeader(eventEntity),
         MailMessageText.cancelLetterRegisterOfEventBody(eventEntity),
         new String[] {userEntity.getEmail()});
   } catch (MessagingException e) {
     modelMap.addAttribute("textPage", ActionMessage.ERROR_ACTION);
   }
   modelMap.addAttribute("textPage", ActionMessage.CANCEL_EVENT_USER_REGISTRATION);
   return "pages/general/success-template-page";
 }
  @RequestMapping(
      value = {"/workspace/user/another-application-send-to-participate"},
      method = RequestMethod.GET)
  public String sendAnotherApplicationToParticipate(
      ModelMap modelMap, @RequestParam String idApplication, Principal principal) {
    ApplicationEntity applicationEntity = applicationService.findById(idApplication);
    if (null != idApplication && null != applicationEntity) {
      if ("true".equals(applicationEntity.getUserAttachFile())) {
        modelMap.addAttribute("idApplication", idApplication);
        UserEntity userEntity = userService.findByUsername(principal.getName());
        ApplicationUserForParticipationEntity activityApplication =
            applicationService.checkIsExistsActiveApplicationUserForParticipation(
                idApplication, userEntity, ProjectConstantsEnum.SEND_REQUEST.name());
        if (null != activityApplication) {
          modelMap.addAttribute("activityApplication", activityApplication);
        }
        return "pages/user/another-application/another-application-send";
      } else {
        ApplicationUserForParticipationEntity appUserForParticipationEntity =
            new ApplicationUserForParticipationEntity();
        appUserForParticipationEntity.setIdApplication(applicationEntity.getIdApplication());
        appUserForParticipationEntity.setDateAndTimeSendApplication(Utils.getTimestamp());
        appUserForParticipationEntity.setIdApplicationUserForParticipation(
            Utils.generateIdentifier());
        appUserForParticipationEntity.setIdUser(
            userService.findByUsername(principal.getName()).getIdUser());
        appUserForParticipationEntity.setStatusApplication(
            ProjectConstantsEnum.APPROVED_REQUEST.name());
        appUserForParticipationEntity.setApplicationEntity(applicationEntity);
        // applicationUserForParticipationService.save(appUserForParticipationEntity);

        Set<ApplicationUserForParticipationEntity> applicationUserForParticipationEntities;
        if (null == applicationEntity.getApplicationUserForParticipationEntities()) {
          applicationUserForParticipationEntities =
              new HashSet<ApplicationUserForParticipationEntity>();
          applicationUserForParticipationEntities.add(appUserForParticipationEntity);
        } else {
          applicationUserForParticipationEntities =
              applicationEntity.getApplicationUserForParticipationEntities();
          applicationUserForParticipationEntities.add(appUserForParticipationEntity);
        }
        applicationEntity.setApplicationUserForParticipationEntities(
            applicationUserForParticipationEntities);
        applicationService.update(applicationEntity);

        UserEntity userEntity = userService.findByUsername(principal.getName());
        Set<ApplicationEntity> applicationEntities;
        if (null == userEntity.getApplicationEntities()) {
          applicationEntities = new HashSet<ApplicationEntity>();
          applicationEntities.add(applicationEntity);
        } else {
          applicationEntities = userEntity.getApplicationEntities();
          applicationEntities.add(applicationEntity);
        }
        userEntity.setApplicationEntities(applicationEntities);
        userService.update(userEntity);

        modelMap.addAttribute("textPage", ActionMessage.SUCCESS_REGISTER_ON_APPLICATION);
        return "pages/general/success-template-page";
      }
    } else {
      modelMap.addAttribute("textPage", ActionMessage.ERROR_ACTION);
      return "pages/general/success-template-page";
    }
  }
  @RequestMapping(
      value = {"/workspace/user/another-application-send-to-participate-attach"},
      method = RequestMethod.POST)
  public String singleFileUpload(
      @Valid final File fileBucket,
      BindingResult result,
      ModelMap modelMap,
      Principal principal,
      @RequestParam String idApp)
      throws IOException {

    ApplicationEntity applicationEntity = applicationService.findById(idApp);
    if (null != idApp && null != applicationEntity) {
      ApplicationUserForParticipationEntity appUserForParticipationEntity =
          new ApplicationUserForParticipationEntity();
      appUserForParticipationEntity.setIdApplication(applicationEntity.getIdApplication());
      appUserForParticipationEntity.setDateAndTimeSendApplication(Utils.getTimestamp());
      appUserForParticipationEntity.setIdApplicationUserForParticipation(
          Utils.generateIdentifier());
      appUserForParticipationEntity.setIdUser(
          userService.findByUsername(principal.getName()).getIdUser());
      appUserForParticipationEntity.setStatusApplication(ProjectConstantsEnum.SEND_REQUEST.name());
      appUserForParticipationEntity.setApplicationEntity(applicationEntity);
      // applicationUserForParticipationService.save(appUserForParticipationEntity);

      Set<ApplicationUserForParticipationEntity> applicationUserForParticipationEntities;
      if (null == applicationEntity.getApplicationUserForParticipationEntities()) {
        applicationUserForParticipationEntities =
            new HashSet<ApplicationUserForParticipationEntity>();
        applicationUserForParticipationEntities.add(appUserForParticipationEntity);
      } else {
        applicationUserForParticipationEntities =
            applicationEntity.getApplicationUserForParticipationEntities();
        applicationUserForParticipationEntities.add(appUserForParticipationEntity);
      }
      applicationEntity.setApplicationUserForParticipationEntities(
          applicationUserForParticipationEntities);
      applicationService.update(applicationEntity);

      UserEntity userEntity = userService.findByUsername(principal.getName());
      Set<ApplicationEntity> applicationEntities;
      if (null == userEntity.getApplicationEntities()) {
        applicationEntities = new HashSet<ApplicationEntity>();
        applicationEntities.add(applicationEntity);
      } else {
        applicationEntities = userEntity.getApplicationEntities();
        applicationEntities.add(applicationEntity);
      }
      userEntity.setApplicationEntities(applicationEntities);
      DocumentEntity documentEntity = new DocumentEntity();
      documentEntity.setIdDocument(
          appUserForParticipationEntity.getIdApplicationUserForParticipation());
      documentEntity.setPathToTheFileSystem(
          environment.getProperty("upload.file.location")
              + fileBucket.getFile().getOriginalFilename());
      appUserForParticipationEntity.setAttachDocumentFile(documentEntity);
      applicationUserForParticipationService.update(appUserForParticipationEntity);

      // Now do something with file...
      FileCopyUtils.copy(
          fileBucket.getFile().getBytes(),
          new java.io.File(
              environment.getProperty("upload.file.location")
                  + fileBucket.getFile().getOriginalFilename()));
      userService.update(userEntity);

      modelMap.addAttribute("textPage", ActionMessage.SUCCESS_SEND_APPLICATION_FOR_MEMBERSHIP);
      return "pages/general/success-template-page";
    } else {
      modelMap.addAttribute("textPage", ActionMessage.ERROR_ACTION);
      return "pages/general/success-template-page";
    }
  }