cleanup old winner tabulation
This commit is contained in:
@@ -0,0 +1,309 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use App\Models\Bidders;
|
||||
use App\Models\CarShowCategory;
|
||||
use App\Models\CarShowWinner;
|
||||
use App\Models\PeoplesChoice;
|
||||
use App\Models\Vehicles;
|
||||
use App\Models\VehicleScores;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
|
||||
class TabulateWinners extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'carshow:tabulatewinners';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Tabulate Show Winners, and add them to the CarShowWinner table';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
|
||||
public function handle()
|
||||
{
|
||||
function bestInShowWinner()
|
||||
{
|
||||
$bestInShowWinnerQuery = VehicleScores::join('vehicles', 'vehicle_scores.vehicle', '=', 'vehicles.id')
|
||||
->groupBy('vehicles.id')
|
||||
->selectRaw('*, sum(vehicle_scores.overall_score) as totalscore')
|
||||
->whereNotIn('vehicle_scores.vehicle', function($query){
|
||||
$query->select('vehicle')->from('car_show_winners');
|
||||
})
|
||||
->where('vehicles.doNotJudge', '=', 0)
|
||||
->orderBy('totalscore','desc')
|
||||
->first();
|
||||
return $bestInShowWinnerQuery->vehicle;
|
||||
}
|
||||
|
||||
function bestInShow2ndWinner()
|
||||
{
|
||||
$bestInShow2ndWinnerQuery = VehicleScores::join('vehicles', 'vehicle_scores.vehicle', '=', 'vehicles.id')
|
||||
->groupBy('vehicles.id')
|
||||
->selectRaw('*, sum(vehicle_scores.overall_score) as totalscore')
|
||||
->whereNotIn('vehicle_scores.vehicle', function($query){
|
||||
$query->select('vehicle')->from('car_show_winners');
|
||||
})
|
||||
->where('vehicles.doNotJudge', '=', 0)
|
||||
->orderBy('totalscore','desc')
|
||||
->first();
|
||||
return $bestInShow2ndWinnerQuery->vehicle;
|
||||
}
|
||||
|
||||
function pcWinner()
|
||||
{
|
||||
$peoplesChoiceWinnerQuery = PeoplesChoice::join('vehicles', 'peoples_choice.vehicle', '=', 'vehicles.id')
|
||||
->groupBy('peoples_choice.vehicle')
|
||||
->selectRaw('*, sum(pc_count) as totalscore')
|
||||
->whereNotIn('vehicle', function($query){
|
||||
$query->select('vehicle')->from('car_show_winners');
|
||||
})
|
||||
->where('vehicles.doNotJudge', '=', 0)
|
||||
->orderBy('totalscore','desc')
|
||||
->first();
|
||||
return $peoplesChoiceWinnerQuery->vehicle;
|
||||
}
|
||||
|
||||
function pc2ndWinner()
|
||||
{
|
||||
$peoplesChoice2ndWinnerQuery = PeoplesChoice::join('vehicles', 'peoples_choice.vehicle', '=', 'vehicles.id')
|
||||
->groupBy('peoples_choice.vehicle')
|
||||
->selectRaw('*, sum(pc_count) as totalscore')
|
||||
->whereNotIn('vehicle', function($query){
|
||||
$query->select('vehicle')->from('car_show_winners');
|
||||
})
|
||||
->where('vehicles.doNotJudge', '=', 0)
|
||||
->orderBy('totalscore','desc')
|
||||
->first();
|
||||
return $peoplesChoice2ndWinnerQuery->vehicle;
|
||||
}
|
||||
|
||||
function zeroTo42Winner()
|
||||
{
|
||||
$zeroTo43Query = VehicleScores::join('vehicles', 'vehicle_scores.vehicle', '=', 'vehicles.id')
|
||||
->groupBy('vehicles.id')
|
||||
->selectRaw('*, sum(vehicle_scores.overall_score) as totalscore')
|
||||
->whereNotIn('vehicle_scores.vehicle', function($query){
|
||||
$query->select('vehicle')->from('car_show_winners');
|
||||
})
|
||||
->where('vehicles.year', '>=', 0)
|
||||
->where('vehicles.year', '<=', 1942)
|
||||
->where('vehicles.doNotJudge', '=', 0)
|
||||
->orderBy('totalscore','desc')
|
||||
->first();
|
||||
return $zeroTo43Query->vehicle;
|
||||
}
|
||||
|
||||
function fortyThreeToSixtyNineWinner()
|
||||
{
|
||||
$fortyThreeToSixtyNineQuery = VehicleScores::join('vehicles', 'vehicle_scores.vehicle', '=', 'vehicles.id')
|
||||
->groupBy('vehicles.id')
|
||||
->selectRaw('*, sum(vehicle_scores.overall_score) as totalscore')
|
||||
->whereNotIn('vehicle_scores.vehicle', function($query){
|
||||
$query->select('vehicle')->from('car_show_winners');
|
||||
})
|
||||
->where('vehicles.year', '>=', 1943)
|
||||
->where('vehicles.year', '<=', 1969)
|
||||
->where('vehicles.doNotJudge', '=', 0)
|
||||
->orderBy('totalscore','desc')
|
||||
->first();
|
||||
return $fortyThreeToSixtyNineQuery->vehicle;
|
||||
}
|
||||
|
||||
function seventyToTwoThousandWinner()
|
||||
{
|
||||
$seventyToTwoThousandQuery = VehicleScores::join('vehicles', 'vehicle_scores.vehicle', '=', 'vehicles.id')
|
||||
->groupBy('vehicles.id')
|
||||
->selectRaw('*, sum(vehicle_scores.overall_score) as totalscore')
|
||||
->whereNotIn('vehicle_scores.vehicle', function($query){
|
||||
$query->select('vehicle')->from('car_show_winners');
|
||||
})
|
||||
->where('vehicles.year', '>=', 1970)
|
||||
->where('vehicles.year', '<=', 2000)
|
||||
->where('vehicles.doNotJudge', '=', 0)
|
||||
->orderBy('totalscore','desc')
|
||||
->first();
|
||||
return $seventyToTwoThousandQuery->vehicle;
|
||||
}
|
||||
|
||||
function TwoThousandOneToCurrentWinner()
|
||||
{
|
||||
$TwoThousandOneToCurrentQuery = VehicleScores::join('vehicles', 'vehicle_scores.vehicle', '=', 'vehicles.id')
|
||||
->groupBy('vehicles.id')
|
||||
->selectRaw('*, sum(vehicle_scores.overall_score) as totalscore')
|
||||
->whereNotIn('vehicle_scores.vehicle', function($query){
|
||||
$query->select('vehicle')->from('car_show_winners');
|
||||
})
|
||||
->where('vehicles.year', '>=', 2001)
|
||||
//->where('vehicles.year', '<=', 1997)
|
||||
->where('vehicles.doNotJudge', '=', 0)
|
||||
->orderBy('totalscore','desc')
|
||||
->first();
|
||||
return $TwoThousandOneToCurrentQuery->vehicle;
|
||||
}
|
||||
|
||||
// Truncate table first
|
||||
CarShowWinner::truncate();
|
||||
//Insert Best In Show Winner
|
||||
CarShowWinner::updateOrCreate(
|
||||
[
|
||||
'category' => '6',
|
||||
'place' => 'first'
|
||||
],
|
||||
[
|
||||
'vehicle' => bestInShowWinner()
|
||||
]
|
||||
);
|
||||
|
||||
//Insert People's Choice Winner
|
||||
CarShowWinner::updateOrCreate(
|
||||
[
|
||||
'category' => '3',
|
||||
'place' => 'first'
|
||||
],
|
||||
[
|
||||
'vehicle' => pcWinner()
|
||||
]
|
||||
);
|
||||
|
||||
//Insert Year Award Winners
|
||||
//0-1942
|
||||
CarShowWinner::updateOrCreate(
|
||||
[
|
||||
'category' => '17',
|
||||
'place' => 'first'
|
||||
],
|
||||
[
|
||||
'vehicle' => zeroTo42Winner()
|
||||
]
|
||||
);
|
||||
CarShowWinner::updateOrCreate(
|
||||
[
|
||||
'category' => '17',
|
||||
'place' => 'second'
|
||||
],
|
||||
[
|
||||
'vehicle' => zeroTo42Winner()
|
||||
]
|
||||
);
|
||||
CarShowWinner::updateOrCreate(
|
||||
[
|
||||
'category' => '17',
|
||||
'place' => 'third'
|
||||
],
|
||||
[
|
||||
'vehicle' => zeroTo42Winner()
|
||||
]
|
||||
);
|
||||
//1943-1969
|
||||
CarShowWinner::updateOrCreate(
|
||||
[
|
||||
'category' => '18',
|
||||
'place' => 'first'
|
||||
],
|
||||
[
|
||||
'vehicle' => fortyThreeToSixtyNineWinner()
|
||||
]
|
||||
);
|
||||
CarShowWinner::updateOrCreate(
|
||||
[
|
||||
'category' => '18',
|
||||
'place' => 'second'
|
||||
],
|
||||
[
|
||||
'vehicle' => fortyThreeToSixtyNineWinner()
|
||||
]
|
||||
);
|
||||
CarShowWinner::updateOrCreate(
|
||||
[
|
||||
'category' => '18',
|
||||
'place' => 'third'
|
||||
],
|
||||
[
|
||||
'vehicle' => fortyThreeToSixtyNineWinner()
|
||||
]
|
||||
);
|
||||
|
||||
//1970-2000
|
||||
CarShowWinner::updateOrCreate(
|
||||
[
|
||||
'category' => '20',
|
||||
'place' => 'first'
|
||||
],
|
||||
[
|
||||
'vehicle' => seventyToTwoThousandWinner()
|
||||
]
|
||||
);
|
||||
CarShowWinner::updateOrCreate(
|
||||
[
|
||||
'category' => '20',
|
||||
'place' => 'second'
|
||||
],
|
||||
[
|
||||
'vehicle' => seventyToTwoThousandWinner()
|
||||
]
|
||||
);
|
||||
CarShowWinner::updateOrCreate(
|
||||
[
|
||||
'category' => '20',
|
||||
'place' => 'third'
|
||||
],
|
||||
[
|
||||
'vehicle' => seventyToTwoThousandWinner()
|
||||
]
|
||||
);
|
||||
|
||||
//2001-Current
|
||||
CarShowWinner::updateOrCreate(
|
||||
[
|
||||
'category' => '19',
|
||||
'place' => 'first'
|
||||
],
|
||||
[
|
||||
'vehicle' => TwoThousandOneToCurrentWinner()
|
||||
]
|
||||
);
|
||||
CarShowWinner::updateOrCreate(
|
||||
[
|
||||
'category' => '19',
|
||||
'place' => 'second'
|
||||
],
|
||||
[
|
||||
'vehicle' => TwoThousandOneToCurrentWinner()
|
||||
]
|
||||
);
|
||||
CarShowWinner::updateOrCreate(
|
||||
[
|
||||
'category' => '19',
|
||||
'place' => 'third'
|
||||
],
|
||||
[
|
||||
'vehicle' => TwoThousandOneToCurrentWinner()
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user