Added rfq chart and rfq rank chart widgets page
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 10s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 11s
Gemini PR Review / Gemini PR Review (pull_request) Successful in 14s
Laravel Larastan / larastan (pull_request) Failing after 2m23s
Laravel Pint / pint (pull_request) Failing after 2m30s
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 10s
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 11s
Gemini PR Review / Gemini PR Review (pull_request) Successful in 14s
Laravel Larastan / larastan (pull_request) Failing after 2m23s
Laravel Pint / pint (pull_request) Failing after 2m30s
This commit is contained in:
136
app/Filament/Widgets/RfqChart.php
Normal file
136
app/Filament/Widgets/RfqChart.php
Normal file
@@ -0,0 +1,136 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Widgets;
|
||||
|
||||
use App\Models\RequestQuotation;
|
||||
use App\Models\RfqTransporterBid;
|
||||
use Filament\Facades\Filament;
|
||||
use Filament\Widgets\StatsOverviewWidget as BaseWidget;
|
||||
use Filament\Widgets\StatsOverviewWidget\Stat;
|
||||
|
||||
class RfqChart extends BaseWidget
|
||||
{
|
||||
// protected function getStats(): array
|
||||
// {
|
||||
// $transporter = session('transport_name');
|
||||
// $rfqNumber = session('rfq_number');
|
||||
|
||||
// if (!$transporter || !$rfqNumber) {
|
||||
// return [
|
||||
// Stat::make('Total Freight Charge', '-'),
|
||||
// Stat::make('Rank', '-'),
|
||||
// ];
|
||||
// }
|
||||
|
||||
// $selectedRfq = RequestQuotation::query()
|
||||
// ->where('transporter_name', $transporter)
|
||||
// ->where('rfq_number', $rfqNumber)
|
||||
// ->first();
|
||||
|
||||
// if (!$selectedRfq) {
|
||||
// return [
|
||||
// Stat::make('Total Freight Charge', '-'),
|
||||
// Stat::make('Rank', '-'),
|
||||
// ];
|
||||
// }
|
||||
|
||||
// $myAmount = (float) $selectedRfq->total_freight_charge;
|
||||
|
||||
// $rank = RequestQuotation::query()
|
||||
// ->whereRaw(
|
||||
// 'CAST(total_freight_charge AS DECIMAL(10,2)) < ?',
|
||||
// [$myAmount]
|
||||
// )
|
||||
// ->selectRaw('CAST(total_freight_charge AS DECIMAL(10,2))')
|
||||
// ->distinct()
|
||||
// ->count() + 1;
|
||||
|
||||
// $medal = match (true) {
|
||||
// $rank == 1 => '🥇',
|
||||
// $rank == 2 => '🥈',
|
||||
// $rank == 3 => '🥉',
|
||||
// default => '',
|
||||
// };
|
||||
|
||||
// return [
|
||||
// Stat::make(
|
||||
// 'Total Freight Charge',
|
||||
// number_format($selectedRfq->total_freight_charge, 2)
|
||||
// )
|
||||
// ->description('Transporter: ' . $selectedRfq->transporter_name)
|
||||
// ->color($rank == 1 ? 'success' : 'primary'),
|
||||
|
||||
// Stat::make(
|
||||
// 'Rank',
|
||||
// trim("{$medal} #{$rank}")
|
||||
// )
|
||||
// ->description('Among all transporters')
|
||||
// ->color(
|
||||
// $rank == 1 ? 'success' :
|
||||
// ($rank <= 3 ? 'warning' : 'gray')
|
||||
// ),
|
||||
// ];
|
||||
// }
|
||||
|
||||
protected function getStats(): array
|
||||
{
|
||||
$transporter = session('transport_name');
|
||||
$rfqNumber = session('rfq_id');
|
||||
|
||||
if (!$transporter || !$rfqNumber) {
|
||||
return [
|
||||
Stat::make('Total Freight Charge', '-'),
|
||||
Stat::make('Rank', '-'),
|
||||
];
|
||||
}
|
||||
|
||||
$selectedRfq = RfqTransporterBid::query()
|
||||
->where('transporter_name', $transporter)
|
||||
->where('request_quotation_id', $rfqNumber)
|
||||
->first();
|
||||
|
||||
if (!$selectedRfq) {
|
||||
return [
|
||||
Stat::make('Total Freight Charge', '-'),
|
||||
Stat::make('Rank', '-'),
|
||||
];
|
||||
}
|
||||
|
||||
$myAmount = (float) $selectedRfq->total_freight_charge;
|
||||
|
||||
$rank = RfqTransporterBid::query()
|
||||
->whereRaw(
|
||||
'CAST(total_freight_charge AS DECIMAL(10,2)) < ?',
|
||||
[$myAmount]
|
||||
)
|
||||
->selectRaw('CAST(total_freight_charge AS DECIMAL(10,2))')
|
||||
->distinct()
|
||||
->count() + 1;
|
||||
|
||||
$medal = match (true) {
|
||||
$rank == 1 => '🥇',
|
||||
$rank == 2 => '🥈',
|
||||
$rank == 3 => '🥉',
|
||||
default => '',
|
||||
};
|
||||
|
||||
return [
|
||||
Stat::make(
|
||||
'Total Freight Charge',
|
||||
number_format($selectedRfq->total_freight_charge, 2)
|
||||
)
|
||||
->description('Transporter: ' . $selectedRfq->transporter_name)
|
||||
->color($rank == 1 ? 'success' : 'primary'),
|
||||
|
||||
Stat::make(
|
||||
'Rank',
|
||||
trim("{$medal} #{$rank}")
|
||||
)
|
||||
->description('Among all transporters')
|
||||
->color(
|
||||
$rank == 1 ? 'success' :
|
||||
($rank <= 3 ? 'warning' : 'gray')
|
||||
),
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user