You've already forked Atomcms-edit
Modernize dependencies: replace abandoned packages, update versions
- Replace flowframe/laravel-trend with direct Eloquent DB queries
- Replace srmklive/paypal (abandoned) with new PayPalService using PayPal REST API v2 via Guzzle
- Remove old config/paypal.php, migrate to config('habbo.paypal.*')
- Update blade templates to use habbo.paypal config
- Bump npm packages to latest: @inertiajs/react, axios, esbuild, eslint, sass, tailwindcss, etc.
- Run composer update and yarn upgrade
This commit is contained in:
@@ -4,9 +4,8 @@ namespace App\Filament\Resources\DashboardResource\Widgets;
|
||||
|
||||
use App\Models\User\UserOrder;
|
||||
use Filament\Widgets\ChartWidget;
|
||||
use Flowframe\Trend\Trend;
|
||||
use Flowframe\Trend\TrendValue;
|
||||
use Illuminate\Contracts\Support\Htmlable;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class OrdersAggregateChart extends ChartWidget
|
||||
{
|
||||
@@ -28,47 +27,45 @@ class OrdersAggregateChart extends ChartWidget
|
||||
return __('filament::resources.stats.orders_chart.description');
|
||||
}
|
||||
|
||||
private function getTrendData($query): array
|
||||
{
|
||||
return $query->whereBetween('created_at', [now()->startOfMonth(), now()->endOfMonth()])
|
||||
->selectRaw('DATE(created_at) as date, COUNT(*) as aggregate')
|
||||
->groupBy(DB::raw('DATE(created_at)'))
|
||||
->orderBy('date')
|
||||
->pluck('aggregate', 'date')
|
||||
->toArray();
|
||||
}
|
||||
|
||||
#[\Override]
|
||||
protected function getData(): array
|
||||
{
|
||||
$pendingOrder = Trend::query(UserOrder::pending())
|
||||
->between(start: now()->startOfMonth(), end: now()->endOfMonth())
|
||||
->perDay()
|
||||
->count();
|
||||
$pendingData = $this->getTrendData(UserOrder::pending());
|
||||
$cancelledData = $this->getTrendData(UserOrder::cancelled());
|
||||
$completedData = $this->getTrendData(UserOrder::completed());
|
||||
|
||||
$cancelledOrder = Trend::query(UserOrder::cancelled())
|
||||
->between(start: now()->startOfMonth(), end: now()->endOfMonth())
|
||||
->perDay()
|
||||
->count();
|
||||
|
||||
$completedOrder = Trend::query(UserOrder::completed())
|
||||
->between(start: now()->startOfMonth(), end: now()->endOfMonth())
|
||||
->perDay()
|
||||
->count();
|
||||
$allDates = collect(array_keys(array_merge($pendingData, $cancelledData, $completedData)))
|
||||
->unique()
|
||||
->sort()
|
||||
->values();
|
||||
|
||||
$datasets = [
|
||||
$this->getDataset($pendingOrder, __('filament::resources.stats.orders_chart.pending'), '#fbbf24', '#f59e0b'),
|
||||
$this->getDataset($cancelledOrder, __('filament::resources.stats.orders_chart.cancelled'), '#dc2626', '#b91c1c'),
|
||||
$this->getDataset($completedOrder, __('filament::resources.stats.orders_chart.completed'), '#10b981', '#059669'),
|
||||
$this->getDataset($pendingData, $allDates, __('filament::resources.stats.orders_chart.pending'), '#fbbf24', '#f59e0b'),
|
||||
$this->getDataset($cancelledData, $allDates, __('filament::resources.stats.orders_chart.cancelled'), '#dc2626', '#b91c1c'),
|
||||
$this->getDataset($completedData, $allDates, __('filament::resources.stats.orders_chart.completed'), '#10b981', '#059669'),
|
||||
];
|
||||
|
||||
$data = $pendingOrder->map(fn (TrendValue $value) => $value->date)->merge(
|
||||
$cancelledOrder->map(fn (TrendValue $value) => $value->date),
|
||||
)->merge(
|
||||
$completedOrder->map(fn (TrendValue $value) => $value->date),
|
||||
)->unique()->sort()->flatten();
|
||||
|
||||
return [
|
||||
'datasets' => $datasets,
|
||||
'labels' => $data,
|
||||
'labels' => $allDates,
|
||||
];
|
||||
}
|
||||
|
||||
protected function getDataset($data, $label, string $backgroundColor, string $borderColor): array
|
||||
private function getDataset(array $data, $allDates, string $label, string $backgroundColor, string $borderColor): array
|
||||
{
|
||||
return [
|
||||
'label' => $label,
|
||||
'data' => $data->map(fn (TrendValue $value) => $value->aggregate),
|
||||
'data' => $allDates->map(fn ($date) => $data[$date] ?? 0),
|
||||
'backgroundColor' => $backgroundColor,
|
||||
'borderColor' => $borderColor,
|
||||
];
|
||||
|
||||
@@ -4,9 +4,8 @@ namespace App\Filament\Widgets;
|
||||
|
||||
use App\Models\Articles\WebsiteArticle;
|
||||
use Filament\Widgets\ChartWidget;
|
||||
use Flowframe\Trend\Trend;
|
||||
use Flowframe\Trend\TrendValue;
|
||||
use Illuminate\Contracts\Support\Htmlable;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class ArticlesAggregateChart extends ChartWidget
|
||||
{
|
||||
@@ -34,13 +33,12 @@ class ArticlesAggregateChart extends ChartWidget
|
||||
#[\Override]
|
||||
protected function getData(): array
|
||||
{
|
||||
$data = Trend::model(WebsiteArticle::class)
|
||||
->between(
|
||||
start: now()->startOfMonth(),
|
||||
end: now()->endOfMonth(),
|
||||
)
|
||||
->perDay()
|
||||
->count();
|
||||
$data = WebsiteArticle::query()
|
||||
->whereBetween('created_at', [now()->startOfMonth(), now()->endOfMonth()])
|
||||
->selectRaw('DATE(created_at) as date, COUNT(*) as aggregate')
|
||||
->groupBy(DB::raw('DATE(created_at)'))
|
||||
->orderBy('date')
|
||||
->get();
|
||||
|
||||
$label = __('filament::resources.stats.articles_chart.label');
|
||||
|
||||
@@ -48,10 +46,10 @@ class ArticlesAggregateChart extends ChartWidget
|
||||
'datasets' => [
|
||||
[
|
||||
'label' => $label,
|
||||
'data' => $data->map(fn (TrendValue $value) => $value->aggregate),
|
||||
'data' => $data->pluck('aggregate'),
|
||||
],
|
||||
],
|
||||
'labels' => $data->map(fn (TrendValue $value) => $value->date),
|
||||
'labels' => $data->pluck('date'),
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user