-
SASSU Thomas authoredSASSU Thomas authored
ControleurScript.php 13.16 KiB
<?php
namespace gp\controleurs;
use Illuminate\Database\Capsule\Manager as DB;
use gp\modeles\Game_rating;
use gp\modeles\Genre;
use gp\modeles\Platform;
use gp\modeles\Game;
use gp\modeles\Company;
use gp\modeles\Character;
use gp\modeles\Rating_board;
class ControleurScript
{
public function td1()
{
echo "script TD1";
$tab = null;
$tab[] = $this->gameByName('Mario')->get();
$tab[] = $this->CompanyByCountry('Japan')->get();
$tab[] = $this->platformByBase('10000000')->get();
$tab[] = Game::skip(21173)->take(442)->get();
$data = Game::simplePaginate(500);
$s = "<p>--------------------------------------------------------<br>" .
"Jeu contenant dans leur nom 'Mario'<br>" .
"--------------------------------------------------------</p>";
echo $s;
foreach ($tab[0] as $game) {
echo("<p>{$game->name}</p>");
}
$s = "<p>--------------------------------------------------------<br>" .
"Compagnies installées au 'Japon'<br>" .
"--------------------------------------------------------</p>";
echo $s;
foreach ($tab[1] as $company) {
echo("<p>{$company->name}</p>");
}
$s = "<p>--------------------------------------------------------<br>" .
"Plateformes dont la base installée est >= 10 000 000<br>" .
"--------------------------------------------------------</p>";
echo $s;
foreach ($tab[2] as $plat) {
echo("<p>{$plat->name}</p>");
}
$s = "<p>--------------------------------------------------------<br>" .
"liste de 442 jeux à partir du 21173ème<br>" .
"--------------------------------------------------------</p>";
echo $s;
foreach ($tab[3] as $game) {
echo("<p>{$game->name}</p>");
}
$s = "<p>--------------------------------------------------------<br>" .
"liste des jeux en paginant (taille des pages : 500)<br>" .
"--------------------------------------------------------</p>";
echo $s;
$res = "";
foreach ($data as $t) {
$res = $res . "<p>$t->name</p>";
}
$res = "<div class=\"container\">
$res
</div>";
echo $res;
}
private function gameByName($name)
{
return Game::where("name", "like", "%{$name}%");
}
private function companyByCountry($country)
{
return Company::where("location_country", "like", "{$country}");
}
private function platformByBase($base)
{
return Platform::where("install_base", ">=", "{$base}");
}
/**
* TD_2
*/
public function td2_q1()
{
$q = $this->nameDeckByGame(12342)->get();
echo("<p>---------------------------------------------<br>" .
"<p>(name, deck) des personnages du jeu 12342<br>" .
"<p>---------------------------------------------<br>");
foreach ($q as $item) {
echo "<p>nom :$item->name , deck : $item->deck</p>";
}
}
public function td2_q2()
{
$q = Game::where('name', 'like', "Mario%")->get();
echo("<p>---------------------------------------------<br>" .
"<p>les personnages des jeux dont le nom (du jeu) débute par 'Mario<br>" .
"<p>---------------------------------------------<br>");
foreach ($q as $game) {
echo "<p>Characters from :$game->name</p>";
$list = $game->characters()->get();
foreach ($list as $char)
echo "<p>nom : $char->name</p>";
}
}
public function td2_q3()
{
$q = Company::where("name", "like", "%sony%")->get();
echo("<p>---------------------------------------------<br>" .
"<p>les jeux développés par une compagnie dont le nom contient 'Sony<br>" .
"<p>---------------------------------------------<br>");
foreach ($q as $company) {
echo "<p>Games from :$company->name</p>";
$list = $company->games()->get();
foreach ($list as $game)
echo "<p>nom : $game->name</p>";
}
}
public function td2_q4()
{
$q = Game::where('name', 'like', "Mario%")->get();
echo("<p>---------------------------------------------<br>" .
"<p>le rating initial (indiquer le rating board) des jeux dont le nom contient Mario<br>" .
"<p>---------------------------------------------<br>");
foreach ($q as $game) {
$list = $game->ratings()->get();
echo "<p>From $game->name : </p>";
foreach ($list as $rate)
echo "<p>id rating_board : $rate->rating_board_id, name : {$rate->rating_board()->first()->name}</p>";
}
}
public function td2_q5()
{
$q = Game::where('name', 'like', "Mario%")->get();
echo("<p>---------------------------------------------<br>" .
"<p>les jeux dont le nom débute par Mario et ayant plus de 3 personnages<br>" .
"<p>---------------------------------------------<br>");
foreach ($q as $game) {
$list = $game->characters()->get();
if (count($list) > 3) echo "<p>$game->name</p>";
}
}
public function td2_q6()
{
echo("<p>---------------------------------------------<br>" .
"<p>les jeux dont le nom débute par Mario et dont le rating initial contient \"3+\"<br>" .
"<p>---------------------------------------------<br>");
$list = Game_rating::select('name')->where('name', 'like', "%3+%")->get();
foreach ($list as $rate) {
echo "<p>$rate->name</p>";
$games = $rate->games()->where('name', 'like', "Mario%")->get();
echo $games;
foreach ($games as $game) echo "<p>$game->name</p>";
}
}
public function td2_q8()
{
$tmpGames = null;
$tmpBoard = null;
echo("<p>---------------------------------------------<br>" .
"<p>les jeux dont le nom débute par Mario, publiés par une compagnie dont le nom contient \"Inc.\" et dont le rating initial contient \"3+\"<br>" .
"<p>---------------------------------------------<br>");
$list = Game_rating::select('name')->where('name', 'like', "%3+%")->get();
foreach ($list as $rate) {
echo "<p>$rate->name</p>";
$games = $rate->games()->where('name', 'like', "Mario%")->get();
echo $games;
foreach ($games as $game) if($game->developers()->where('name', 'like', '%Inc.%')->get != null) $tmpGames[] = $game;
}
$tmpBoard = Game_rating::where('name', 'like', 'CERO')->first();
if($tmpBoard!=null) $tmpBoard = $tmpBoard->games()->get();
$res = array_intersect((array)$tmpGames, (array)$tmpBoard);
foreach ($res as $games){
echo "<p> {$games->nom} </p>";
}
}
public function td2_q7()
{
echo("<p>---------------------------------------------<br>" .
"<p>les jeux dont le nom débute par Mario, publiés par une compagnie dont le nom contient \"Inc.\" et dont le rating initial contient \"3+\" t ayant reçu un avis de la part du rating board nommé \"CERO\"<br>" .
"<p>---------------------------------------------<br>");
$list = Game_rating::select('name')->where('name', 'like', '%3+%')->get();
foreach ($list as $rate) {
echo "<p>$rate->name</p>";
$games = $rate->games()->where('name', 'like', "Mario%")->get();
echo $games;
foreach ($games as $game) if($game->developers()->where('name', 'like', '%Inc.%')->get != null) echo "<p>$game->name</p>";
}
}
public function td2_q9()
{
echo "q9";
$games = Game::where('id', '=', 12)->orWhere('id', '=', 56)->orWhere('id', '=', 345)->get();
if(Genre::where('name', 'like', '')->first() == null) {
$genre = Genre::create('Hardcore', 'Hardcore is hard.','<p style="">Hardcore games where you die a lot to succed.</p>');
foreach ($games as $game){
if($game->genres()->where('id', '=', $genre->id)->first() == null) $game->genres()->attach([$genre->id]);
}
}
foreach ($games as $game) {
echo "<p>Id : $game->id : </p>";
$genres = $game->genres()->get();
foreach ($genres as $genre){
echo "<p> Cat : $genre->name</p>";
}
}
}
private function nameDeckByGame($id){
return Game::where('id','=',$id)->first()->characters();
}
/*-------------------------------------------------------------------
* TD3 PART II
* ------------------------------------------------------------------
*/
public function setLog($bool){
if($bool) DB::connection()->enableQueryLog();
else DB::connection()->disableQueryLog();
}
public function getLog(){
$res = '<center><h2>Log</h2></center>';
$log = DB::connection()->getQueryLog();
foreach ($log as $line){
$res = $res . "<div> <p>----------------------------------------------------------------------------------------------------------</p>";
$res = $res . "<p> - Requete sql : " . $line['query'] . " : </p>";
$res = $res . "<div><p>   | - Parametres : </p>";
foreach ($line['bindings'] as $bind){
$res = $res . "<p>     - $bind</p>";
}
$res = $res . "</div> <p>   | - Temps d'execution : " . $line['time'] . "</p>";
$res = $res . "<p>----------------------------------------------------------------------------------------------------------</p></div>";
}
return $res;
}
public function td3_q1b(){
return Game::where('name', 'like','%Mario%')->get();
}
public function td3_q2b(){
return Game::where('id', '=', 12342)->first()->characters()->get();
}
public function td3_q3b(){
$res = null;
$q = Game::where('name', 'like', "%Mario%")->get();
foreach ($q as $game) {
$list = $game->characters()->get();
foreach ($list as $character)
$first = $character->games()->orderBy('original_release_date', 'asc')->first();
if($first != null && str_contains(strtolower($first->name),'mario'))
$res[] = $character;
}
$res = array_unique((array)$res);
return $res;
}
public function td3_q4b(){
$q = Game::where('name', 'like', "Mario%")->get();
foreach ($q as $game) {
$characters = $game->characters()->get();
foreach ($characters as $char)
$res[] = $char;
}
$res = array_unique((array)$res);
return $res;
}
public function td3_q5b(){
$res = null;
$comps = Company::where('name','like', '%Sony%')->get();
foreach ($comps as $comp) {
$games = $comp->games()->get();
foreach ($games as $game) $res[] = $game;
}
$res = array_unique((array)$res);
return $res;
}
public function td3_q6b(){
$res = null;
$results = DB::table('game')
->select(DB::raw('group_concat(character.name) as names'))
->join('game2character', 'game.id', '=', 'game2character.game_id')
->join('character', 'game2character.character_id', '=', 'character.id')
->whereRaw('`game`.`name` like \'%Mario%\'')
->groupBy('game.name')
->get();
foreach ($results as $result) {
$names = explode(',', $result->names);
foreach($names as $name) $res[] = $name;
}
return $res;
}
public function allGame(){
$time_start = microtime(true);
Game::get();
$time_end = microtime(true);
$time = $time_end - $time_start;
return $time;
}
public function gameMario(){
$time_start = microtime(true);
Game::where('name', 'like', "%Mario%")->get();
$time_end = microtime(true);
$time = $time_end - $time_start;
return $time;
}
public function gameDebMario(){
$time_start = microtime(true);
$q= Game::where('name', 'like', "Mario%")->get();
foreach ($q as $game) {
$game->characters()->get();
}
$time_end = microtime(true);
$time = $time_end - $time_start;
return $time;
}
public function gameDebMarioRate(){
$time_start = microtime(true);
Game_rating::select('name')->where('name', 'like', '%3+%')->get();
$time_end = microtime(true);
$time = $time_end - $time_start;
return $time;
}
}