@Override
  public RemotePagingResultsGwt<ActionRechercheModel> rechercherActionParCritere(
      RemotePagingCriteriasGwt<ActionCritereRechercheModel> criteres) {
    final ActionCritereRechercheDto criterias =
        mapperDozerBean.map(criteres.getCriterias(), ActionCritereRechercheDto.class);

    final RemotePagingCriteriasDto<ActionCritereRechercheDto> criteresDto =
        new RemotePagingCriteriasDto<ActionCritereRechercheDto>(
            criterias, criteres.getFirstResult(), criteres.getMaxResult());
    final List<RemotePagingSort> listSort =
        mapperDozerBean.mapList(criteres.getListeSorts(), RemotePagingSort.class);
    criteresDto.setListeSorts(listSort);
    final RemotePagingResultsDto<ActionRechercheDto> resultatDto =
        actionService.rechercherActionParCritere(criteresDto);
    final RemotePagingResultsGwt<ActionRechercheModel> resultatGwt =
        new RemotePagingResultsGwt<ActionRechercheModel>();
    final List<ActionRechercheModel> listActionGwt = new ArrayList<ActionRechercheModel>();
    if (resultatDto != null
        && resultatDto.getListResults() != null
        && !resultatDto.getListResults().isEmpty()) {
      for (ActionRechercheDto actionRechercheDto : resultatDto.getListResults()) {
        listActionGwt.add(convertActionRechercheToModelGwt(actionRechercheDto));
      }
    }
    resultatGwt.setListResults(listActionGwt);
    resultatGwt.setTotalResults(resultatDto.getTotalResults());
    return resultatGwt;
  }
 @Override
 public List<StackModel<ActionSyntheseModel>> recupererActionsSynthese(
     CritereActionSyntheseModel critere) {
   final CritereActionSyntheseDto critereDto =
       mapperDozerBean.map(critere, CritereActionSyntheseDto.class);
   final List<Stack<ActionSyntheseDto>> resultatDto =
       actionService.recupererActionsSynthese(critereDto);
   final List<StackModel<ActionSyntheseModel>> resultatModel =
       new ArrayList<StackModel<ActionSyntheseModel>>();
   for (Stack<ActionSyntheseDto> pile : resultatDto) {
     final StackModel<ActionSyntheseModel> pileModel = new StackModel<ActionSyntheseModel>();
     for (ActionSyntheseDto actionDto : pile) {
       final ActionSyntheseModel actionSyntheseModel =
           mapperDozerBean.map(actionDto, ActionSyntheseModel.class);
       // Création de l'heure de l'action
       String heure = "";
       heure = sdfHeuresMinutes.format(actionDto.getDateAction().getTime());
       actionSyntheseModel.setHeureAction(heure);
       // Création de l'heure de l'action terminée
       String heureTerminee = null;
       if (actionDto.getDateActionTerminee() != null) {
         heureTerminee = sdfHeuresMinutes.format(actionDto.getDateActionTerminee().getTime());
       }
       actionSyntheseModel.setHeureActionTerminee(heureTerminee);
       pileModel.push(actionSyntheseModel);
     }
     resultatModel.add(pileModel);
   }
   return resultatModel;
 }
  @Override
  public ActionCreationModel creerAction(ActionCreationModel action) {
    final ActionCreationDto actionDto = mapperDozerBean.map(action, ActionCreationDto.class);
    // Création de la date d'action.
    if (action.getDateAction() != null) {
      actionDto.setDateAction(
          convertDateHeureToCalendar(action.getDateAction(), action.getHeuresAction()));
    }

    final ActionCreationDto resultDto = actionService.creerAction(actionDto);
    return mapperDozerBean.map(resultDto, ActionCreationModel.class);
  }
 @Override
 public void transfererActionsParCritere(
     ActionCritereRechercheModel criteres, Long idAgenceCible, Long idRessourceCible) {
   final ActionCritereRechercheDto criteresDto =
       mapperDozerBean.map(criteres, ActionCritereRechercheDto.class);
   actionService.transfererActionsParCritere(criteresDto, idAgenceCible, idRessourceCible);
 }
 @Override
 public List<HistoriqueCommentaireModel> rechercherNotesActions(Long idAction) {
   final List<HistoriqueCommentaireDto> historiqueDto =
       actionService.rechercherNotesActions(idAction);
   final List<HistoriqueCommentaireModel> historiqueModel =
       mapperDozerBean.mapList(historiqueDto, HistoriqueCommentaireModel.class);
   return historiqueModel;
 }
 /**
  * Convertit Le DTO ActionRechercheDto en objet du modèle pour GWT.
  *
  * @param actionRechercheDto l'action à convertir.
  * @return l'action convertie pour GWT.
  */
 private ActionRechercheModel convertActionRechercheToModelGwt(
     ActionRechercheDto actionRechercheDto) {
   final ActionRechercheModel actionRechercheModel =
       mapperDozerBean.map(actionRechercheDto, ActionRechercheModel.class);
   // On récupère l'heure de l'action pour la stocker dans un champ supplémentaire
   actionRechercheModel.setHeureAction(
       sdfHeuresMinutes.format(actionRechercheDto.getDateAction().getTime()));
   return actionRechercheModel;
 }
 @Override
 public ActionResultatModel modifierAction(ActionModificationModel actionModificationModel) {
   final ActionModificationDto actionModificationDto =
       mapperDozerBean.map(actionModificationModel, ActionModificationDto.class);
   if (actionModificationModel.getDateAction() != null) {
     actionModificationDto.setDateAction(
         convertDateHeureToCalendar(
             actionModificationModel.getDateAction(), actionModificationModel.getHeureAction()));
   }
   if (actionModificationModel.getDuree() != null) {
     actionModificationDto.setIdDuree(actionModificationModel.getDuree().getIdentifiant());
   }
   ActionResultatDto resultatDto = null;
   try {
     resultatDto = actionService.modifierAction(actionModificationDto);
   } catch (ConfirmationCreationOpportuniteException confirmationException) {
     throw new ConfirmationCreationOpportuniteExceptionGwt(confirmationException.getMessage());
   }
   return mapperDozerBean.map(resultatDto, ActionResultatModel.class);
 }