New Initial Commit
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Widgets;
|
||||
|
||||
use App\Models\Order;
|
||||
use App\Models\Product;
|
||||
use Filament\Widgets\StatsOverviewWidget;
|
||||
use Filament\Widgets\StatsOverviewWidget\Stat;
|
||||
|
||||
class StatsOverview extends StatsOverviewWidget
|
||||
{
|
||||
protected static ?int $sort = 1;
|
||||
|
||||
protected function getStats(): array
|
||||
{
|
||||
$totalOrders = Order::count();
|
||||
$pendingOrders = Order::where('status', 'pending')->count();
|
||||
$processingOrders = Order::where('status', 'processing')->count();
|
||||
$lowStockProducts = Product::where('stock', '<', 10)->count();
|
||||
|
||||
$totalRevenue = Order::where('payment_status', 'paid')->sum('total');
|
||||
$monthlyRevenue = Order::where('payment_status', 'paid')
|
||||
->whereMonth('created_at', now()->month)
|
||||
->whereYear('created_at', now()->year)
|
||||
->sum('total');
|
||||
|
||||
$todayOrders = Order::whereDate('created_at', today())->count();
|
||||
$todayRevenue = Order::where('payment_status', 'paid')
|
||||
->whereDate('created_at', today())
|
||||
->sum('total');
|
||||
|
||||
return [
|
||||
Stat::make('Pending Orders', $pendingOrders)
|
||||
->description('Awaiting processing')
|
||||
->descriptionIcon('heroicon-m-clock')
|
||||
->color('warning')
|
||||
->chart([7, 5, 10, 5, $pendingOrders]),
|
||||
|
||||
Stat::make('Processing Orders', $processingOrders)
|
||||
->description('Currently being processed')
|
||||
->descriptionIcon('heroicon-m-arrow-path')
|
||||
->color('info'),
|
||||
|
||||
Stat::make('Low Stock Alert', $lowStockProducts)
|
||||
->description('Products with less than 10 units')
|
||||
->descriptionIcon('heroicon-m-exclamation-triangle')
|
||||
->color($lowStockProducts > 0 ? 'danger' : 'success'),
|
||||
|
||||
Stat::make('Today\'s Orders', $todayOrders)
|
||||
->description('Orders placed today')
|
||||
->descriptionIcon('heroicon-m-shopping-bag')
|
||||
->color('success'),
|
||||
|
||||
Stat::make('Today\'s Revenue', 'R' . number_format($todayRevenue, 2))
|
||||
->description(now()->format('l, F j'))
|
||||
->descriptionIcon('heroicon-m-banknotes')
|
||||
->color('success'),
|
||||
|
||||
Stat::make('Monthly Revenue', 'R' . number_format($monthlyRevenue, 2))
|
||||
->description(now()->format('F Y'))
|
||||
->descriptionIcon('heroicon-m-chart-bar')
|
||||
->color('info'),
|
||||
|
||||
Stat::make('Total Revenue', 'R' . number_format($totalRevenue, 2))
|
||||
->description('All time revenue')
|
||||
->descriptionIcon('heroicon-m-currency-dollar')
|
||||
->color('success'),
|
||||
|
||||
Stat::make('Total Orders', $totalOrders)
|
||||
->description('All time orders')
|
||||
->descriptionIcon('heroicon-m-shopping-cart')
|
||||
->color('primary'),
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user