<commit_before><?php

namespace Site\CartoBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

use Site\CartoBundle\Entity\Poi;
use Site\CartoBundle\Entity\Coordonnees;
use Site\CartoBundle\Entity\TypeLieu;
use Site\CartoBundle\Entity\Icone;
use Site\CartoBundle\Entity\Itineraire;
use Site\CartoBundle\Entity\Gpx;
use Site\CartoBundle\Entity\Segment;
use Site\CartoBundle\Entity\Trace;
use Site\CartoBundle\Entity\DifficulteParcours;
use CrEOF\Spatial\PHP\Types\Geography\Point as MySQLPoint;
use CrEOF\Spatial\PHP\Types\Geography\LineString;
use Site\CartoBundle\Entity\Point;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Symfony\Component\Validator\Constraints\DateTime;


class MapController extends Controller
{
    public function indexAction()
    {       
        $content = $this->get("templating")->render("SiteCartoBundle:Map:map.html.twig");        
        return new Response($content);
    }

    public function indexFrameAction()
    {       
        $content = $this->get("templating")->render("SiteCartoBundle:Map:mapFrame.html.twig");        
        return new Response($content);
    }

    /**
     * Fonction de création d'un itinéraire
     *
     * Cette méthode est appelée en ajax et requiert les paramètres suivants : 
     * 
     * <code>
     * date : date du jour 
     * longueur : La longueur de l'itinéraire 
     * elevation : L'élévation de l'itinéraire
     * nom : Le nom de l'itinéraire
     * numero : Le numéro de l'itinéraire
     * typechemin : Le type de chemn de l'itinéraire
     * commentaire : Un commentaire sur l'itinéraire
     * </code>
     * 
     * @return Response 
     *
     * JSON permettant de définir si l'itinéraire a été créé ou non
     *
     * Example en cas de succès :
     * 
     * <code>
     * {
     *     "success": true,
     *     "serverError": false,
     *     "message": "Message"
     *
     * </code>
     * 
     * Example en cas d'erreur dans la création :
     * 
     * <code>
     * {
     *     "success": false,
     *     "serverError": false,
     *     "message": "Message"
     * }
     * </code>
     * 
     * Example en cas d'erreur du serveur :
     * 
     * <code>
     * {
     *     "success": false,
     *     "serverError": true,
     *     "message": "Message"
     * }
     * </code>
     * 
     * 
     */
    public function createRouteAction(Request $request)
    {
      if ($request->isXMLHttpRequest()) 
      {
        $manager=$this->getDoctrine()->getManager();
        $repositoryDiff=$manager->getRepository("SiteCartoBundle:DifficulteParcours");

        $gpx = new Gpx();
        $gpx->setPath("test");
        $diff = $repositoryDiff->find($request->request->get("difficulte",""));

        $route = new Itiniraire();
        $route->setDate(new \DateTime('now'));
        $route->setLongueur($request->request->get("longueur","120"));
        $route->setDenivele($request->request->get("elevation","130"));
        $route->setItiniraire($gpx);
        $route->setNom($request->request->get("nom",""));
        $route->setNumero($request->request->get("numero",""));
        $route->setTypechemin($request->request->get("typechemin",""));
        $route->setCommentaire($request->request->get("commentaire",""));
        $route->setDifficulté($diff);

        $manager->persist($route);
        $manager->persist($gpx);
        $manager->flush();
        return new JsonResponse(array('data' => 'Itinéraire Crée'),200);
      }

      return new Response('This is not ajax!', 400);
    }
	
	public function uploadAction()
	{		
		$content = $this->get("templating")->render("SiteCartoBundle:Map:upload.html.twig");
		return new Response($content);
	}
	
