89 lines
2.2 KiB
PHP
89 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Airport;
|
|
use App\Models\Comment;
|
|
use App\Models\Favorite;
|
|
use App\Models\Flight;
|
|
use App\Models\Tour;
|
|
use App\Models\User;
|
|
use Maatwebsite\Excel\Facades\Excel;
|
|
use App\Exports\VisitsExport;
|
|
use Illuminate\Support\Carbon;
|
|
use Hekmatinasser\Verta\Verta;
|
|
|
|
class DashboardController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$usersCount = User::count();
|
|
$toursCount = Tour::count();
|
|
$flightsCount = Flight::count();
|
|
$airportsCount = Airport::count();
|
|
$commentsCount = Comment::count();
|
|
$favoritesCount = Favorite::count();
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| دادههای نمودار
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
|
|
$chartLabels = [];
|
|
$chartValues = [];
|
|
|
|
for ($i = 9; $i >= 0; $i--) {
|
|
|
|
$date = Carbon::now()
|
|
->subDays($i);
|
|
|
|
$chartLabels[] = Verta::instance($date)
|
|
->format('Y/m/d');
|
|
|
|
// فعلاً برای تست
|
|
$chartValues[] = rand(5, 100);
|
|
}
|
|
|
|
return view('admin.dashboard', compact(
|
|
'usersCount',
|
|
'toursCount',
|
|
'flightsCount',
|
|
'airportsCount',
|
|
'commentsCount',
|
|
'favoritesCount',
|
|
'chartLabels',
|
|
'chartValues'
|
|
));
|
|
}
|
|
|
|
public function exportExcel()
|
|
{
|
|
$users = User::select(
|
|
'id',
|
|
'first_name',
|
|
'last_name',
|
|
'email',
|
|
'mobile',
|
|
'created_at'
|
|
)->get();
|
|
|
|
$rows = $users->map(fn ($user) => [
|
|
$user->id,
|
|
$user->first_name,
|
|
$user->last_name,
|
|
$user->email,
|
|
$user->mobile,
|
|
$user->created_at
|
|
? Verta::instance($user->created_at)->format('Y/m/d')
|
|
: '-',
|
|
])->toArray();
|
|
|
|
return Excel::download(
|
|
new VisitsExport($rows),
|
|
'users-report-' . now()->format('Y-m-d') . '.xlsx'
|
|
);
|
|
}
|
|
}
|