OwlCyberSecurity - MANAGER
Edit File: DashboardInvoiceMonthChart.php
<?php namespace App\Filament\Widgets; use App\Models\Invoice; use Filament\Widgets\LineChartWidget; use Flowframe\Trend\Trend; use Flowframe\Trend\TrendValue; class DashboardInvoiceMonthChart extends LineChartWidget { protected static ?string $heading = 'تعداد سفارشات ثبت شده به تفکیک ماه'; protected function getData(): array { $data = Trend::model(Invoice::class) ->between( start: now()->subDays(300), end: now(), ) ->perMonth() ->count(); $dataCancel = Trend::query( Invoice::query()->where('status', '=', 'کنسل') ) ->between( start: now()->subDays(300), end: now(), ) ->perMonth() ->count(); $dataPreFactor = Trend::query( Invoice::query()->where('status', '=', 'پیش فاکتور ارسال شد در انتظار پرداخت') ) ->between( start: now()->subDays(300), end: now(), ) ->perMonth() ->count(); $dataAccept = Trend::query( Invoice::query()->where('status', '!=', 'کنسل')->where('status', '!=', 'پیش فاکتور ارسال شد در انتظار پرداخت') ) ->between( start: now()->subDays(300), end: now(), ) ->perMonth() ->count(); return [ 'datasets' => [ [ 'label' => 'تعداد کل', 'borderColor' => "blue", 'data' => $data->map(fn(TrendValue $value) => $value->aggregate), ], [ 'label' => 'تعداد کنسلی', 'borderColor' => "red", 'data' => $dataCancel->map(fn(TrendValue $value) => $value->aggregate), ], [ 'label' => 'تعداد پیش فاکتور های پرداخت نشده', 'borderColor' => "#ea580c", 'data' => $dataPreFactor->map(fn(TrendValue $value) => $value->aggregate), ], [ 'label' => 'تعداد خریداری شده', 'borderColor' => "green", 'data' => $dataAccept->map(fn(TrendValue $value) => $value->aggregate), ], ], 'labels' => $data->map(fn(TrendValue $value) => $value->date), ]; } }