@RequestMapping(value = "/robots", method = RequestMethod.GET)
  public String Robots(Model model) {
    List<Robot> robots = this.robotService.findAll();

    // liste de dates au format francais
    Map<Integer, String> french_dates = new HashMap<Integer, String>();
    // slider d'images
    ArrayList<String> list_images = new ArrayList<String>();

    for (Robot robot : robots) {
      // images
      File image =
          new File(
              "D:/Workspace/insta/jee/WorldOfRobots/src/main/webapp/resources/images/robots/"
                  + robot.getPath_picture());

      if (image.exists() && !image.isDirectory()) {
        list_images.add(robot.getPath_picture());
      }
      // date création
      french_dates.put(
          robot.getId(), new SimpleDateFormat("dd/MM/yyyy HH:mm").format(robot.getCreation_date()));
    }
    if (list_images.isEmpty()) {
      list_images.add("no-image.png");
    }

    model.addAttribute("list_images", list_images);
    model.addAttribute("dates", french_dates);
    model.addAttribute("robots", robots);
    return "robots";
  }
  @RequestMapping(value = "/robots/card", method = RequestMethod.GET)
  public String cardRobot(
      Model model, @RequestParam(value = "id") final int id, HttpServletRequest request) {
    HttpSession session = request.getSession();
    User user = (User) session.getAttribute("user");
    Robot robot = this.robotService.findById(id);
    String list_technologies = "";
    // liste de dates au format francais
    Map<Integer, String> french_dates = new HashMap<Integer, String>();

    for (int i = 0; i < robot.getTechnologies().size(); i++) {

      list_technologies += robot.getTechnologies().get(i).getName();
      if (robot.getTechnologies().size() - 1 == i) {
        list_technologies += ".";
      } else {
        list_technologies += ", ";
      }
    }

    File image =
        new File(
            "D:/Workspace/insta/jee/WorldOfRobots/src/main/webapp/resources/images/robots/"
                + robot.getPath_picture());
    String name_file = "";

    if (image.exists() && !image.isDirectory()) {
      name_file = image.getName();
    } else {
      name_file = "no-image.png";
    }

    french_dates.put(
        robot.getId(), new SimpleDateFormat("dd/MM/yyyy HH:mm").format(robot.getCreation_date()));

    Long participate_competition = this.robotService.countCompetitionByRobot(robot.getId());
    Long participate_battle = this.robotService.countBattleByRobot(robot.getId());
    Long win_battle = this.robotService.countWinBalttleByRobot(robot.getId());

    model.addAttribute("technologies", list_technologies);
    model.addAttribute("name_file", name_file);
    model.addAttribute("participate_competition", participate_competition);
    model.addAttribute("participate_battle", participate_battle);
    model.addAttribute("win", win_battle);
    model.addAttribute("lose", (participate_battle - win_battle));
    model.addAttribute("robot", robot);
    model.addAttribute("french_dates", french_dates);
    session.setAttribute("user", user);
    return "robot";
  }
  @RequestMapping(value = "/robots/add", method = RequestMethod.POST)
  public String toAddRobot(
      Model model,
      @ModelAttribute("AddRobot") AddRobot addRobot,
      @RequestParam("image") MultipartFile file,
      HttpServletRequest request) {

    HttpSession session = request.getSession();
    User user = (User) session.getAttribute("user");
    if (user != null) {
      if (!addRobot.getImage().isEmpty()) {
        byte[] bytes;
        try {
          bytes = addRobot.getImage().getBytes();

          String name_file =
              addRobot.getName()
                  + file.getOriginalFilename()
                      .substring(file.getOriginalFilename().lastIndexOf("."));
          name_file = name_file.replace(' ', '_');

          File server_file =
              new File(
                  "D:/Workspace/insta/jee/WorldOfRobots/src/main/webapp/resources/images/robots/"
                      + name_file);

          BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(server_file));
          stream.write(bytes);
          stream.close();

          Robot robot =
              this.robotService.createRobot(
                  addRobot.getTechnologies(),
                  addRobot.getStrong_point(),
                  addRobot.getName(),
                  addRobot.getCreation_date(),
                  name_file);
          this.userService.createRobot(user.getId(), robot.getId());

          request.setAttribute("result", true);
          model.addAttribute("message", "L'ajout de votre robot a bien été enregistrée");
          model.addAttribute("robot", this.robotService.findById(robot.getId()));

        } catch (IOException e) {
          e.printStackTrace();
          request.setAttribute("result", false);
          model.addAttribute("message", "L'ajout de votre robot a échoué");
        }
      } else {
        Robot robot =
            this.robotService.createRobot(
                addRobot.getTechnologies(),
                addRobot.getStrong_point(),
                addRobot.getName(),
                addRobot.getCreation_date(),
                null);

        if (robot != null) {
          session.setAttribute("user", user);
          this.userService.createRobot(user.getId(), robot.getId());
          model.addAttribute("robot", this.robotService.findById(robot.getId()));

          request.setAttribute("result", true);
          model.addAttribute("message", "L'ajout de votre robot a bien été enregistrée");

        } else {
          request.setAttribute("result", false);
          model.addAttribute("message", "L'ajout de votre robot a échoué");
        }
      }
      user = this.userService.findById(user.getId());
      session.setAttribute("user", user);
      return this.cardRobot(model, user.getId_robot(), request);
    } else {
      request.setAttribute("result", false);
      model.addAttribute("message", "Veuillez vous connecter avant d'ajouter un robot");
      model.addAttribute("connexion", new Connexion());
      model.addAttribute("register", new Register());
      return "connexion";
    }
  }