New Initial Commit

This commit is contained in:
twotalesanimation
2025-12-09 12:04:54 +02:00
commit 6de01c13c5
350 changed files with 42032 additions and 0 deletions
+75
View File
@@ -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'),
];
}
}