Files
qds/app/Filament/Widgets/ProductionQuantityStat.php
dhanabalan 3f0d529640
All checks were successful
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Successful in 1m4s
Initial commit for new repo
2025-12-16 17:05:04 +05:30

93 lines
2.9 KiB
PHP

<?php
namespace App\Filament\Widgets;
use App\Models\Line;
use App\Models\ProductionQuantity;
use App\Models\QualityValidation;
use Filament\Widgets\StatsOverviewWidget as BaseWidget;
use Filament\Widgets\StatsOverviewWidget\Stat;
class ProductionQuantityStat extends BaseWidget
{
protected $listeners = ['filtersUpdated' => 'updateStats'];
public $selectedPlant;
public $selectedLine;
public $selectedFilter = 'Today';
public function updateStats($data=null)
{
if (!$data) {
return;
}
$this->selectedPlant = $data['plant'] ?? null;
$this->selectedLine = $data['line'] ?? null;
//$this->selectedFilter = $data['filter'] ?? 'today';
$this->selectedFilter = $data['filter'] ?? 'today';
$this->dispatch('$refresh');
}
protected function getStats(): array
{
if (!$this->selectedPlant || !$this->selectedLine) {
return [
Stat::make('Production Count', 0)
->description('Select Plant & Line')
->color('success'),
];
}
$line = Line::find($this->selectedLine);
if (!$line) {
return [
Stat::make('Production Count', 0)
->description('Line not found')
->color('success'),
];
}
$start = now()->setTime(8, 0, 0);
$end = now()->copy()->addDay()->setTime(8, 0, 0);
if ($this->selectedFilter == 'yesterday') {
$start = now()->subDay()->setTime(8, 0, 0);
$end = now()->setTime(8, 0, 0);
} elseif ($this->selectedFilter == 'this_week') {
$start = now()->startOfWeek()->setTime(8, 0, 0);
$end = now()->endOfWeek()->addDay()->setTime(8, 0, 0);
} elseif ($this->selectedFilter == 'this_month') {
$start = now()->startOfMonth()->setTime(8, 0, 0);
$end = now()->endOfMonth()->addDay()->setTime(8, 0, 0);
}
if ($line->type === 'FG Line') {
$count = QualityValidation::where('line_id', $line->id)
->whereBetween('created_at', [$start, $end])
->count();
return [
Stat::make('FG Production Count', $count)
->description("FG production for this line")
->color('success')
->icon('heroicon-s-check-circle'),
];
} else {
$count = ProductionQuantity::where('line_id', $line->id)
->whereBetween('created_at', [$start, $end])
->count();
return [
Stat::make('Total Production Count', $count)
->description("Total production for this line")
->color('primary')
->icon('heroicon-s-cube'),
];
}
}
}