diff --git a/app/Enums/OrderStatusEnum.php b/app/Enums/OrderStatusEnum.php new file mode 100644 index 0000000..5d8451a --- /dev/null +++ b/app/Enums/OrderStatusEnum.php @@ -0,0 +1,26 @@ + 'translation.draft', + 'started' => 'translation.started', + 'finished' => 'translation.finished', + 'moderated' => 'translation.moderated', + 'approved' => 'translation.approved', + 'rejected' => 'translation.rejected', + default => $status, + }; + } +} diff --git a/app/Enums/RoleEnum.php b/app/Enums/RoleEnum.php index e603090..7ddb2ee 100644 --- a/app/Enums/RoleEnum.php +++ b/app/Enums/RoleEnum.php @@ -5,6 +5,7 @@ namespace App\Enums; enum RoleEnum: string { case ADMIN = 'admin'; + case MANAGER = 'manager'; case USER = 'user'; case APPRAISER = 'appraiser'; case DILLER = 'diller'; diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index c410bd9..0178af4 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; class HomeController extends Controller { @@ -13,7 +14,48 @@ class HomeController extends Controller public function index() { - return view('index'); + $summaryPrice = DB::table('auto_orders') + ->whereNotNull('cost') + ->sum('cost') + + DB::table('estate_orders') + ->whereNotNull('cost') + ->sum('cost'); + + $autoOrders = DB::table('auto_orders')->count(); + $estateOrders = DB::table('estate_orders')->count(); + + $recentOrders = collect( + DB::table('auto_orders')->latest()->limit(5)->get()->map(fn($o) => (object)array_merge((array)$o, ['type' => 'auto_'])) + )->merge( + DB::table('estate_orders')->latest()->limit(5)->get()->map(fn($o) => (object)array_merge((array)$o, ['type' => 'estate_'])) + )->sortByDesc('created_at')->take(10)->values(); + + $forModerate = collect( + DB::table('auto_orders')->where('status', 'moderated')->latest()->limit(10)->get()->map(fn($o) => (object)array_merge((array)$o, ['type' => 'auto_'])) + )->merge( + DB::table('estate_orders')->where('status', 'moderated')->latest()->limit(10)->get()->map(fn($o) => (object)array_merge((array)$o, ['type' => 'estate_'])) + )->sortByDesc('updated_at')->take(10)->values(); + + $actions = DB::table('tracking_actions')->latest()->limit(20)->get(); + + $appraiserChart = [[], []]; + $appraisers = DB::table('users')->where('role', 'appraiser')->get(); + foreach ($appraisers as $appraiser) { + $appraiserChart[0][] = $appraiser->name; + $count = DB::table('auto_orders')->where('appraiser_id', $appraiser->id)->count() + + DB::table('estate_orders')->where('appraiser_id', $appraiser->id)->count(); + $appraiserChart[1][] = $count; + } + + return view('index', compact( + 'summaryPrice', + 'autoOrders', + 'estateOrders', + 'recentOrders', + 'forModerate', + 'actions', + 'appraiserChart' + )); } public function lang($locale)