test new pages

This commit is contained in:
2026-04-16 15:50:03 -04:00
parent 330e210fde
commit e7c539e4ef
5 changed files with 182 additions and 25 deletions
+25 -25
View File
@@ -118,52 +118,52 @@ class TabulateWinners extends Command
return $zeroTo43Query->vehicle; return $zeroTo43Query->vehicle;
} }
function fortyThreeToSixtyEightWinner() function fortyThreeToSixtyNineWinner()
{ {
$fortyThreeToSixtyEightQuery = VehicleScores::join('vehicles', 'vehicle_scores.vehicle', '=', 'vehicles.id') $fortyThreeToSixtyNineQuery = VehicleScores::join('vehicles', 'vehicle_scores.vehicle', '=', 'vehicles.id')
->groupBy('vehicles.id') ->groupBy('vehicles.id')
->selectRaw('*, sum(vehicle_scores.overall_score) as totalscore') ->selectRaw('*, sum(vehicle_scores.overall_score) as totalscore')
->whereNotIn('vehicle_scores.vehicle', function($query){ ->whereNotIn('vehicle_scores.vehicle', function($query){
$query->select('vehicle')->from('car_show_winners'); $query->select('vehicle')->from('car_show_winners');
}) })
->where('vehicles.year', '>=', 1943) ->where('vehicles.year', '>=', 1943)
->where('vehicles.year', '<=', 1968) ->where('vehicles.year', '<=', 1969)
->where('vehicles.doNotJudge', '=', 0) ->where('vehicles.doNotJudge', '=', 0)
->orderBy('totalscore','desc') ->orderBy('totalscore','desc')
->first(); ->first();
return $fortyThreeToSixtyEightQuery->vehicle; return $fortyThreeToSixtyNineQuery->vehicle;
} }
function sixtyNineToNinetyNineWinner() function seventyToTwoThousandWinner()
{ {
$sixtyNineToNinetyNineQuery = VehicleScores::join('vehicles', 'vehicle_scores.vehicle', '=', 'vehicles.id') $seventyToTwoThousandQuery = VehicleScores::join('vehicles', 'vehicle_scores.vehicle', '=', 'vehicles.id')
->groupBy('vehicles.id') ->groupBy('vehicles.id')
->selectRaw('*, sum(vehicle_scores.overall_score) as totalscore') ->selectRaw('*, sum(vehicle_scores.overall_score) as totalscore')
->whereNotIn('vehicle_scores.vehicle', function($query){ ->whereNotIn('vehicle_scores.vehicle', function($query){
$query->select('vehicle')->from('car_show_winners'); $query->select('vehicle')->from('car_show_winners');
}) })
->where('vehicles.year', '>=', 1969) ->where('vehicles.year', '>=', 1970)
->where('vehicles.year', '<=', 1999) ->where('vehicles.year', '<=', 2000)
->where('vehicles.doNotJudge', '=', 0) ->where('vehicles.doNotJudge', '=', 0)
->orderBy('totalscore','desc') ->orderBy('totalscore','desc')
->first(); ->first();
return $sixtyNineToNinetyNineQuery->vehicle; return $seventyToTwoThousandQuery->vehicle;
} }
function TwoThousandToCurrentWinner() function TwoThousandOneToCurrentWinner()
{ {
$TwoThousandToCurrentQuery = VehicleScores::join('vehicles', 'vehicle_scores.vehicle', '=', 'vehicles.id') $TwoThousandOneToCurrentQuery = VehicleScores::join('vehicles', 'vehicle_scores.vehicle', '=', 'vehicles.id')
->groupBy('vehicles.id') ->groupBy('vehicles.id')
->selectRaw('*, sum(vehicle_scores.overall_score) as totalscore') ->selectRaw('*, sum(vehicle_scores.overall_score) as totalscore')
->whereNotIn('vehicle_scores.vehicle', function($query){ ->whereNotIn('vehicle_scores.vehicle', function($query){
$query->select('vehicle')->from('car_show_winners'); $query->select('vehicle')->from('car_show_winners');
}) })
->where('vehicles.year', '>=', 2000) ->where('vehicles.year', '>=', 2001)
//->where('vehicles.year', '<=', 1997) //->where('vehicles.year', '<=', 1997)
->where('vehicles.doNotJudge', '=', 0) ->where('vehicles.doNotJudge', '=', 0)
->orderBy('totalscore','desc') ->orderBy('totalscore','desc')
->first(); ->first();
return $TwoThousandToCurrentQuery->vehicle; return $TwoThousandOneToCurrentQuery->vehicle;
} }
// Truncate table first // Truncate table first
@@ -219,14 +219,14 @@ class TabulateWinners extends Command
'vehicle' => zeroTo42Winner() 'vehicle' => zeroTo42Winner()
] ]
); );
//1943-1967 //1943-1969
CarShowWinner::updateOrCreate( CarShowWinner::updateOrCreate(
[ [
'category' => '18', 'category' => '18',
'place' => 'first' 'place' => 'first'
], ],
[ [
'vehicle' => fortyThreeToSixtyEightWinner() 'vehicle' => fortyThreeToSixtyNineWinner()
] ]
); );
CarShowWinner::updateOrCreate( CarShowWinner::updateOrCreate(
@@ -235,7 +235,7 @@ class TabulateWinners extends Command
'place' => 'second' 'place' => 'second'
], ],
[ [
'vehicle' => fortyThreeToSixtyEightWinner() 'vehicle' => fortyThreeToSixtyNineWinner()
] ]
); );
CarShowWinner::updateOrCreate( CarShowWinner::updateOrCreate(
@@ -244,18 +244,18 @@ class TabulateWinners extends Command
'place' => 'third' 'place' => 'third'
], ],
[ [
'vehicle' => fortyThreeToSixtyEightWinner() 'vehicle' => fortyThreeToSixtyNineWinner()
] ]
); );
//1968-1997 //1970-2000
CarShowWinner::updateOrCreate( CarShowWinner::updateOrCreate(
[ [
'category' => '20', 'category' => '20',
'place' => 'first' 'place' => 'first'
], ],
[ [
'vehicle' => sixtyNineToNinetyNineWinner() 'vehicle' => seventyToTwoThousandWinner()
] ]
); );
CarShowWinner::updateOrCreate( CarShowWinner::updateOrCreate(
@@ -264,7 +264,7 @@ class TabulateWinners extends Command
'place' => 'second' 'place' => 'second'
], ],
[ [
'vehicle' => sixtyNineToNinetyNineWinner() 'vehicle' => seventyToTwoThousandWinner()
] ]
); );
CarShowWinner::updateOrCreate( CarShowWinner::updateOrCreate(
@@ -273,18 +273,18 @@ class TabulateWinners extends Command
'place' => 'third' 'place' => 'third'
], ],
[ [
'vehicle' => sixtyNineToNinetyNineWinner() 'vehicle' => seventyToTwoThousandWinner()
] ]
); );
//1998-Current //2001-Current
CarShowWinner::updateOrCreate( CarShowWinner::updateOrCreate(
[ [
'category' => '19', 'category' => '19',
'place' => 'first' 'place' => 'first'
], ],
[ [
'vehicle' => TwoThousandToCurrentWinner() 'vehicle' => TwoThousandOneToCurrentWinner()
] ]
); );
CarShowWinner::updateOrCreate( CarShowWinner::updateOrCreate(
@@ -293,7 +293,7 @@ class TabulateWinners extends Command
'place' => 'second' 'place' => 'second'
], ],
[ [
'vehicle' => TwoThousandToCurrentWinner() 'vehicle' => TwoThousandOneToCurrentWinner()
] ]
); );
CarShowWinner::updateOrCreate( CarShowWinner::updateOrCreate(
@@ -302,7 +302,7 @@ class TabulateWinners extends Command
'place' => 'third' 'place' => 'third'
], ],
[ [
'vehicle' => TwoThousandToCurrentWinner() 'vehicle' => TwoThousandOneToCurrentWinner()
] ]
); );
} }
+133
View File
@@ -0,0 +1,133 @@
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use App\Models\CarShowWinner;
use App\Models\PeoplesChoice;
use App\Models\VehicleScores;
use Illuminate\Support\Facades\DB;
class TabulateWinnersNew extends Command
{
protected $signature = 'carshow:tabulatewinnersnew';
protected $description = 'Tabulate Show Winners. Year Category 1st places can overlap with Best in Show/People\'s Choice.';
public function handle()
{
// 1. Reset the winners table
CarShowWinner::truncate();
$this->info('Starting tabulation...');
// 2. BEST IN SHOW (Category 6)
$this->recordJudgedWinners(6, 'first', null, null, true);
// 3. PEOPLE'S CHOICE (Category 3)
$this->recordPeoplesChoiceWinners(3, 'first');
// 4. YEAR CATEGORIES
$yearConfigs = [
['id' => 17, 'name' => '0-1942', 'start' => 0, 'end' => 1942],
['id' => 18, 'name' => '1943-1969', 'start' => 1943, 'end' => 1969],
['id' => 20, 'name' => '1970-2000', 'start' => 1970, 'end' => 2000],
['id' => 19, 'name' => '2001-Current', 'start' => 2001, 'end' => 2026],
];
foreach ($yearConfigs as $config) {
$this->info("Processing Category: {$config['name']}");
// Rank 1st: Set $excludeExisting to FALSE so they can win even if they won Best in Show
$this->recordJudgedWinners($config['id'], 'first', $config['start'], $config['end'], false);
// Rank 2nd: Set $excludeExisting to TRUE (standard behavior)
$this->recordJudgedWinners($config['id'], 'second', $config['start'], $config['end'], true);
// Rank 3rd: Set $excludeExisting to TRUE
$this->recordJudgedWinners($config['id'], 'third', $config['start'], $config['end'], true);
// Rank 4th: Set $excludeExisting to TRUE
$this->recordJudgedWinners($config['id'], 'fourth', $config['start'], $config['end'], true);
// Rank 5th: Set $excludeExisting to TRUE
$this->recordJudgedWinners($config['id'], 'fifth', $config['start'], $config['end'], true);
}
$this->info('Winners tabulated successfully.');
}
/**
* @param bool $excludeExisting If true, ignores vehicles already in the winners table.
*/
private function recordJudgedWinners($categoryId, $place, $startYear = null, $endYear = null, $excludeExisting = true)
{
$query = VehicleScores::join('vehicles', 'vehicle_scores.vehicle', '=', 'vehicles.id')
->where('vehicles.doNotJudge', 0);
// Conditional exclusion
if ($excludeExisting) {
$query->whereNotIn('vehicle_scores.vehicle', function ($q) {
$q->select('vehicle')->from('car_show_winners');
});
}
if ($startYear !== null) $query->where('vehicles.year', '>=', $startYear);
if ($endYear !== null) $query->where('vehicles.year', '<=', $endYear);
$maxScore = (clone $query)
->groupBy('vehicles.id')
->selectRaw('sum(vehicle_scores.overall_score) as totalscore')
->orderBy('totalscore', 'desc')
->value('totalscore');
if ($maxScore) {
$winners = $query->selectRaw('vehicles.id as vehicle_id, sum(vehicle_scores.overall_score) as totalscore')
->groupBy('vehicles.id')
->having('totalscore', '=', $maxScore)
->get();
foreach ($winners as $winner) {
// Use updateOrCreate to prevent the exact same car/category/place combo doubling up
CarShowWinner::updateOrCreate([
'category' => $categoryId,
'place' => $place,
'vehicle' => $winner->vehicle_id
]);
}
}
}
private function recordPeoplesChoiceWinners($categoryId, $place)
{
// People's Choice usually excludes the Best in Show winner
$maxVotes = PeoplesChoice::join('vehicles', 'peoples_choice.vehicle', '=', 'vehicles.id')
->where('vehicles.doNotJudge', 0)
->whereNotIn('peoples_choice.vehicle', function ($q) {
$q->select('vehicle')->from('car_show_winners');
})
->groupBy('peoples_choice.vehicle')
->selectRaw('sum(pc_count) as totalvotes')
->orderBy('totalvotes', 'desc')
->value('totalvotes');
if ($maxVotes) {
$winners = PeoplesChoice::join('vehicles', 'peoples_choice.vehicle', '=', 'vehicles.id')
->selectRaw('peoples_choice.vehicle as vehicle_id, sum(pc_count) as totalvotes')
->where('vehicles.doNotJudge', 0)
->whereNotIn('peoples_choice.vehicle', function ($q) {
$q->select('vehicle')->from('car_show_winners');
})
->groupBy('peoples_choice.vehicle')
->having('totalvotes', '=', $maxVotes)
->get();
foreach ($winners as $winner) {
CarShowWinner::create([
'category' => $categoryId,
'place' => $place,
'vehicle' => $winner->vehicle_id
]);
}
}
}
}
+9
View File
@@ -490,6 +490,15 @@ class PagesController extends Controller
->get(); ->get();
return view('carshowscores', ['carshowscore_results' => $carshowscore_results]); return view('carshowscores', ['carshowscore_results' => $carshowscore_results]);
} }
public function showscoresbycar()
{
$carshowscore2_results = VehicleScores::with(['scoredVehicle'])
->groupBy('vehicle')
->selectRaw('*, sum(vehicle_scores.overall_score) as totalscore')
->orderBy('vehicle', 'desc')
->get();
return view('carshowscores', ['carshowscore_results' => $carshowscore2_results]);
}
public function showcarlist() public function showcarlist()
{ {
$showcarlist_results = Bidders::has('vehicles') $showcarlist_results = Bidders::has('vehicles')
+10
View File
@@ -151,11 +151,21 @@
Vehicle Total Scores Vehicle Total Scores
</a> </a>
</li> </li>
<li>
<a href="/showscoresbycar">
Vehicle Total Scores by Car
</a>
</li>
<li> <li>
<a href="/tabulateshowwinners"> <a href="/tabulateshowwinners">
Tabulate Show Winners Tabulate Show Winners
</a> </a>
</li> </li>
<li>
<a href="/tabulateshowwinnersnew">
Tabulate Show Winners New
</a>
</li>
</ul> </ul>
</li> </li>
<li class="dropdown"> <li class="dropdown">
+5
View File
@@ -19,6 +19,7 @@ Route::get('home', [ 'uses' => 'PagesController@home']);
Route::get('winningbidderlist', [ 'uses' => 'PagesController@winningbidderlist']); Route::get('winningbidderlist', [ 'uses' => 'PagesController@winningbidderlist']);
Route::get('showwinners', [ 'uses' => 'PagesController@showwinners']); Route::get('showwinners', [ 'uses' => 'PagesController@showwinners']);
Route::get('showscores', [ 'uses' => 'PagesController@showscores']); Route::get('showscores', [ 'uses' => 'PagesController@showscores']);
Route::get('showscoresbycar', [ 'uses' => 'PagesController@showscoresbycar']);
Route::group(['middleware' => 'auth'], function() { Route::group(['middleware' => 'auth'], function() {
Route::get('bidders', [ 'uses' => 'PagesController@bidders']); Route::get('bidders', [ 'uses' => 'PagesController@bidders']);
@@ -62,4 +63,8 @@ Route::group(['middleware' => 'auth'], function() {
Artisan::call('carshow:tabulatewinners'); Artisan::call('carshow:tabulatewinners');
return redirect('showwinners'); return redirect('showwinners');
}); });
Route::get('tabulateshowwinnersnew', function() {
Artisan::call('carshow:tabulatewinners');
return redirect('showwinners');
});
}); });