	public function submitAction(Request $request)
	{	
		if ($request->isXMLHttpRequest()) 
		{		
			$return_message = "";
			$code = 200;

			$gpx_name = $_FILES['upl']['name'];
			$target_dir ="C:/wamp/www/uploads/";
			$target_file = $target_dir.$gpx_name;
			$upload = 1;
			$ext = $_FILES["upl"]["name"];
			$imageFileType = pathinfo($ext,PATHINFO_EXTENSION);
			
			// Check if file already exists
			if (file_exists($target_file)) 
			{
				$return_message .= " Le fichier existe déjà. ";
				$upload = 0;
			}
			
			// Check file size
			if ($_FILES["upl"]["size"] > 5000000) {
				$return_message .= " Le fichier est trop volumineux. La taille est limitée à 5000 Ko. ";
				$upload = 0;
			}
			
			if($imageFileType != "gpx") 
			{
				$return_message .= " Le format de fichier n'est pas valide.";
				$upload = 0;
			} 
			
			if($upload != 0)
			{
				if(move_uploaded_file($_FILES['upl']['tmp_name'], $target_file))
				{
					//si l'upload a réussi, on sauvegarde le chemin de destination dans la base de données (table Trace)
				$trace = new Trace();<commit_msg>correction chemin upload<commit_after><?php

namespace Site\CartoBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

use Site\CartoBundle\Entity\Poi;
use Site\CartoBundle\Entity\Coordonnees;
use Site\CartoBundle\Entity\TypeLieu;
use Site\CartoBundle\Entity\Icone;
use Site\CartoBundle\Entity\Itineraire;
use Site\CartoBundle\Entity\Gpx;
use Site\CartoBundle\Entity\Segment;
use Site\CartoBundle\Entity\Trace;
use Site\CartoBundle\Entity\DifficulteParcours;
use CrEOF\Spatial\PHP\Types\Geography\Point as MySQLPoint;
use CrEOF\Spatial\PHP\Types\Geography\LineString;
use Site\CartoBundle\Entity\Point;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Symfony\Component\Validator\Constraints\DateTime;


class MapController extends Controller
{
    public function indexAction()
    {       
        $content = $this->get("templating")->render("SiteCartoBundle:Map:map.html.twig");        
        return new Response($content);
    }

    public function indexFrameAction()
    {       
        $content = $this->get("templating")->render("SiteCartoBundle:Map:mapFrame.html.twig");        
        return new Response($content);
    }

    /**
     * Fonction de création d'un itinéraire
     *
     * Cette méthode est appelée en ajax et requiert les paramètres suivants : 
     * 
     * <code>
     * date : date du jour 
     * longueur : La longueur de l'itinéraire 
     * elevation : L'élévation de l'itinéraire
     * nom : Le nom de l'itinéraire
     * numero : Le numéro de l'itinéraire
     * typechemin : Le type de chemn de l'itinéraire
     * commentaire : Un commentaire sur l'itinéraire
     * </code>
     * 
     * @return Response 
     *
     * JSON permettant de définir si l'itinéraire a été créé ou non
     *
     * Example en cas de succès :
     * 
     * <code>
     * {
     *     "success": true,
     *     "serverError": false,
     *     "message": "Message"
     *
     * </code>
     * 
     * Example en cas d'erreur dans la création :
     * 
     * <code>
     * {
     *     "success": false,
     *     "serverError": false,
     *     "message": "Message"
     * }
     * </code>
     * 
     * Example en cas d'erreur du serveur :
     * 
     * <code>
     * {
     *     "success": false,
     *     "serverError": true,
     *     "message": "Message"
     * }
     * </code>
     * 
     * 
     */
    public function createRouteAction(Request $request)
    {
      if ($request->isXMLHttpRequest()) 
      {
        $manager=$this->getDoctrine()->getManager();
        $repositoryDiff=$manager->getRepository("SiteCartoBundle:DifficulteParcours");

        $gpx = new Gpx();
        $gpx->setPath("test");
        $diff = $repositoryDiff->find($request->request->get("difficulte",""));

        $route = new Itiniraire();
        $route->setDate(new \DateTime('now'));
        $route->setLongueur($request->request->get("longueur","120"));
        $route->setDenivele($request->request->get("elevation","130"));
        $route->setItiniraire($gpx);
        $route->setNom($request->request->get("nom",""));
        $route->setNumero($request->request->get("numero",""));
        $route->setTypechemin($request->request->get("typechemin",""));
        $route->setCommentaire($request->request->get("commentaire",""));
        $route->setDifficulté($diff);

        $manager->persist($route);
        $manager->persist($gpx);
        $manager->flush();
        return new JsonResponse(array('data' => 'Itinéraire Crée'),200);
      }

      return new Response('This is not ajax!', 400);
    }
	
	public function uploadAction()
	{		
		$content = $this->get("templating")->render("SiteCartoBundle:Map:upload.html.twig");
		return new Response($content);
	}
	
	public function submitAction(Request $request)
	{	
		if ($request->isXMLHttpRequest()) 
		{		
			$return_message = "";
			$code = 200;

			$gpx_name = $_FILES['upl']['name'];
			$target_dir ="/var/www/uploads/";
			$target_file = $target_dir.$gpx_name;
			$upload = 1;
			$ext = $_FILES["upl"]["name"];
			$imageFileType = pathinfo($ext,PATHINFO_EXTENSION);
			
			// Check if file already exists
			if (file_exists($target_file)) 
			{
				$return_message .= " Le fichier existe déjà. ";
				$upload = 0;
			}
			
			// Check file size
			if ($_FILES["upl"]["size"] > 5000000) {
				$return_message .= " Le fichier est trop volumineux. La taille est limitée à 5000 Ko. ";
				$upload = 0;
			}
			
			if($imageFileType != "gpx") 
			{
				$return_message .= " Le format de fichier n'est pas valide.";
				$upload = 0;
			} 
			
			if($upload != 0)
			{
				if(move_uploaded_file($_FILES['upl']['tmp_name'], $target_file))
				{
					//si l'upload a réussi, on sauvegarde le chemin de destination dans la base de données (table Trace)
				$trace = new Trace();
{'fraction_non_alphanumeric': 0.14726096624216697, 'fraction_numerical': 0.006266424095411361, 'mean_word_length': 2.810165575664228, 'pattern_counts': {'":': 18, '<': 21, '<?xml version=': 0, '>': 101, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2134687', 'n_tokens_mistral': 3512, 'n_tokens_neox': 3213, 'n_words': 623}