Compare commits
185 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bd6b83ad13 | |||
| 39a181e013 | |||
| ebfbee5296 | |||
| 39ffca777c | |||
| c76a8ed04a | |||
| 896c96e1a4 | |||
| f9590c7814 | |||
| 2935d84671 | |||
| a1ef5686e3 | |||
| ce5b69f362 | |||
| a95aa04cb9 | |||
| 935c7ba31b | |||
| 700d2f0741 | |||
| 4ef20cba50 | |||
| f35624cc6d | |||
| 6a911ba76c | |||
| d1c03b927e | |||
| bbea9e51c8 | |||
| 17b2224490 | |||
| c2ec8464ba | |||
| 1dbf0c51bb | |||
| 2b5046b077 | |||
| a2ce8a51fe | |||
| 2512c27904 | |||
| 4fdd41e9b8 | |||
| e79d6174f8 | |||
| 4ed1f6769d | |||
| f75bdb6b4a | |||
| 31acaa23dd | |||
| d4ea64007f | |||
| 7a05e73d52 | |||
| 9ed1765c73 | |||
| 4893550e2a | |||
| 24e2d91eb7 | |||
| 7a6028c63d | |||
| 8d138e22b7 | |||
| 92da95bdff | |||
| 2e5454484f | |||
| ad610633d1 | |||
| 80545f38b3 | |||
| 1b30673823 | |||
| 3703ed569a | |||
| c63ca6626e | |||
| a7edc0115d | |||
| e8a31380f7 | |||
| 1ad8f53a95 | |||
| 05dad0ece0 | |||
| b5bbe4d1b5 | |||
| 2db4ad18e3 | |||
| 107223f2cc | |||
| 799eb37ae0 | |||
| d79d2fbe3e | |||
| 6e2c27a5a4 | |||
| 9e2c50a9ee | |||
| 239ee20397 | |||
| 7bf32dfdcc | |||
| f96b70684b | |||
| bd87475b4d | |||
| 6b1d87414e | |||
| 7a4b926aac | |||
| fb31d91476 | |||
| 55a05ef00e | |||
| a4483788cf | |||
| 2a6edc07f9 | |||
| ba6182e41e | |||
| 2cd8feb19d | |||
| b6ed1e8325 | |||
| 7a29315759 | |||
| 5f4b0c16a3 | |||
| 599b404791 | |||
| 3ddf99172e | |||
| 5c1b855283 | |||
| a4f26e9006 | |||
| 444b9e26db | |||
| 24905c9506 | |||
| 6cb3e1ac24 | |||
| 30dbbd6d58 | |||
| 6193e7fce4 | |||
| 2521246bda | |||
| b208af478d | |||
| 7d9af30ed3 | |||
| 46fbe7c98d | |||
| 87aa8d74d4 | |||
| 01a6d78333 | |||
| af49c71d72 | |||
| e74295fee4 | |||
| e47e20e49b | |||
| 365ebf112a | |||
| 8e6f4bdcfc | |||
| 597c11acd1 | |||
| ea0c1272d1 | |||
| 66e0e467df | |||
| 46c88ed22a | |||
| 4bd0ec6e35 | |||
| 68f3be7644 | |||
| e19c077203 | |||
| bb71e41459 | |||
| 1f4b108c51 | |||
| 762b242046 | |||
| 3cc39c4b3d | |||
| ef00695950 | |||
| 3f711effdc | |||
| 599dfb6f14 | |||
| 5049ed9777 | |||
| b564a63c67 | |||
| 3d95c63e63 | |||
| 72362d2d90 | |||
| 0c4df52f83 | |||
| c6a82f66ad | |||
| 760a3887b6 | |||
| 583b146f41 | |||
| 9526e17f09 | |||
| b82df0a0fb | |||
| 7598164ce4 | |||
| e813d2543f | |||
| 74d67d073e | |||
| e5dbe3e126 | |||
| 18e7c9b361 | |||
| bec2234bd4 | |||
| 492ff400c7 | |||
| d0a0149a75 | |||
| 10349075b0 | |||
| 44a34b1114 | |||
| bd93dd0bf7 | |||
| 81dbf11592 | |||
| 7c88db310d | |||
| 0fd6a6c3e2 | |||
| 01c1d77016 | |||
| 008000314f | |||
| a382a434d4 | |||
| 610ee4290b | |||
| 846db1accf | |||
| 78c2fbb41a | |||
| f130d39118 | |||
| 1adb557265 | |||
| 75aa121ac7 | |||
| 296a6b9243 | |||
| ccac39cd85 | |||
| 69e4516ad8 | |||
| f6aac32eaa | |||
| a60a89d77d | |||
| cec229459d | |||
| 2ae745ffea | |||
| bd52e27f76 | |||
| 9108b6bab6 | |||
| 58450a1262 | |||
| 878236ae2f | |||
| 05ab1c6014 | |||
| 9065dcd911 | |||
| dcd08ae530 | |||
| d468991bd1 | |||
| 7d1ec59dea | |||
| 24d1eda717 | |||
| 9d981f3a34 | |||
| b9c018a4a6 | |||
| 23b0b30434 | |||
| 4b9220c89e | |||
| 298f3fa22b | |||
| 98be7131f4 | |||
| 999c1dfc58 | |||
| a3fd278536 | |||
| 290498c728 | |||
| aca21ae115 | |||
| 982efbf2bd | |||
| 3953a6f4c8 | |||
| fbb10a01d4 | |||
| 6ccb754e0c | |||
| 50826c8c20 | |||
| 68f75ac2fc | |||
| 9587c44657 | |||
| 06de3c0145 | |||
| d2d53e961b | |||
| b0816231d6 | |||
| e4cccba942 | |||
| e023f68a84 | |||
| 4edb7fac10 | |||
| 19f93f95bb | |||
| 885161cc2b | |||
| a8fd03f256 | |||
| 00ff08e3a6 | |||
| 7e8b35bf20 | |||
| 681d8b73d6 | |||
| f294ded6e8 | |||
| eca564eac7 | |||
| e8df889f7e |
@@ -39,3 +39,7 @@ OIDC_CLIENT_ID=
|
|||||||
OIDC_CLIENT_SECRET=
|
OIDC_CLIENT_SECRET=
|
||||||
OIDC_REDIRECT_URI="${APP_URL}/auth/social/oidc/callback"
|
OIDC_REDIRECT_URI="${APP_URL}/auth/social/oidc/callback"
|
||||||
|
|
||||||
|
NORTH_CHECKOUT_ID=
|
||||||
|
NORTH_PROFILE_ID=
|
||||||
|
NORTH_PRIVATE_API_KEY=
|
||||||
|
|
||||||
|
|||||||
@@ -12,3 +12,4 @@ npm-debug.log
|
|||||||
/public/rldbadm
|
/public/rldbadm
|
||||||
/stats
|
/stats
|
||||||
/.well-known
|
/.well-known
|
||||||
|
.DS_Store
|
||||||
@@ -13,6 +13,7 @@ use Filament\Actions\EditAction;
|
|||||||
use Filament\Actions\BulkActionGroup;
|
use Filament\Actions\BulkActionGroup;
|
||||||
use Filament\Actions\DeleteBulkAction;
|
use Filament\Actions\DeleteBulkAction;
|
||||||
use Filament\Support\Icons\Heroicon;
|
use Filament\Support\Icons\Heroicon;
|
||||||
|
use BackedEnum;
|
||||||
|
|
||||||
class UserResource extends Resource
|
class UserResource extends Resource
|
||||||
{
|
{
|
||||||
@@ -20,7 +21,7 @@ class UserResource extends Resource
|
|||||||
|
|
||||||
protected static ?string $recordTitleAttribute = 'name';
|
protected static ?string $recordTitleAttribute = 'name';
|
||||||
|
|
||||||
protected static string | \UnitEnum | null $navigationIcon = 'heroicon-o-users';
|
protected static string | BackedEnum | null $navigationIcon = 'heroicon-o-users';
|
||||||
|
|
||||||
public static function form(Schema $schema): Schema
|
public static function form(Schema $schema): Schema
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -49,8 +49,7 @@ class WinningBidsResource extends Resource
|
|||||||
->searchable(),
|
->searchable(),
|
||||||
TextInput::make('winning_cost')
|
TextInput::make('winning_cost')
|
||||||
->label('Winning Bid')
|
->label('Winning Bid')
|
||||||
->prefix('$')
|
->prefix('$'),
|
||||||
->numeric(),
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ use Illuminate\Routing\Controller as BaseController;
|
|||||||
use Illuminate\Foundation\Validation\ValidatesRequests;
|
use Illuminate\Foundation\Validation\ValidatesRequests;
|
||||||
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
||||||
|
|
||||||
class Controller extends BaseController
|
class Controller extends \Illuminate\Routing\Controller
|
||||||
{
|
{
|
||||||
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
|
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,212 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\Bidders;
|
||||||
|
use App\Models\Checkout;
|
||||||
|
use App\Models\WinningBids;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
|
class NorthCheckoutController extends Controller
|
||||||
|
{
|
||||||
|
public function checkout(Request $request, $bidder_id)
|
||||||
|
{
|
||||||
|
$bidder = Bidders::where('idbidders', $bidder_id)->firstOrFail();
|
||||||
|
|
||||||
|
// Check if already checked out
|
||||||
|
if (Checkout::where('bidder_num', $bidder->idbidders)->exists()) {
|
||||||
|
return redirect('/mywinnings?bidder_number=' . $bidder->bidder_assigned_number)->with('error', 'Bidder has already checked out.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$winnings = WinningBids::where('winning_bidder_num', $bidder->idbidders)->get();
|
||||||
|
$total_cost = $winnings->sum('winning_cost');
|
||||||
|
|
||||||
|
if ($total_cost <= 0) {
|
||||||
|
return redirect('/mywinnings?bidder_number=' . $bidder->bidder_assigned_number)->with('error', 'No winnings found for this bidder.');
|
||||||
|
}
|
||||||
|
|
||||||
|
return view('north_checkout', [
|
||||||
|
'bidder' => $bidder,
|
||||||
|
'total_cost' => $total_cost,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function createSession(Request $request, $bidder_id)
|
||||||
|
{
|
||||||
|
$bidder = Bidders::findOrFail($bidder_id);
|
||||||
|
$winnings = WinningBids::with('items')->where('winning_bidder_num', $bidder->idbidders)->get();
|
||||||
|
$total_cost = $winnings->sum('winning_cost');
|
||||||
|
|
||||||
|
$products = $winnings->map(function($winning) {
|
||||||
|
return [
|
||||||
|
'name' => $winning->items->item_desc ?? 'Auction Item',
|
||||||
|
'price' => (float)$winning->winning_cost,
|
||||||
|
'quantity' => 1
|
||||||
|
];
|
||||||
|
})->toArray();
|
||||||
|
|
||||||
|
$apiKey = config('services.north.private_api_key');
|
||||||
|
$checkoutId = config('services.north.checkout_id');
|
||||||
|
$profileId = config('services.north.profile_id');
|
||||||
|
|
||||||
|
if (!$apiKey || !$checkoutId || !$profileId) {
|
||||||
|
return response()->json(['error' => 'North configuration missing.'], 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
$response = Http::withHeaders([
|
||||||
|
'Authorization' => 'Bearer ' . $apiKey,
|
||||||
|
'Accept' => 'application/json',
|
||||||
|
'Content-Type' => 'application/json',
|
||||||
|
])->post('https://checkout.north.com/api/sessions', [
|
||||||
|
'checkoutId' => $checkoutId,
|
||||||
|
'profileId' => $profileId,
|
||||||
|
'amount' => (float)$total_cost,
|
||||||
|
'products' => $products,
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ($response->failed()) {
|
||||||
|
Log::error('North Session Creation Failed: ' . $response->status() . ' ' . $response->body());
|
||||||
|
return response()->json([
|
||||||
|
'error' => 'Failed to create checkout session: ' . ($response->json('message') ?? 'Unknown error'),
|
||||||
|
'status' => $response->status(),
|
||||||
|
'body' => $response->body()
|
||||||
|
], 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = $response->json();
|
||||||
|
|
||||||
|
// If json() is null but body is not empty, it might be a parsing error
|
||||||
|
if (is_null($data) && !empty($response->body())) {
|
||||||
|
Log::error('North Session Response is not JSON: ' . $response->body());
|
||||||
|
return response()->json([
|
||||||
|
'error' => 'Response from North is not valid JSON.',
|
||||||
|
'raw_body' => $response->body()
|
||||||
|
], 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
$token = $data['token'] ??
|
||||||
|
$data['sessionToken'] ??
|
||||||
|
$data['id'] ??
|
||||||
|
$data['session_id'] ??
|
||||||
|
($data['session']['id'] ?? null);
|
||||||
|
|
||||||
|
if (!$token) {
|
||||||
|
Log::error('North Session Token Missing in Response: ' . json_encode($data));
|
||||||
|
return response()->json([
|
||||||
|
'error' => 'Session token not found in API response.',
|
||||||
|
'debug_response' => $data,
|
||||||
|
'raw_body' => $response->body()
|
||||||
|
], 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
return response()->json(['sessionToken' => $token]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function verify(Request $request, $bidder_id)
|
||||||
|
{
|
||||||
|
$bidder = Bidders::findOrFail($bidder_id);
|
||||||
|
$sessionToken = $request->query('sessionToken');
|
||||||
|
if (!$sessionToken) {
|
||||||
|
return redirect('/mywinnings?bidder_number=' . $bidder->bidder_assigned_number)->with('error', 'Missing session token.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$apiKey = config('services.north.private_api_key');
|
||||||
|
$checkoutId = config('services.north.checkout_id');
|
||||||
|
$profileId = config('services.north.profile_id');
|
||||||
|
|
||||||
|
$response = Http::withHeaders([
|
||||||
|
'Authorization' => 'Bearer ' . $apiKey,
|
||||||
|
'SessionToken' => $sessionToken,
|
||||||
|
'CheckoutId' => $checkoutId,
|
||||||
|
'ProfileId' => $profileId,
|
||||||
|
'Accept' => 'application/json',
|
||||||
|
])->get('https://checkout.north.com/api/sessions/status');
|
||||||
|
|
||||||
|
if ($response->failed()) {
|
||||||
|
Log::error('North Session Verification Failed: ' . $response->status() . ' ' . $response->body());
|
||||||
|
return redirect('/mywinnings?bidder_number=' . $bidder->bidder_assigned_number)->with('error', 'Failed to verify payment status. Status: ' . $response->status());
|
||||||
|
}
|
||||||
|
|
||||||
|
$status = $response->json();
|
||||||
|
$currentStatus = $status['status'] ?? '';
|
||||||
|
|
||||||
|
// The North API status check might return Approved, completed, success, authorized, or captured.
|
||||||
|
$successStatuses = ['approved', 'completed', 'success', 'authorized', 'captured'];
|
||||||
|
|
||||||
|
if (in_array(strtolower($currentStatus), $successStatuses)) {
|
||||||
|
// Check if already checked out to avoid duplicates
|
||||||
|
$existingCheckout = Checkout::where('bidder_num', $bidder->idbidders)->first();
|
||||||
|
|
||||||
|
if (!$existingCheckout) {
|
||||||
|
// According to docs, when status is Approved, transaction details are in 'body'
|
||||||
|
// Digital wallets might have these at the top level
|
||||||
|
$body = $status['body'] ?? [];
|
||||||
|
$winnertotal = $status['amount'] ??
|
||||||
|
($body['amount'] ??
|
||||||
|
($status['amount_total'] ??
|
||||||
|
WinningBids::where('winning_bidder_num', $bidder->idbidders)->sum('winning_cost')));
|
||||||
|
|
||||||
|
$payment_method = 3; // Credit Card
|
||||||
|
$cc_transaction = $body['auth_guid'] ??
|
||||||
|
($status['transaction_id'] ??
|
||||||
|
($status['transactionId'] ??
|
||||||
|
($status['id'] ?? 'NORTH_EC')));
|
||||||
|
|
||||||
|
$cc_amount = $winnertotal;
|
||||||
|
$check_number = null;
|
||||||
|
|
||||||
|
$checkout_id = DB::table('checkout')->insertGetID(
|
||||||
|
[
|
||||||
|
'bidder_num' => $bidder->idbidders,
|
||||||
|
'winnertotal' => $winnertotal,
|
||||||
|
'payment_method' => $payment_method,
|
||||||
|
'check_number' => $check_number,
|
||||||
|
'cc_transaction' => $cc_transaction,
|
||||||
|
'cc_amount' => $cc_amount,
|
||||||
|
'created_at' => now(),
|
||||||
|
'updated_at' => now(),
|
||||||
|
]
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$checkout_id = $existingCheckout->checkout_id;
|
||||||
|
$payment_method = $existingCheckout->payment_method;
|
||||||
|
$cc_transaction = $existingCheckout->cc_transaction;
|
||||||
|
$check_number = $existingCheckout->check_number;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Replicate the data for checkout_complete view
|
||||||
|
$checkout_list_results = DB::select("SELECT
|
||||||
|
*, items.item_assigned_num, items.item_desc
|
||||||
|
FROM winning_bids
|
||||||
|
INNER JOIN items AS items
|
||||||
|
ON winning_bids.winning_item_num=items.iditems
|
||||||
|
WHERE winning_bidder_num = $bidder->idbidders
|
||||||
|
");
|
||||||
|
|
||||||
|
$checkout_info_results = DB::select("SELECT
|
||||||
|
winning_bids.*,
|
||||||
|
bidders.*,
|
||||||
|
sum(winning_cost) AS total_cost
|
||||||
|
FROM winning_bids
|
||||||
|
INNER JOIN bidders AS bidders
|
||||||
|
ON winning_bids.winning_bidder_num=bidders.idbidders
|
||||||
|
WHERE winning_bidder_num = $bidder->idbidders
|
||||||
|
GROUP BY winning_bids.winning_bidder_num
|
||||||
|
");
|
||||||
|
|
||||||
|
return view('checkout_complete', [
|
||||||
|
'checkout_result' => $checkout_id,
|
||||||
|
'checkout_list_results' => $checkout_list_results,
|
||||||
|
'checkout_info_results' => $checkout_info_results,
|
||||||
|
'payment_method' => $payment_method,
|
||||||
|
'check_number' => $check_number,
|
||||||
|
'cc_transaction' => $cc_transaction
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return redirect('/mywinnings?bidder_number=' . $bidder->bidder_assigned_number)->with('error', 'Payment not completed. Status: ' . ($status['status'] ?? 'unknown'));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,7 +6,7 @@ use Illuminate\Http\Request;
|
|||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use View;
|
use View;
|
||||||
use App\helpers;
|
use App\helpers;
|
||||||
use PDF;
|
use Spatie\LaravelPdf\Facades\Pdf;
|
||||||
use App\Models\Bidders;
|
use App\Models\Bidders;
|
||||||
use App\Models\Items;
|
use App\Models\Items;
|
||||||
use App\Models\Checkout;
|
use App\Models\Checkout;
|
||||||
@@ -19,6 +19,7 @@ use App\Models\CarShowCategory;
|
|||||||
use App\Models\Types;
|
use App\Models\Types;
|
||||||
use App\Models\Vehicles;
|
use App\Models\Vehicles;
|
||||||
use App\Models\VehicleScores;
|
use App\Models\VehicleScores;
|
||||||
|
use Dompdf\Dompdf;
|
||||||
|
|
||||||
class PagesController extends Controller
|
class PagesController extends Controller
|
||||||
{
|
{
|
||||||
@@ -81,7 +82,8 @@ class PagesController extends Controller
|
|||||||
public function checkout(Request $checkout_req)
|
public function checkout(Request $checkout_req)
|
||||||
{
|
{
|
||||||
if (!$checkout_req->checkoutbiddernum) {
|
if (!$checkout_req->checkoutbiddernum) {
|
||||||
return view('checkout_select_form');
|
$bidders = \App\Models\Bidders::orderByRaw('CAST(bidder_assigned_number AS UNSIGNED) ASC')->get();
|
||||||
|
return view('checkout_select_form', ['bidders' => $bidders]);
|
||||||
} elseif (!$checkout_req->checkout_payment_method) {
|
} elseif (!$checkout_req->checkout_payment_method) {
|
||||||
$checkout_bidder = $checkout_req->checkoutbiddernum;
|
$checkout_bidder = $checkout_req->checkoutbiddernum;
|
||||||
$checkout_list_results = DB::select("SELECT
|
$checkout_list_results = DB::select("SELECT
|
||||||
@@ -161,20 +163,32 @@ class PagesController extends Controller
|
|||||||
|
|
||||||
public function editwinners(Request $edit_win_req)
|
public function editwinners(Request $edit_win_req)
|
||||||
{
|
{
|
||||||
if (!$edit_win_req->winid) {
|
if ($edit_win_req->id) {
|
||||||
return view('editwinners');
|
$winner = WinningBids::with(['items', 'bidders'])->find($edit_win_req->id);
|
||||||
|
$bidders = Bidders::all();
|
||||||
|
$items = Items::all();
|
||||||
|
return view('editwinners', ['winner' => $winner, 'bidders' => $bidders, 'items' => $items]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!$edit_win_req->winid) {
|
||||||
|
$winners = WinningBids::with(['items', 'bidders'])->get();
|
||||||
|
return view('winnersbyitem', ['winnersbyitem_results' => $winners]);
|
||||||
|
}
|
||||||
|
|
||||||
$winning_bid_id = $edit_win_req->winid;
|
$winning_bid_id = $edit_win_req->winid;
|
||||||
$winner_bidder = $edit_win_req->winnerbiddernum;
|
$winner_bidder = $edit_win_req->winnerbiddernum;
|
||||||
|
$winner_item = $edit_win_req->winneritemnum;
|
||||||
$winner_cost = $edit_win_req->winnerbid;
|
$winner_cost = $edit_win_req->winnerbid;
|
||||||
|
|
||||||
$winner_insert = WinningBids::where('idwinning_bids', $winning_bid_id)
|
$winner_insert = WinningBids::where('idwinning_bids', $winning_bid_id)
|
||||||
->update(
|
->update(
|
||||||
[
|
[
|
||||||
'winning_bidder_num' => $winner_bidder,
|
'winning_bidder_num' => $winner_bidder,
|
||||||
|
'winning_item_num' => $winner_item,
|
||||||
'winning_cost' => $winner_cost
|
'winning_cost' => $winner_cost
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
return redirect('editwinners');
|
return redirect('winnersbyitem');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function finaltally()
|
public function finaltally()
|
||||||
@@ -250,10 +264,54 @@ class PagesController extends Controller
|
|||||||
return view('receiptpdf', $checkout_data);
|
return view('receiptpdf', $checkout_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function downloadReceiptPdf(Request $request)
|
||||||
|
{
|
||||||
|
$checkoutid = $request->checkout_id;
|
||||||
|
$checkout_final_results = Checkout::where('checkout_id', '=', $checkoutid)->first();
|
||||||
|
if (!$checkout_final_results) {
|
||||||
|
return redirect('/mywinnings')->with('error', 'Checkout record not found.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$bidder_num = $checkout_final_results->bidder_num;
|
||||||
|
$checkout_list_results = DB::select("SELECT
|
||||||
|
*, items.item_assigned_num, items.item_desc
|
||||||
|
FROM winning_bids
|
||||||
|
INNER JOIN items AS items ON winning_bids.winning_item_num=items.iditems
|
||||||
|
WHERE winning_bidder_num = $bidder_num
|
||||||
|
");
|
||||||
|
$checkout_info_results = DB::select("SELECT
|
||||||
|
winning_bids.*,
|
||||||
|
bidders.*,
|
||||||
|
sum(winning_cost) AS total_cost
|
||||||
|
FROM winning_bids
|
||||||
|
INNER JOIN bidders AS bidders ON winning_bids.winning_bidder_num=bidders.idbidders
|
||||||
|
WHERE winning_bidder_num = $bidder_num
|
||||||
|
GROUP BY winning_bids.winning_bidder_num
|
||||||
|
");
|
||||||
|
|
||||||
|
$options = new \Dompdf\Options();
|
||||||
|
$options->set('isHtml5ParserEnabled', true);
|
||||||
|
$options->set('isRemoteEnabled', true);
|
||||||
|
$dompdf = new Dompdf($options);
|
||||||
|
|
||||||
|
$html = view('receiptpdf', [
|
||||||
|
'checkout_final_results' => $checkout_final_results,
|
||||||
|
'checkout_list_results' => $checkout_list_results,
|
||||||
|
'checkout_info_results' => $checkout_info_results
|
||||||
|
])->render();
|
||||||
|
|
||||||
|
$dompdf->loadHtml($html);
|
||||||
|
$dompdf->setPaper('letter', 'portrait');
|
||||||
|
$dompdf->render();
|
||||||
|
|
||||||
|
return $dompdf->stream('receipt-'.$checkoutid.'.pdf');
|
||||||
|
}
|
||||||
|
|
||||||
public function reprintReceipt(Request $reprint_receipt_req)
|
public function reprintReceipt(Request $reprint_receipt_req)
|
||||||
{
|
{
|
||||||
if (!$reprint_receipt_req->reprintbiddernum) {
|
if (!$reprint_receipt_req->reprintbiddernum) {
|
||||||
return view('reprint_receipt_form');
|
$bidders = Bidders::has('checkout')->get();
|
||||||
|
return view('reprint_receipt_form', ['bidders' => $bidders]);
|
||||||
} else {
|
} else {
|
||||||
$bidnum=$reprint_receipt_req->reprintbiddernum;
|
$bidnum=$reprint_receipt_req->reprintbiddernum;
|
||||||
$checkout_result = Checkout::where('bidder_num', '=', $bidnum)
|
$checkout_result = Checkout::where('bidder_num', '=', $bidnum)
|
||||||
@@ -274,7 +332,9 @@ class PagesController extends Controller
|
|||||||
public function winners(Request $winners_req)
|
public function winners(Request $winners_req)
|
||||||
{
|
{
|
||||||
if (!$winners_req->winnerbid) {
|
if (!$winners_req->winnerbid) {
|
||||||
return view('winners');
|
$bidders = Bidders::all();
|
||||||
|
$items = Items::all();
|
||||||
|
return view('winners', ['bidders' => $bidders, 'items' => $items]);
|
||||||
}
|
}
|
||||||
$winner_item = $winners_req->winneritemnum;
|
$winner_item = $winners_req->winneritemnum;
|
||||||
$winner_bidder = $winners_req->winnerbiddernum;
|
$winner_bidder = $winners_req->winnerbiddernum;
|
||||||
@@ -291,22 +351,15 @@ class PagesController extends Controller
|
|||||||
|
|
||||||
public function winnersbyitem()
|
public function winnersbyitem()
|
||||||
{
|
{
|
||||||
$winnersbyitem_results = DB::select("SELECT
|
$winnersbyitem_results = WinningBids::with(['items', 'bidders'])->get();
|
||||||
*
|
|
||||||
FROM winning_bids
|
|
||||||
INNER JOIN items as items
|
|
||||||
ON winning_bids.winning_item_num=items.iditems
|
|
||||||
INNER JOIN bidders AS bidders
|
|
||||||
ON winning_bids.winning_bidder_num=bidders.idbidders
|
|
||||||
ORDER BY item_assigned_num ASC
|
|
||||||
");
|
|
||||||
return view('winnersbyitem', ['winnersbyitem_results' => $winnersbyitem_results]);
|
return view('winnersbyitem', ['winnersbyitem_results' => $winnersbyitem_results]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function winnertotal(Request $winnertotal_req)
|
public function winnertotal(Request $winnertotal_req)
|
||||||
{
|
{
|
||||||
if (!$winnertotal_req->winnerbiddernum) {
|
if (!$winnertotal_req->winnerbiddernum) {
|
||||||
return view('winnertotalform');
|
$bidders = Bidders::all();
|
||||||
|
return view('winnertotalform', ['bidders' => $bidders]);
|
||||||
}
|
}
|
||||||
$winner_total_bidder = $winnertotal_req->winnerbiddernum;
|
$winner_total_bidder = $winnertotal_req->winnerbiddernum;
|
||||||
$winnertotal_list_results = DB::select("SELECT
|
$winnertotal_list_results = DB::select("SELECT
|
||||||
@@ -334,37 +387,41 @@ class PagesController extends Controller
|
|||||||
|
|
||||||
public function winningbidderlist()
|
public function winningbidderlist()
|
||||||
{
|
{
|
||||||
$winnerlist_results = WinningBids::join('bidders', 'winning_bids.winning_bidder_num', '=', 'bidders.idbidders')
|
$winnerlist_results = Bidders::whereHas('winningBids')
|
||||||
->groupBy('winning_bidder_num')
|
->orderBy('bidder_assigned_number')
|
||||||
->orderBy('bidders.bidder_assigned_number')
|
|
||||||
->get();
|
->get();
|
||||||
return view('winningbidderlist', ['winnerlist_results' => $winnerlist_results]);
|
return view('winningbidderlist', ['winning_bidders' => $winnerlist_results]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function judgingentry(Request $judgingentry_req)
|
public function judgingentry(Request $judgingentry_req)
|
||||||
{
|
{
|
||||||
if (!$judgingentry_req->vehnum) {
|
$judges = \App\Models\Judges::all();
|
||||||
return view('judgingentry');
|
$vehicles = \App\Models\Vehicles::select('vehicles.*')
|
||||||
}
|
->leftJoin('bidders', 'vehicles.owner', '=', 'bidders.bidder_assigned_number')
|
||||||
$vehicle = $judgingentry_req->vehnum;
|
->orderByRaw('CAST(bidders.bidder_assigned_number AS UNSIGNED) ASC')
|
||||||
$judge = $judgingentry_req->judgenum;
|
->get();
|
||||||
$score = $judgingentry_req->vehscore;
|
|
||||||
$bidder_insert = VehicleScores::updateOrCreate(
|
|
||||||
[
|
|
||||||
'vehicle' => $vehicle,
|
|
||||||
'judge' => $judge
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'overall_score' => $score
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
return redirect('judgingentry');
|
if ($judgingentry_req->isMethod('post')) {
|
||||||
|
$vehicle = $judgingentry_req->vehnum;
|
||||||
|
$judge = $judgingentry_req->judgenum;
|
||||||
|
$score = $judgingentry_req->vehscore;
|
||||||
|
|
||||||
|
VehicleScores::updateOrCreate(
|
||||||
|
['vehicle' => $vehicle, 'judge' => $judge],
|
||||||
|
['overall_score' => $score]
|
||||||
|
);
|
||||||
|
|
||||||
|
return redirect('judgingentry');
|
||||||
|
}
|
||||||
|
|
||||||
|
return view('judgingentry', ['judges' => $judges, 'vehicles' => $vehicles]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function showcars(Request $showcar_req)
|
public function showcars(Request $showcar_req)
|
||||||
{
|
{
|
||||||
if (!$showcar_req->bidderlname) {
|
if (!$showcar_req->bidderlname) {
|
||||||
return view('showcars');
|
$vehicles = \App\Models\Vehicles::with('vehicleOwner')->get();
|
||||||
|
return view('showcars', ['vehicles' => $vehicles]);
|
||||||
}
|
}
|
||||||
$bidder_lname = $showcar_req->bidderlname;
|
$bidder_lname = $showcar_req->bidderlname;
|
||||||
$bidder_fname = $showcar_req->bidderfname;
|
$bidder_fname = $showcar_req->bidderfname;
|
||||||
@@ -423,7 +480,8 @@ class PagesController extends Controller
|
|||||||
public function pcentry(Request $pcentry_req)
|
public function pcentry(Request $pcentry_req)
|
||||||
{
|
{
|
||||||
if (!$pcentry_req->vehnum) {
|
if (!$pcentry_req->vehnum) {
|
||||||
return view('pcentry');
|
$vehicles = Vehicles::all();
|
||||||
|
return view('pcentry', ['vehicles' => $vehicles]);
|
||||||
}
|
}
|
||||||
$vehicle=$pcentry_req->vehnum;
|
$vehicle=$pcentry_req->vehnum;
|
||||||
$pc_count=$pcentry_req->pc_count;
|
$pc_count=$pcentry_req->pc_count;
|
||||||
@@ -457,7 +515,8 @@ class PagesController extends Controller
|
|||||||
public function awardcategories(Request $category_req)
|
public function awardcategories(Request $category_req)
|
||||||
{
|
{
|
||||||
if (!$category_req->category) {
|
if (!$category_req->category) {
|
||||||
return view('awardcategories');
|
$categories = CarShowCategory::all();
|
||||||
|
return view('awardcategories', ['categories' => $categories]);
|
||||||
}
|
}
|
||||||
$category = $category_req->category;
|
$category = $category_req->category;
|
||||||
if ($category_req->has('vehtype')) {
|
if ($category_req->has('vehtype')) {
|
||||||
@@ -479,20 +538,20 @@ class PagesController extends Controller
|
|||||||
public function showwinners()
|
public function showwinners()
|
||||||
{
|
{
|
||||||
$carshowwinner_results = CarShowWinner::with(['awardCategory', 'awardVehicle', 'awardVehicle.vehicleOwner'])->get();
|
$carshowwinner_results = CarShowWinner::with(['awardCategory', 'awardVehicle', 'awardVehicle.vehicleOwner'])->get();
|
||||||
return view('carshowwinners', ['carshowwinner_results' => $carshowwinner_results]);
|
return view('carshowwinners', ['winners' => $carshowwinner_results]);
|
||||||
}
|
}
|
||||||
public function showscores()
|
public function showscores()
|
||||||
{
|
{
|
||||||
$carshowscore_results = VehicleScores::with(['scoredVehicle'])
|
$carshowscore_results = VehicleScores::with(['scoredVehicle', 'scoredVehicle.vehicleOwner'])
|
||||||
->groupBy('vehicle')
|
->groupBy('vehicle')
|
||||||
->selectRaw('*, sum(vehicle_scores.overall_score) as totalscore')
|
->selectRaw('*, sum(vehicle_scores.overall_score) as totalscore')
|
||||||
->orderBy('totalscore', 'desc')
|
->orderBy('totalscore', 'desc')
|
||||||
->get();
|
->get();
|
||||||
return view('carshowscores', ['carshowscore_results' => $carshowscore_results]);
|
return view('carshowscores', ['scores_results' => $carshowscore_results]);
|
||||||
}
|
}
|
||||||
public function showscoresbycar()
|
public function showscoresbycar()
|
||||||
{
|
{
|
||||||
$carshowscore2_results = VehicleScores::with(['scoredVehicle'])
|
$carshowscore2_results = VehicleScores::with(['scoredVehicle', 'scoredVehicle.vehicleOwner'])
|
||||||
->groupBy('vehicle')
|
->groupBy('vehicle')
|
||||||
->selectRaw('*, sum(vehicle_scores.overall_score) as totalscore')
|
->selectRaw('*, sum(vehicle_scores.overall_score) as totalscore')
|
||||||
//->orderBy('scoredVehicle.vehicleOwner.bidder_assigned_number')
|
//->orderBy('scoredVehicle.vehicleOwner.bidder_assigned_number')
|
||||||
@@ -503,7 +562,7 @@ class PagesController extends Controller
|
|||||||
LIMIT 1
|
LIMIT 1
|
||||||
) AS UNSIGNED) ASC')
|
) AS UNSIGNED) ASC')
|
||||||
->get();
|
->get();
|
||||||
return view('carshowscores', ['carshowscore_results' => $carshowscore2_results]);
|
return view('carshowscores', ['scores_results' => $carshowscore2_results]);
|
||||||
}
|
}
|
||||||
public function showcarlist()
|
public function showcarlist()
|
||||||
{
|
{
|
||||||
@@ -535,10 +594,14 @@ class PagesController extends Controller
|
|||||||
|
|
||||||
$total_cost = $winnings->sum('winning_cost');
|
$total_cost = $winnings->sum('winning_cost');
|
||||||
|
|
||||||
|
$is_checked_out = \App\Models\Checkout::where('bidder_num', $bidder->idbidders)->exists();
|
||||||
|
|
||||||
return view('mywinnings_results', [
|
return view('mywinnings_results', [
|
||||||
'bidder' => $bidder,
|
'bidder' => $bidder,
|
||||||
'winnings' => $winnings,
|
'winnings' => $winnings,
|
||||||
'total_cost' => $total_cost
|
'total_cost' => $total_cost,
|
||||||
|
'is_checked_out' => $is_checked_out
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,11 +24,11 @@ class CarShowWinner extends Model
|
|||||||
|
|
||||||
public function awardVehicle()
|
public function awardVehicle()
|
||||||
{
|
{
|
||||||
return $this->hasMany('App\Models\Vehicles', 'id', 'vehicle');
|
return $this->belongsTo('App\Models\Vehicles', 'vehicle', 'id');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function awardCategory()
|
public function awardCategory()
|
||||||
{
|
{
|
||||||
return $this->hasMany('App\Models\CarShowCategory', 'id', 'category');
|
return $this->belongsTo('App\Models\CarShowCategory', 'category', 'id');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,6 @@ class VehicleScores extends Model
|
|||||||
|
|
||||||
public function scoredVehicle()
|
public function scoredVehicle()
|
||||||
{
|
{
|
||||||
return $this->hasMany('App\Models\Vehicles', 'id', 'vehicle');
|
return $this->belongsTo('App\Models\Vehicles', 'vehicle', 'id');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ use Illuminate\Support\Facades\Blade;
|
|||||||
|
|
||||||
use Filament\Navigation\MenuItem;
|
use Filament\Navigation\MenuItem;
|
||||||
|
|
||||||
|
use Filament\Facades\Filament;
|
||||||
|
|
||||||
class AdminPanelProvider extends PanelProvider
|
class AdminPanelProvider extends PanelProvider
|
||||||
{
|
{
|
||||||
public function boot()
|
public function boot()
|
||||||
@@ -42,6 +44,13 @@ class AdminPanelProvider extends PanelProvider
|
|||||||
</div>
|
</div>
|
||||||
'),
|
'),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Filament::registerUserMenuItems([
|
||||||
|
MenuItem::make()
|
||||||
|
->label('Link OIDC Account')
|
||||||
|
->icon('heroicon-o-link')
|
||||||
|
->url(fn (): string => url('auth/social/oidc')),
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function panel(Panel $panel): Panel
|
public function panel(Panel $panel): Panel
|
||||||
@@ -51,14 +60,15 @@ class AdminPanelProvider extends PanelProvider
|
|||||||
->id('admin')
|
->id('admin')
|
||||||
->path('admin')
|
->path('admin')
|
||||||
->login()
|
->login()
|
||||||
->brandName(env('APP_NAME'))
|
->profile()
|
||||||
->homeUrl('/')
|
|
||||||
->userMenuItems([
|
->userMenuItems([
|
||||||
MenuItem::make()
|
'oidc' => MenuItem::make()
|
||||||
->label('Link OIDC Account')
|
->label('Link OIDC Account')
|
||||||
->icon('heroicon-o-link')
|
->icon('heroicon-o-link')
|
||||||
->url(fn (): string => url('auth/social/oidc')),
|
->url(fn (): string => url('auth/social/oidc')),
|
||||||
])
|
])
|
||||||
|
->brandName(env('APP_NAME'))
|
||||||
|
->homeUrl('/')
|
||||||
->colors([
|
->colors([
|
||||||
'primary' => Color::Amber,
|
'primary' => Color::Amber,
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -5,16 +5,19 @@
|
|||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"type": "project",
|
"type": "project",
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^8.2",
|
"php": "^8.3",
|
||||||
"barryvdh/laravel-snappy": "^1.0",
|
"barryvdh/laravel-snappy": "^1.0",
|
||||||
"carlos-meneses/laravel-mpdf": "^2.1",
|
"carlos-meneses/laravel-mpdf": "^2.1",
|
||||||
|
"dompdf/dompdf": "^3.1",
|
||||||
"filament/filament": "^5.0",
|
"filament/filament": "^5.0",
|
||||||
"kovah/laravel-socialite-oidc": "^0.7.0",
|
"kovah/laravel-socialite-oidc": "^0.7.0",
|
||||||
"laravel/framework": "^11.0",
|
"laravel/framework": "^12.0",
|
||||||
"laravel/socialite": "^5.26",
|
"laravel/socialite": "^5.26",
|
||||||
"laravel/tinker": "^2.9",
|
"laravel/tinker": "^2.9",
|
||||||
"laravel/ui": "^4.2",
|
"laravel/ui": "^4.2",
|
||||||
"socialiteproviders/manager": "^4.9"
|
"socialiteproviders/manager": "^4.9",
|
||||||
|
"spatie/laravel-pdf": "^2.8",
|
||||||
|
"takielias/tablar": "^13.02"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"barryvdh/laravel-debugbar": "^3.8",
|
"barryvdh/laravel-debugbar": "^3.8",
|
||||||
@@ -69,5 +72,7 @@
|
|||||||
"preferred-install": "dist",
|
"preferred-install": "dist",
|
||||||
"sort-packages": true,
|
"sort-packages": true,
|
||||||
"optimize-autoloader": true
|
"optimize-autoloader": true
|
||||||
}
|
},
|
||||||
|
"minimum-stability": "dev",
|
||||||
|
"prefer-stable": true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,4 +42,10 @@ return [
|
|||||||
'redirect' => env('OIDC_REDIRECT_URI'),
|
'redirect' => env('OIDC_REDIRECT_URI'),
|
||||||
],
|
],
|
||||||
|
|
||||||
|
'north' => [
|
||||||
|
'checkout_id' => env('NORTH_CHECKOUT_ID'),
|
||||||
|
'profile_id' => env('NORTH_PROFILE_ID'),
|
||||||
|
'private_api_key' => env('NORTH_PRIVATE_API_KEY'),
|
||||||
|
],
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -0,0 +1,145 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
'title' => 'Silent Auction Dashboard',
|
||||||
|
'logo' => '/assets/tablar-logo.png',
|
||||||
|
'menu' => [
|
||||||
|
[
|
||||||
|
'text' => 'Home',
|
||||||
|
'route' => 'home',
|
||||||
|
'icon' => 'ti ti-home',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Bidders',
|
||||||
|
'icon' => 'ti ti-users',
|
||||||
|
'submenu' => [
|
||||||
|
[
|
||||||
|
'text' => 'Add Bidder',
|
||||||
|
'route' => 'bidders',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'List Bidders',
|
||||||
|
'route' => 'bidderlist',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Items',
|
||||||
|
'icon' => 'ti ti-box',
|
||||||
|
'submenu' => [
|
||||||
|
[
|
||||||
|
'text' => 'Add Item',
|
||||||
|
'route' => 'items',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'List Items',
|
||||||
|
'route' => 'itemlist',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Winners',
|
||||||
|
'icon' => 'ti ti-trophy',
|
||||||
|
'submenu' => [
|
||||||
|
[
|
||||||
|
'text' => 'Add Winner',
|
||||||
|
'route' => 'winners',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Edit Winner',
|
||||||
|
'route' => 'editwinners',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'List Winners',
|
||||||
|
'route' => 'winnerlist',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Winners by Item',
|
||||||
|
'route' => 'winnersbyitem',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Check My Winnings',
|
||||||
|
'route' => 'mywinnings',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'CarShow',
|
||||||
|
'icon' => 'ti ti-car',
|
||||||
|
'submenu' => [
|
||||||
|
[
|
||||||
|
'text' => 'Add Car',
|
||||||
|
'route' => 'showcars',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'List Show Cars',
|
||||||
|
'route' => 'showcarlist',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Judging Entry',
|
||||||
|
'route' => 'judgingentry',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'People\'s Choice Entry',
|
||||||
|
'route' => 'pcentry',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Add Judge',
|
||||||
|
'route' => 'judges',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Car Show Winners',
|
||||||
|
'route' => 'showwinners',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Vehicle Total Scores',
|
||||||
|
'route' => 'showscores',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Scores by Car',
|
||||||
|
'route' => 'showscoresbycar',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Tabulate Winners',
|
||||||
|
'route' => 'tabulateshowwinners',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Reports',
|
||||||
|
'icon' => 'ti ti-file-text',
|
||||||
|
'submenu' => [
|
||||||
|
[
|
||||||
|
'text' => 'Bidder List',
|
||||||
|
'route' => 'bidderlist',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Completed Checkouts',
|
||||||
|
'route' => 'checkout_complete_list',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Items',
|
||||||
|
'route' => 'itemlist',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Winners',
|
||||||
|
'route' => 'winnerlist',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Checkout',
|
||||||
|
'icon' => 'ti ti-credit-card',
|
||||||
|
'submenu' => [
|
||||||
|
[
|
||||||
|
'text' => 'Checkout Bidder',
|
||||||
|
'route' => 'checkout',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'text' => 'Re-Print Receipt',
|
||||||
|
'route' => 'reprint_receipt',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
@@ -23,14 +23,131 @@ $factory->define(App\User::class, function (Faker\Generator $faker) {
|
|||||||
];
|
];
|
||||||
});
|
});
|
||||||
|
|
||||||
//Bidder
|
// Bidders
|
||||||
$factory->define(App\Models\Bidder::class, function (Faker\Generator $faker) {
|
$factory->define(App\Models\Bidders::class, function (Faker\Generator $faker) {
|
||||||
static $password;
|
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'name' => $faker->name,
|
'bidder_fname' => $faker->firstName,
|
||||||
'email' => $faker->unique()->safeEmail,
|
'bidder_lname' => $faker->lastName,
|
||||||
'password' => $password ?: $password = bcrypt('secret'),
|
'bidder_addr' => $faker->streetAddress,
|
||||||
'remember_token' => str_random(10),
|
'bidder_city' => $faker->city,
|
||||||
|
'bidder_state' => $faker->stateAbbr,
|
||||||
|
'bidder_zip' => $faker->postcode,
|
||||||
|
'bidder_phone' => $faker->phoneNumber,
|
||||||
|
'bidder_email' => $faker->unique()->safeEmail,
|
||||||
|
'bidder_assigned_number' => $faker->unique()->numberBetween(1, 1000),
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
// Items
|
||||||
|
$factory->define(App\Models\Items::class, function (Faker\Generator $faker) {
|
||||||
|
return [
|
||||||
|
'item_desc' => $faker->sentence(3),
|
||||||
|
'item_min_bid' => $faker->numberBetween(10, 100),
|
||||||
|
'item_est_value' => $faker->numberBetween(50, 500),
|
||||||
|
'item_assigned_num' => $faker->unique()->numberBetween(1, 500),
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
// CarShowCategory
|
||||||
|
$factory->define(App\Models\CarShowCategory::class, function (Faker\Generator $faker) {
|
||||||
|
return [
|
||||||
|
'category_name' => $faker->words(2, true),
|
||||||
|
'vehicle_type' => $faker->boolean,
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
// Vehicles
|
||||||
|
$factory->define(App\Models\Vehicles::class, function (Faker\Generator $faker) {
|
||||||
|
return [
|
||||||
|
'year' => $faker->year,
|
||||||
|
'make' => $faker->company,
|
||||||
|
'model' => $faker->word,
|
||||||
|
'type' => function () {
|
||||||
|
return factory(App\Models\CarShowCategory::class)->create()->id;
|
||||||
|
},
|
||||||
|
'doNotJudge' => $faker->boolean,
|
||||||
|
'owner' => function () {
|
||||||
|
return factory(App\Models\Bidders::class)->create()->bidder_assigned_number;
|
||||||
|
},
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
// PaymentMethods
|
||||||
|
$factory->define(App\Models\PaymentMethods::class, function (Faker\Generator $faker) {
|
||||||
|
return [
|
||||||
|
'pm_name' => $faker->randomElement(['Cash', 'Check', 'Credit Card']),
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
// Judges
|
||||||
|
$factory->define(App\Models\Judges::class, function (Faker\Generator $faker) {
|
||||||
|
return [
|
||||||
|
'judge_number' => $faker->unique()->numberBetween(1, 50),
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
// VehicleScores
|
||||||
|
$factory->define(App\Models\VehicleScores::class, function (Faker\Generator $faker) {
|
||||||
|
return [
|
||||||
|
'judge' => function () {
|
||||||
|
return factory(App\Models\Judges::class)->create()->id;
|
||||||
|
},
|
||||||
|
'overall_score' => $faker->numberBetween(1, 100),
|
||||||
|
'vehicle' => function () {
|
||||||
|
return factory(App\Models\Vehicles::class)->create()->id;
|
||||||
|
},
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
// PeoplesChoice
|
||||||
|
$factory->define(App\Models\PeoplesChoice::class, function (Faker\Generator $faker) {
|
||||||
|
return [
|
||||||
|
'vehicle' => function () {
|
||||||
|
return factory(App\Models\Vehicles::class)->create()->id;
|
||||||
|
},
|
||||||
|
'pc_count' => $faker->numberBetween(0, 50),
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
// WinningBids
|
||||||
|
$factory->define(App\Models\WinningBids::class, function (Faker\Generator $faker) {
|
||||||
|
return [
|
||||||
|
'winning_bidder_num' => function () {
|
||||||
|
return factory(App\Models\Bidders::class)->create()->idbidders;
|
||||||
|
},
|
||||||
|
'winning_cost' => $faker->numberBetween(10, 1000),
|
||||||
|
'winning_item_num' => function () {
|
||||||
|
return factory(App\Models\Items::class)->create()->iditems;
|
||||||
|
},
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
// Checkout
|
||||||
|
$factory->define(App\Models\Checkout::class, function (Faker\Generator $faker) {
|
||||||
|
return [
|
||||||
|
'bidder_num' => function () {
|
||||||
|
return factory(App\Models\Bidders::class)->create()->idbidders;
|
||||||
|
},
|
||||||
|
'winnertotal' => $faker->numberBetween(10, 2000),
|
||||||
|
'payment_method' => function () {
|
||||||
|
return factory(App\Models\PaymentMethods::class)->create()->pm_id;
|
||||||
|
},
|
||||||
|
'check_number' => $faker->optional()->numberBetween(100, 999),
|
||||||
|
'cc_transaction' => $faker->optional()->uuid,
|
||||||
|
'cc_amount' => $faker->optional()->numberBetween(10, 2000),
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
// CarShowWinner
|
||||||
|
$factory->define(App\Models\CarShowWinner::class, function (Faker\Generator $faker) {
|
||||||
|
return [
|
||||||
|
'vehicle' => function () {
|
||||||
|
return factory(App\Models\Vehicles::class)->create()->id;
|
||||||
|
},
|
||||||
|
'category' => function () {
|
||||||
|
return factory(App\Models\CarShowCategory::class)->create()->id;
|
||||||
|
},
|
||||||
|
'place' => $faker->numberBetween(1, 3),
|
||||||
|
'total_score' => $faker->numberBetween(50, 300),
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use App\Models\Bidders;
|
||||||
|
|
||||||
|
class BiddersTableSeeder extends Seeder
|
||||||
|
{
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
factory(Bidders::class, 50)->create();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use App\Models\CarShowCategory;
|
||||||
|
|
||||||
|
class CarShowCategoryTableSeeder extends Seeder
|
||||||
|
{
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
factory(CarShowCategory::class, 10)->create();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use App\Models\CarShowWinner;
|
||||||
|
use App\Models\Vehicles;
|
||||||
|
use App\Models\CarShowCategory;
|
||||||
|
|
||||||
|
class CarShowWinnerTableSeeder extends Seeder
|
||||||
|
{
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
$categories = CarShowCategory::all();
|
||||||
|
$vehicles = Vehicles::all();
|
||||||
|
|
||||||
|
foreach ($categories as $category) {
|
||||||
|
for ($i = 1; $i <= 3; $i++) {
|
||||||
|
factory(CarShowWinner::class)->create([
|
||||||
|
'category' => $category->id,
|
||||||
|
'vehicle' => $vehicles->random()->id,
|
||||||
|
'place' => $i,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use App\Models\Checkout;
|
||||||
|
use App\Models\Bidders;
|
||||||
|
use App\Models\PaymentMethods;
|
||||||
|
|
||||||
|
class CheckoutTableSeeder extends Seeder
|
||||||
|
{
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
$bidders = Bidders::all();
|
||||||
|
$paymentMethods = PaymentMethods::all();
|
||||||
|
|
||||||
|
foreach ($bidders as $bidder) {
|
||||||
|
if (rand(0, 1)) {
|
||||||
|
factory(Checkout::class)->create([
|
||||||
|
'bidder_num' => $bidder->idbidders,
|
||||||
|
'payment_method' => $paymentMethods->random()->pm_id,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -11,6 +11,17 @@ class DatabaseSeeder extends Seeder
|
|||||||
*/
|
*/
|
||||||
public function run()
|
public function run()
|
||||||
{
|
{
|
||||||
// $this->call(UsersTableSeeder::class);
|
$this->call(UsersTableSeeder::class);
|
||||||
|
$this->call(PaymentMethodsTableSeeder::class);
|
||||||
|
$this->call(CarShowCategoryTableSeeder::class);
|
||||||
|
$this->call(BiddersTableSeeder::class);
|
||||||
|
$this->call(ItemsTableSeeder::class);
|
||||||
|
$this->call(JudgesTableSeeder::class);
|
||||||
|
$this->call(VehiclesTableSeeder::class);
|
||||||
|
$this->call(VehicleScoresTableSeeder::class);
|
||||||
|
$this->call(PeoplesChoiceTableSeeder::class);
|
||||||
|
$this->call(WinningBidsTableSeeder::class);
|
||||||
|
$this->call(CheckoutTableSeeder::class);
|
||||||
|
$this->call(CarShowWinnerTableSeeder::class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use App\Models\Items;
|
||||||
|
|
||||||
|
class ItemsTableSeeder extends Seeder
|
||||||
|
{
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
factory(Items::class, 30)->create();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use App\Models\Judges;
|
||||||
|
|
||||||
|
class JudgesTableSeeder extends Seeder
|
||||||
|
{
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
factory(Judges::class, 5)->create();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use App\Models\PaymentMethods;
|
||||||
|
|
||||||
|
class PaymentMethodsTableSeeder extends Seeder
|
||||||
|
{
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
PaymentMethods::create(['pm_name' => 'Cash']);
|
||||||
|
PaymentMethods::create(['pm_name' => 'Check']);
|
||||||
|
PaymentMethods::create(['pm_name' => 'Credit Card']);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use App\Models\PeoplesChoice;
|
||||||
|
use App\Models\Vehicles;
|
||||||
|
|
||||||
|
class PeoplesChoiceTableSeeder extends Seeder
|
||||||
|
{
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
$vehicles = Vehicles::all();
|
||||||
|
|
||||||
|
foreach ($vehicles as $vehicle) {
|
||||||
|
factory(PeoplesChoice::class)->create([
|
||||||
|
'vehicle' => $vehicle->id,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use App\User;
|
||||||
|
|
||||||
|
class UsersTableSeeder extends Seeder
|
||||||
|
{
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
factory(User::class, 10)->create();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use App\Models\VehicleScores;
|
||||||
|
use App\Models\Judges;
|
||||||
|
use App\Models\Vehicles;
|
||||||
|
|
||||||
|
class VehicleScoresTableSeeder extends Seeder
|
||||||
|
{
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
$judges = Judges::all();
|
||||||
|
$vehicles = Vehicles::all();
|
||||||
|
|
||||||
|
foreach ($vehicles as $vehicle) {
|
||||||
|
foreach ($judges as $judge) {
|
||||||
|
factory(VehicleScores::class)->create([
|
||||||
|
'judge' => $judge->id,
|
||||||
|
'vehicle' => $vehicle->id,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use App\Models\Vehicles;
|
||||||
|
use App\Models\CarShowCategory;
|
||||||
|
use App\Models\Bidders;
|
||||||
|
|
||||||
|
class VehiclesTableSeeder extends Seeder
|
||||||
|
{
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
$categories = CarShowCategory::all();
|
||||||
|
$bidders = Bidders::all();
|
||||||
|
|
||||||
|
factory(Vehicles::class, 40)->create([
|
||||||
|
'type' => function () use ($categories) {
|
||||||
|
return $categories->random()->id;
|
||||||
|
},
|
||||||
|
'owner' => function () use ($bidders) {
|
||||||
|
return $bidders->random()->bidder_assigned_number;
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use App\Models\WinningBids;
|
||||||
|
use App\Models\Bidders;
|
||||||
|
use App\Models\Items;
|
||||||
|
|
||||||
|
class WinningBidsTableSeeder extends Seeder
|
||||||
|
{
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
$bidders = Bidders::all();
|
||||||
|
$items = Items::all();
|
||||||
|
|
||||||
|
foreach ($items as $item) {
|
||||||
|
if (rand(0, 1)) {
|
||||||
|
factory(WinningBids::class)->create([
|
||||||
|
'winning_bidder_num' => $bidders->random()->idbidders,
|
||||||
|
'winning_item_num' => $item->iditems,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,21 +1,43 @@
|
|||||||
{
|
{
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"type": "module",
|
||||||
"dev": "npm run development",
|
"scripts": {
|
||||||
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
|
"dev": "vite",
|
||||||
"watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
|
"build": "vite build"
|
||||||
"watch-poll": "npm run watch -- --watch-poll",
|
},
|
||||||
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
|
"devDependencies": {
|
||||||
"prod": "npm run production",
|
"@melloware/coloris": "^0.25.0",
|
||||||
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
|
"@popperjs/core": "^2.11.8",
|
||||||
},
|
"@tabler/core": "1.4.0",
|
||||||
"devDependencies": {
|
"@tabler/icons": "^3.35.0",
|
||||||
"axios": "^0.15.3",
|
"@tabler/icons-webfont": "^3.35.0",
|
||||||
"bootstrap-sass": "^3.3.7",
|
"apexcharts": "^3.54.1",
|
||||||
"cross-env": "^3.2.3",
|
"autosize": "^6.0.1",
|
||||||
"jquery": "^3.1.1",
|
"axios": "^1.7.4",
|
||||||
"laravel-mix": "0.*",
|
"bootstrap": "5.3.8",
|
||||||
"lodash": "^4.17.4",
|
"bootstrap-sass": "^3.3.7",
|
||||||
"vue": "^2.1.10"
|
"choices.js": "^11.1.0",
|
||||||
}
|
"countup.js": "^2.9.0",
|
||||||
|
"cross-env": "^7.0.3",
|
||||||
|
"dropzone": "^6.0.0-beta.2",
|
||||||
|
"fslightbox": "^3.7.4",
|
||||||
|
"fullcalendar": "^6.1.19",
|
||||||
|
"imask": "^7.6.1",
|
||||||
|
"jquery": "^3.7.1",
|
||||||
|
"jsvectormap": "^1.7.0",
|
||||||
|
"laravel-vite-plugin": "^1.0",
|
||||||
|
"list.js": "^2.3.1",
|
||||||
|
"litepicker": "^2.0.12",
|
||||||
|
"lodash": "^4.17.21",
|
||||||
|
"nouislider": "^15.8.1",
|
||||||
|
"plyr": "^3.8.3",
|
||||||
|
"sass": "~1.64.2",
|
||||||
|
"sass-loader": "^16.0.1",
|
||||||
|
"signature_pad": "^5.1.1",
|
||||||
|
"star-rating.js": "^4.3.1",
|
||||||
|
"tom-select": "^2.4.3",
|
||||||
|
"typed.js": "^2.1.0",
|
||||||
|
"vite": "^5.0.0",
|
||||||
|
"vite-plugin-static-copy": "~3.0.0"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
/home/sjcsauction/public_html/.well-known
|
auction/home/sjcsauction/public_html/.well-known
|
||||||
|
After Width: | Height: | Size: 353 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 8.3 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 8.3 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 8.3 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
After Width: | Height: | Size: 72 KiB |
|
After Width: | Height: | Size: 6.7 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 4.5 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 78 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 6.1 KiB |