// -------------------------------------------------------------------------------------------------------------------
  @SuppressWarnings({"unchecked", "rawtypes"})
  public ModelAndView selectFonctionnalite(
      HttpServletRequest request, HttpServletResponse response) {
    if (request.getSession().getAttribute("utilisateur") == null) {
      request.getSession().invalidate();
      return new ModelAndView("Connexion", null);
    }

    Map modele = new HashMap();
    Utilisateur utilisateur = (Utilisateur) request.getSession().getAttribute("utilisateur");
    Profil profilConnecte = (Profil) request.getSession().getAttribute("profilConnecte");

    String codeprof = request.getParameter("profil");
    String codeFct = request.getParameter("fctionnalite");
    ArrayList<LangueFonctionnalites> listFctionnalites =
        (ArrayList<LangueFonctionnalites>) request.getSession().getAttribute("listFctionnalites");
    int cpt = 0;
    while (cpt < listFctionnalites.size()) {
      if (listFctionnalites.get(cpt).getFonctionnalite().getCodeFonctionnalite().equals(codeFct)) {
        request
            .getSession()
            .setAttribute("FctSelect", listFctionnalites.get(cpt).getLibFonctionnalie());
        listFctionnalites.remove(cpt);
        cpt = listFctionnalites.size();
      }
      cpt += 1;
    }
    request.getSession().setAttribute("listFctionnalites", listFctionnalites);

    IValidationFonctionnalites validationDAO = new ValidationFonctionnalitesDAO();
    ArrayList<ValidationFonctionnalites> listValidation =
        validationDAO.allValidation(codeprof, codeFct);

    if (listValidation.size() != 0) {
      request.getSession().setAttribute("listValidation", listValidation);
      request.getSession().setAttribute("indiceCourant", 0);
      request.getSession().setAttribute("validationCourant", listValidation.get(0));

      // test à vérifier   caisse
      // if(listValidation.get(0).getProfilValidation().getCodeProfil().equals("caisse"))
      if (listValidation
          .get(0)
          .getProfilValidation()
          .getCodeProfil()
          .equals(profilConnecte.getCodeProfil())) modele.put("valider", "ok");
      ILangueProfil langProfDAO = new LangueProfilDAO();
      LangueProfil profilvalid =
          langProfDAO.getLangueProfil(
              utilisateur.getLangue().getCodeLangue(),
              listValidation.get(0).getProfilValidation().getCodeProfil());
      modele.put("profilvalid", profilvalid.getLibelle());
    }
    return new ModelAndView("Validations", modele);
  }
  // --------------------------------------------------------------------------------------------------------------------------------------
  @SuppressWarnings({"rawtypes", "unchecked"})
  public ModelAndView suivant(HttpServletRequest request, HttpServletResponse response) {

    if (request.getSession().getAttribute("utilisateur") == null) {
      request.getSession().invalidate();
      return new ModelAndView("Connexion", null);
    }

    Map modele = new HashMap();
    Utilisateur utilisateur = (Utilisateur) request.getSession().getAttribute("utilisateur");
    Profil profilConnecte = (Profil) request.getSession().getAttribute("profilConnecte");

    if (request.getSession().getAttribute("listValidation") != null) {
      ArrayList<ValidationFonctionnalites> listValidation =
          (ArrayList<ValidationFonctionnalites>)
              request.getSession().getAttribute("listValidation");
      if (listValidation.size() != 0) {
        int indice = (Integer) request.getSession().getAttribute("indiceCourant");
        if (indice < listValidation.size() - 1) indice += 1;
        request.getSession().setAttribute("listValidation", listValidation);
        request.getSession().setAttribute("indiceCourant", indice);
        request.getSession().setAttribute("validationCourant", listValidation.get(indice));

        IValidationFonctionnalites validationDAO = new ValidationFonctionnalitesDAO();
        Boolean resteValidation =
            validationDAO.testValidation(
                listValidation.get(indice).getProfil().getCodeProfil(),
                listValidation.get(indice).getFonctionnalite().getCodeFonctionnalite(),
                listValidation.get(indice).getRangProfilValid());
        if (((listValidation
                    .get(indice)
                    .getProfilValidation()
                    .getCodeProfil()
                    .equals(profilConnecte.getCodeProfil()))
                && (resteValidation == false))
            || ((listValidation
                    .get(indice)
                    .getProfilValidation()
                    .getCodeProfil()
                    .equals(profilConnecte.getCodeProfil()))
                && (listValidation.get(indice).getNbValidEffect() == 1)))
          modele.put("valider", "ok");
        ILangueProfil langProfDAO = new LangueProfilDAO();
        LangueProfil profilvalid =
            langProfDAO.getLangueProfil(
                utilisateur.getLangue().getCodeLangue(),
                listValidation.get(indice).getProfilValidation().getCodeProfil());
        modele.put("profilvalid", profilvalid.getLibelle());
      }
    }

    return new ModelAndView("Validations", modele);
  }