public function setAlertes(Request $request) { if ($this->getAuthenticatedUser()->getStatusCode() == 200) { $user = JWTAuth::parseToken()->authenticate(); $user->load('alertes.etapeDepart.ville', 'alertes.etapeArrivee.ville'); $alerte = $user->alertes; // Si l'utilisateur n'a pas encore d'alerte, l'enregistrer if (count($alerte) == 0) { $alerte = new Alerte(); $villeDep = new Etape(); $villeArr = new Etape(); $date = new DateTime(date('Y-m-d')); $villeDep->ville()->associate(Ville::where('nomVille', $request->input('villeDepartAlerte'))->first()); $villeArr->ville()->associate(Ville::where('nomVille', $request->input('villeArriveeAlerte'))->first()); // Si une ville n'est pas reconnue envoyer message erreur if ($villeDep->inseeVille == null || $villeArr->inseeVille == null) { return response()->json(['error' => 'ville non trouvée'], 404); } $villeDep->save(); $villeArr->save(); $alerte->dateAlerte = $date; $alerte->heureAlerte = $request->input('heureAlerte'); $alerte->etapeDepart()->associate($villeDep->idEtape); $alerte->etapeArrivee()->associate($villeArr->idEtape); $alerte->membre()->associate($user->id); // retourne un utilisateur identifié par token $alerte->save(); $alerte->load('etapeDepart.ville', 'etapeArrivee.ville'); } // Dans tout les cas retourner l'alerte return response()->json($alerte); } }
public function reserver(Request $request, $idTraj) { $membId = Auth::user()->id; $idDep = $request->idDep; $idArr = $request->idArr; $inseeDep = Etape::find($idDep)->ville->inseeVille; $inseeArr = Etape::find($idArr)->ville->inseeVille; $listeInseeEtapeTrajet = Trajet::find($idTraj)->listeInseeEtapeTrajet; $listsplit = explode("/", $listeInseeEtapeTrajet); if ($idDep == $idArr) { $message = "Vous ne pouvez pas partir et arriver au même endroit."; } else { if (array_search($inseeDep, $listsplit) > array_search($inseeArr, $listsplit)) { $message = "Le trajet va dans l'autre sens."; } else { try { DB::table('inscrit')->insert(array("idMemb" => $membId, "idTraj" => $idTraj, "idEtapeDepartInscrit" => $idDep, "idEtapeArriveeInscrit" => $idArr)); $message = "Inscription effectuée"; } catch (\Illuminate\Database\QueryException $e) { $message = "Vous êtes déjà inscrit à ce trajet"; } } } $trajet = new Trajet(); $trajet = $trajet->with('user', 'vehicule', 'etapetrajets.etape.ville', 'inscrits', 'questions')->where('idTraj', $idTraj)->first(); $query = "SELECT distinct a.avisCInscrit ,a.commentaireCInscrit, a.dateCommentCInscrit FROM inscrit a, trajet b, users c WHERE a.idTraj = b.idTraj and b.idMemb = :idmemb order by a.dateCommentCInscrit DESC"; $dernierAviss = DB::select(DB::raw($query), array('idmemb' => $trajet->user->id)); $dernierAvis = $dernierAviss[0]; return view('recherche.detail', compact('trajet', 'dernierAvis', "message")); }
/** * Run the database seeds. * * @return void */ public function run() { Etape::create(['idEtape' => 1, 'adresseEtape' => 'Paris', 'inseeVille' => 75056]); Etape::create(['idEtape' => 2, 'adresseEtape' => 'Lyon', 'inseeVille' => 69123]); Etape::create(['idEtape' => 3, 'adresseEtape' => 'marseille', 'inseeVille' => 13055]); Etape::create(['idEtape' => 4, 'adresseEtape' => 'gap', 'inseeVille' => 5061]); Etape::create(['idEtape' => 5, 'adresseEtape' => 'aix', 'inseeVille' => 13001]); Etape::create(['idEtape' => 6, 'adresseEtape' => 'marseille', 'inseeVille' => 13055]); Etape::create(['idEtape' => 7, 'adresseEtape' => 'marseille', 'inseeVille' => 13055]); Etape::create(['idEtape' => 8, 'adresseEtape' => 'aix en provence', 'inseeVille' => 13001]); Etape::create(['idEtape' => 9, 'adresseEtape' => 'valence', 'inseeVille' => 26362]); Etape::create(['idEtape' => 10, 'adresseEtape' => 'gap', 'inseeVille' => 5061]); Etape::create(['idEtape' => 11, 'adresseEtape' => 'valence', 'inseeVille' => 26362]); Etape::create(['idEtape' => 12, 'adresseEtape' => 'pierrelatte', 'inseeVille' => 26235]); Etape::create(['idEtape' => 13, 'adresseEtape' => 'aix', 'inseeVille' => 13001]); Etape::create(['idEtape' => 14, 'adresseEtape' => 'gap', 'inseeVille' => 5061]); Etape::create(['idEtape' => 15, 'adresseEtape' => 'veynes', 'inseeVille' => 5179]); Etape::create(['idEtape' => 16, 'adresseEtape' => 'visan', 'inseeVille' => 84150]); Etape::create(['idEtape' => 17, 'adresseEtape' => 'grenoble', 'inseeVille' => 38185]); Etape::create(['idEtape' => 18, 'adresseEtape' => 'romans', 'inseeVille' => 26281]); Etape::create(['idEtape' => 19, 'adresseEtape' => 'valence', 'inseeVille' => 26362]); Etape::create(['idEtape' => 20, 'adresseEtape' => 'montélo', 'inseeVille' => 26198]); Etape::create(['idEtape' => 21, 'adresseEtape' => 'bollene', 'inseeVille' => 84019]); Etape::create(['idEtape' => 22, 'adresseEtape' => 'aix', 'inseeVille' => 13001]); Etape::create(['idEtape' => 23, 'adresseEtape' => 'marseille', 'inseeVille' => 13055]); Etape::create(['idEtape' => 24, 'adresseEtape' => 'gap', 'inseeVille' => 5061]); Etape::create(['idEtape' => 25, 'adresseEtape' => 'aix', 'inseeVille' => 13001]); Etape::create(['idEtape' => 26, 'adresseEtape' => 'marseille', 'inseeVille' => 13055]); Etape::create(['idEtape' => 27, 'adresseEtape' => 'gap', 'inseeVille' => 5061]); Etape::create(['idEtape' => 28, 'adresseEtape' => 'marseille', 'inseeVille' => 13055]); Etape::create(['idEtape' => 29, 'adresseEtape' => 'La Ciotat', 'inseeVille' => 13028]); }
/** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { $trajet = Trajet::find($id); $etapes = Etape::where('trajet_id', $id)->orderBy('etape_ordre', 'asc')->get(); $nbTrajets = Trajet::where('id', $trajet->id)->count(); $depart = DB::table('etape')->join('ville', 'ville.ville_insee', '=', 'etape.ville_insee')->where('etape.trajet_id', $id)->where('etape.etape_ordre', 1)->get()[0]; $nbEtapes = Etape::where('trajet_id', $id)->max('etape_ordre'); $arrivee = DB::table('etape')->join('ville', 'ville.ville_insee', '=', 'etape.ville_insee')->where('etape.trajet_id', $id)->where('etape.etape_ordre', $nbEtapes)->get()[0]; $inscrit = Inscrit::where('trajet_id', $id)->where('inscription_valide', 1)->count(); $places = $trajet->trajet_place - $inscrit; $questions = Question::where('trajet_id', $id)->get(); $reponses = Reponse::join('question', 'question.question_id', '=', 'reponse.question_id')->where('question.trajet_id', $id)->select('reponse.id', 'reponse.reponse_libelle', 'reponse.created_at', 'reponse.question_id', 'reponse.reponse_id')->get(); $exp = DB::table('inscrit')->join('trajet', 'trajet.trajet_id', '=', 'inscrit.trajet_id')->where('trajet.id', Auth::user()->id)->where('trajet.trajet_date', '<', 'curdate()')->count('inscrit.id'); $avisConducteur = DB::table('inscrit')->join('trajet', 'trajet.trajet_id', '=', 'inscrit.trajet_id')->join('users', 'users.id', '=', 'inscrit.id')->where('trajet.id', $trajet->id)->where('inscrit.inscription_commentaire_conducteur', '!=', '')->take(3)->orderBy('inscrit.inscription_date_commentaire_conducteur', 'desc')->get(); $noteConducteur = DB::table('inscrit')->join('trajet', 'trajet.trajet_id', '=', 'inscrit.trajet_id')->where('trajet.id', $trajet->id)->avg('inscrit.inscription_avis_conducteur'); $notePassager = DB::table('inscrit')->join('trajet', 'trajet.trajet_id', '=', 'inscrit.trajet_id')->where('inscrit.id', $trajet->id)->avg('inscrit.inscription_avis_voyageur'); return view('trajets.show', ['trajet' => $trajet, 'depart' => $depart, 'arrivee' => $arrivee, 'nbTrajets' => $nbTrajets, 'etapes' => $etapes, 'nbEtapes' => $nbEtapes, 'questions' => $questions, 'reponses' => $reponses, 'places' => $places, 'exp' => $exp, 'avis' => $avisConducteur, 'noteConducteur' => $noteConducteur, 'notePassager' => $notePassager]); }
/** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { $trajet = Trajet::find($id); $resa = DB::table('inscrit')->join('trajet', 'trajet.trajet_id', '=', 'inscrit.trajet_id')->join('ville as v1', 'inscrit.ville_insee_depart', '=', 'v1.ville_insee')->join('ville as v2', 'inscrit.ville_insee_arrivee', '=', 'v2.ville_insee')->where('inscrit.id', Auth::user()->id)->where('trajet.trajet_id', $id)->select('inscrit.*', 'v1.ville_nom_reel as depart', 'v2.ville_nom_reel as arrivee')->get()[0]; $questions = Question::where('trajet_id', $id)->get(); $reponses = Reponse::join('question', 'question.question_id', '=', 'reponse.question_id')->where('question.trajet_id', $id)->select('reponse.id', 'reponse.reponse_libelle', 'reponse.created_at', 'reponse.question_id', 'reponse.reponse_id')->get(); $exp = DB::table('inscrit')->join('trajet', 'trajet.trajet_id', '=', 'inscrit.trajet_id')->where('trajet.id', Auth::user()->id)->where('trajet.trajet_date', '<', 'curdate()')->count('inscrit.id'); $avisConducteur = DB::table('inscrit')->join('trajet', 'trajet.trajet_id', '=', 'inscrit.trajet_id')->join('users', 'users.id', '=', 'inscrit.id')->where('trajet.id', $trajet->id)->where('inscrit.inscription_commentaire_conducteur', '!=', '')->take(3)->orderBy('inscrit.inscription_date_commentaire_conducteur', 'desc')->get(); $noteConducteur = DB::table('inscrit')->join('trajet', 'trajet.trajet_id', '=', 'inscrit.trajet_id')->where('trajet.id', $trajet->id)->avg('inscrit.inscription_avis_conducteur'); $notePassager = DB::table('inscrit')->join('trajet', 'trajet.trajet_id', '=', 'inscrit.trajet_id')->where('inscrit.id', $trajet->id)->avg('inscrit.inscription_avis_voyageur'); $etapes = Etape::where('trajet_id', $id)->orderBy('etape_ordre', 'asc')->get(); $nbEtapes = Etape::where('trajet_id', $id)->max('etape_ordre'); $inscrit = Inscrit::where('trajet_id', $id)->count(); $places = $trajet->trajet_place - $inscrit; $nbTrajets = Trajet::where('id', $trajet->id)->count(); $depart = DB::table('etape')->join('ville', 'ville.ville_insee', '=', 'etape.ville_insee')->where('etape.trajet_id', $id)->where('etape.etape_ordre', 1)->get()[0]; $arrivee = DB::table('etape')->join('ville', 'ville.ville_insee', '=', 'etape.ville_insee')->where('etape.trajet_id', $id)->where('etape.etape_ordre', $nbEtapes)->get()[0]; $prix_etapes = DB::select("SELECT SUM(etape.etape_prix) as prix, etape.trajet_id FROM etape\n WHERE etape.trajet_id = {$id}\n AND etape.etape_ordre BETWEEN\n (\n SELECT e1.etape_ordre\n FROM ville v1\n INNER JOIN etape e1 ON e1.ville_insee = v1.ville_insee\n INNER JOIN trajet ON trajet.trajet_id = e1.trajet_id\n INNER JOIN inscrit ON trajet.trajet_id = inscrit.trajet_id\n WHERE e1.trajet_id = {$id}\n AND e1.ville_insee = inscrit.ville_insee_depart GROUP BY e1.etape_ordre)\n AND\n (\n SELECT e2.etape_ordre\n FROM ville v2\n INNER JOIN etape e2 ON e2.ville_insee = v2.ville_insee\n INNER JOIN trajet ON trajet.trajet_id = e2.trajet_id\n INNER JOIN inscrit ON trajet.trajet_id = inscrit.trajet_id\n WHERE e2.trajet_id = {$id}\n AND e2.ville_insee = inscrit.ville_insee_arrivee GROUP BY e2.etape_ordre)"); $etapeDepart = DB::select("SELECT e1.etape_ordre\n FROM ville v1\n INNER JOIN etape e1 ON e1.ville_insee = v1.ville_insee\n INNER JOIN trajet ON e1.trajet_id = trajet.trajet_id\n INNER JOIN inscrit ON trajet.trajet_id = inscrit.trajet_id\n WHERE trajet.trajet_id = {$id}\n AND inscrit.ville_insee_depart = e1.ville_insee\n "); $etapeArrivee = DB::select("SELECT e1.etape_ordre\n FROM ville v1\n INNER JOIN etape e1 ON e1.ville_insee = v1.ville_insee\n INNER JOIN trajet ON e1.trajet_id = trajet.trajet_id\n INNER JOIN inscrit ON trajet.trajet_id = inscrit.trajet_id\n WHERE trajet.trajet_id = {$id}\n AND inscrit.ville_insee_arrivee = e1.ville_insee"); $places_occ = DB::select("SELECT count(DISTINCT inscrit.id) as nbPlace, {$id} as trajet_id\n FROM inscrit\n INNER JOIN trajet ON inscrit.trajet_id = trajet.trajet_id\n INNER JOIN etape ON etape.trajet_id = trajet.trajet_id\n WHERE trajet.trajet_id = {$id}\n AND inscrit.inscription_valide = 1\n AND (\n inscrit.ville_insee_depart IN (\n SELECT etape.ville_insee\n FROM etape\n WHERE etape.trajet_id = {$id}\n AND etape.etape_ordre <= " . $etapeDepart[0]->etape_ordre . "\n )\n AND\n inscrit.ville_insee_arrivee IN (\n SELECT etape.ville_insee\n FROM etape\n WHERE etape.trajet_id = {$id}\n AND etape.etape_ordre > " . $etapeDepart[0]->etape_ordre . "\n )\n ) OR (\n inscrit.ville_insee_depart IN (\n SELECT etape.ville_insee\n FROM etape\n WHERE etape.trajet_id = {$id}\n AND etape.etape_ordre > " . $etapeDepart[0]->etape_ordre . "\n )\n AND\n inscrit.ville_insee_depart IN (\n SELECT etape.ville_insee\n FROM etape\n WHERE etape.trajet_id = {$id}\n AND etape.etape_ordre <= " . $etapeArrivee[0]->etape_ordre . "\n )\n )\n\n "); return view('dashboard.bookings.show', ['depart' => $depart, 'arrivee' => $arrivee, 'reservation' => $resa, 'trajet' => $trajet, 'etapes' => $etapes, 'nbEtapes' => $nbEtapes, 'place' => $places, 'nbTrajets' => $nbTrajets, 'questions' => $questions, 'reponses' => $reponses, 'exp' => $exp, 'avis' => $avisConducteur, 'noteConducteur' => $noteConducteur, 'notePassager' => $notePassager, 'prix' => $prix_etapes, 'places' => $places_occ]); }
public function creationTrajet(Request $request) { //récupération de l'objet trajet et suppression de la session $trajet = $request->session()->get('trajet'); //récupération de l'id de l'utilisateur courant $idUser = Auth::check() ? Auth::user()->id : -1; if ($idUser == -1) { throw new Exception("Vous n'êtes pas authentifié"); } //création du trajet $trajetO = Trajet::create(['dateTraj' => $trajet['dateTraj'], 'heureTraj' => $trajet['heureTraj'], 'nbPlacesTraj' => $trajet['nbPlacesTraj'], 'tarifTraj' => $trajet['tarifTraj'], 'autoRoutTraj' => $trajet['autoRoutTraj'], 'detoursTraj' => $trajet['detoursTraj'], 'depaDecTraj' => $trajet['depaDecTraj'], 'bagageTraj' => $trajet['bagageTraj'], 'infoTraj' => $trajet['infoTraj'], 'distTraj' => $trajet['distTraj'], 'dureeTraj' => $trajet['dureeTraj'], 'idMemb' => $idUser, 'idVeh' => 1, 'listeInseeEtapeTrajet' => "", 'listeDistEtapeTrajet' => ""]); $trajetO->save(); // !!!!!! Vérifier que la ville avec cet insee n'existe deja pas //création des étapes et etapes trajet for ($i = 0; $i < count($trajet['etapes']); $i++) { $insee = Ville::where("nomVille", $trajet['etapes'][$i]['ville'])->first()->inseeVille; if (is_null($insee)) { $insee = "13001"; } $etape = Etape::create(['adresseEtape' => $trajet['etapes'][$i]['ville'], 'inseeVille' => $insee]); $etape->save(); $etapeTrajet = EtapeTrajet::create(['idEtape' => $etape->idEtape, 'idTraj' => $trajetO->idTraj, 'numOrdreEtapeTrajet' => $i + 1, 'distEtapeTrajet' => $trajet['etapes'][$i]['distance'], 'prixEtapeTrajet' => $trajet['etapes'][$i]['price'], 'dureeEtapeTrajet' => $trajet['etapes'][$i]['duree'], 'placePrisesEtapeTrajet' => 0]); $etapeTrajet->save(); } //redirection vers ce trajet return redirect()->route('showTrajet', ['id' => $trajetO->idTraj]); }