Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cee16de419 |
@@ -39,7 +39,3 @@ OIDC_CLIENT_ID=
|
||||
OIDC_CLIENT_SECRET=
|
||||
OIDC_REDIRECT_URI="${APP_URL}/auth/social/oidc/callback"
|
||||
|
||||
NORTH_CHECKOUT_ID=
|
||||
NORTH_PROFILE_ID=
|
||||
NORTH_PRIVATE_API_KEY=
|
||||
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
name: Deploy to Remote Server
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Deploy and optimize
|
||||
uses: appleboy/ssh-action@master
|
||||
with:
|
||||
host: ${{ secrets.SSH_HOST }}
|
||||
username: ${{ secrets.SSH_USER }}
|
||||
key: ${{ secrets.SSH_KEY }}
|
||||
port: ${{ secrets.SSH_PORT || 22 }}
|
||||
script: |
|
||||
cd ${{ secrets.DEPLOY_PATH }}
|
||||
git pull origin master
|
||||
composer install --no-interaction --prefer-dist --optimize-autoloader
|
||||
npm install
|
||||
npm run prod
|
||||
php artisan migrate --force
|
||||
php artisan optimize:clear
|
||||
@@ -7,7 +7,7 @@ use Illuminate\Routing\Controller as BaseController;
|
||||
use Illuminate\Foundation\Validation\ValidatesRequests;
|
||||
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
||||
|
||||
class Controller extends \Illuminate\Routing\Controller
|
||||
class Controller extends BaseController
|
||||
{
|
||||
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
|
||||
}
|
||||
|
||||
@@ -1,212 +0,0 @@
|
||||
<?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 View;
|
||||
use App\helpers;
|
||||
use Spatie\LaravelPdf\Facades\Pdf;
|
||||
use PDF;
|
||||
use App\Models\Bidders;
|
||||
use App\Models\Items;
|
||||
use App\Models\Checkout;
|
||||
@@ -19,7 +19,7 @@ use App\Models\CarShowCategory;
|
||||
use App\Models\Types;
|
||||
use App\Models\Vehicles;
|
||||
use App\Models\VehicleScores;
|
||||
use Dompdf\Dompdf;
|
||||
|
||||
class PagesController extends Controller
|
||||
{
|
||||
public function home()
|
||||
@@ -81,8 +81,7 @@ class PagesController extends Controller
|
||||
public function checkout(Request $checkout_req)
|
||||
{
|
||||
if (!$checkout_req->checkoutbiddernum) {
|
||||
$bidders = \App\Models\Bidders::orderByRaw('CAST(bidder_assigned_number AS UNSIGNED) ASC')->get();
|
||||
return view('checkout_select_form', ['bidders' => $bidders]);
|
||||
return view('checkout_select_form');
|
||||
} elseif (!$checkout_req->checkout_payment_method) {
|
||||
$checkout_bidder = $checkout_req->checkoutbiddernum;
|
||||
$checkout_list_results = DB::select("SELECT
|
||||
@@ -251,49 +250,6 @@ class PagesController extends Controller
|
||||
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)
|
||||
{
|
||||
if (!$reprint_receipt_req->reprintbiddernum) {
|
||||
@@ -335,7 +291,15 @@ class PagesController extends Controller
|
||||
|
||||
public function winnersbyitem()
|
||||
{
|
||||
$winnersbyitem_results = WinningBids::with(['items', 'bidders'])->get();
|
||||
$winnersbyitem_results = DB::select("SELECT
|
||||
*
|
||||
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]);
|
||||
}
|
||||
|
||||
@@ -370,41 +334,37 @@ class PagesController extends Controller
|
||||
|
||||
public function winningbidderlist()
|
||||
{
|
||||
$winnerlist_results = Bidders::whereHas('winningBids')
|
||||
->orderBy('bidder_assigned_number')
|
||||
$winnerlist_results = WinningBids::join('bidders', 'winning_bids.winning_bidder_num', '=', 'bidders.idbidders')
|
||||
->groupBy('winning_bidder_num')
|
||||
->orderBy('bidders.bidder_assigned_number')
|
||||
->get();
|
||||
return view('winningbidderlist', ['winning_bidders' => $winnerlist_results]);
|
||||
return view('winningbidderlist', ['winnerlist_results' => $winnerlist_results]);
|
||||
}
|
||||
|
||||
public function judgingentry(Request $judgingentry_req)
|
||||
{
|
||||
$judges = \App\Models\Judges::all();
|
||||
$vehicles = \App\Models\Vehicles::select('vehicles.*')
|
||||
->leftJoin('bidders', 'vehicles.owner', '=', 'bidders.bidder_assigned_number')
|
||||
->orderByRaw('CAST(bidders.bidder_assigned_number AS UNSIGNED) ASC')
|
||||
->get();
|
||||
|
||||
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');
|
||||
if (!$judgingentry_req->vehnum) {
|
||||
return view('judgingentry');
|
||||
}
|
||||
$vehicle = $judgingentry_req->vehnum;
|
||||
$judge = $judgingentry_req->judgenum;
|
||||
$score = $judgingentry_req->vehscore;
|
||||
$bidder_insert = VehicleScores::updateOrCreate(
|
||||
[
|
||||
'vehicle' => $vehicle,
|
||||
'judge' => $judge
|
||||
],
|
||||
[
|
||||
'overall_score' => $score
|
||||
]
|
||||
);
|
||||
|
||||
return view('judgingentry', ['judges' => $judges, 'vehicles' => $vehicles]);
|
||||
return redirect('judgingentry');
|
||||
}
|
||||
|
||||
public function showcars(Request $showcar_req)
|
||||
{
|
||||
if (!$showcar_req->bidderlname) {
|
||||
$vehicles = \App\Models\Vehicles::with('vehicleOwner')->get();
|
||||
return view('showcars', ['vehicles' => $vehicles]);
|
||||
return view('showcars');
|
||||
}
|
||||
$bidder_lname = $showcar_req->bidderlname;
|
||||
$bidder_fname = $showcar_req->bidderfname;
|
||||
@@ -575,13 +535,10 @@ class PagesController extends Controller
|
||||
|
||||
$total_cost = $winnings->sum('winning_cost');
|
||||
|
||||
$is_checked_out = \App\Models\Checkout::where('bidder_num', $bidder->idbidders)->exists();
|
||||
|
||||
return view('mywinnings_results', [
|
||||
'bidder' => $bidder,
|
||||
'winnings' => $winnings,
|
||||
'total_cost' => $total_cost,
|
||||
'is_checked_out' => $is_checked_out
|
||||
'total_cost' => $total_cost
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,19 +5,16 @@
|
||||
"license": "MIT",
|
||||
"type": "project",
|
||||
"require": {
|
||||
"php": "^8.3",
|
||||
"php": "^8.2",
|
||||
"barryvdh/laravel-snappy": "^1.0",
|
||||
"carlos-meneses/laravel-mpdf": "^2.1",
|
||||
"dompdf/dompdf": "^3.1",
|
||||
"filament/filament": "^5.0",
|
||||
"kovah/laravel-socialite-oidc": "^0.7.0",
|
||||
"laravel/framework": "^12.0",
|
||||
"laravel/framework": "^11.0",
|
||||
"laravel/socialite": "^5.26",
|
||||
"laravel/tinker": "^2.9",
|
||||
"laravel/ui": "^4.2",
|
||||
"socialiteproviders/manager": "^4.9",
|
||||
"spatie/laravel-pdf": "^2.8",
|
||||
"takielias/tablar": "^13.02"
|
||||
"socialiteproviders/manager": "^4.9"
|
||||
},
|
||||
"require-dev": {
|
||||
"barryvdh/laravel-debugbar": "^3.8",
|
||||
@@ -72,7 +69,5 @@
|
||||
"preferred-install": "dist",
|
||||
"sort-packages": true,
|
||||
"optimize-autoloader": true
|
||||
},
|
||||
"minimum-stability": "dev",
|
||||
"prefer-stable": true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,10 +42,4 @@ return [
|
||||
'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'),
|
||||
],
|
||||
|
||||
];
|
||||
|
||||
@@ -1,145 +0,0 @@
|
||||
<?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',
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
@@ -1,43 +1,21 @@
|
||||
{
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "vite build"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@melloware/coloris": "^0.25.0",
|
||||
"@popperjs/core": "^2.11.8",
|
||||
"@tabler/core": "1.4.0",
|
||||
"@tabler/icons": "^3.35.0",
|
||||
"@tabler/icons-webfont": "^3.35.0",
|
||||
"apexcharts": "^3.54.1",
|
||||
"autosize": "^6.0.1",
|
||||
"axios": "^1.7.4",
|
||||
"bootstrap": "5.3.8",
|
||||
"bootstrap-sass": "^3.3.7",
|
||||
"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"
|
||||
}
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "npm run development",
|
||||
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
|
||||
"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",
|
||||
"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",
|
||||
"prod": "npm run production",
|
||||
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"axios": "^0.15.3",
|
||||
"bootstrap-sass": "^3.3.7",
|
||||
"cross-env": "^3.2.3",
|
||||
"jquery": "^3.1.1",
|
||||
"laravel-mix": "0.*",
|
||||
"lodash": "^4.17.4",
|
||||
"vue": "^2.1.10"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
auction/home/sjcsauction/public_html/.well-known
|
||||
/home/sjcsauction/public_html/.well-known
|
||||
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 6.7 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 81 KiB |
|
Before Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 31 KiB |