dashboard in better style 2
This commit is contained in:
@@ -379,4 +379,59 @@ class DashboardController extends Controller
|
|||||||
}
|
}
|
||||||
return response()->json(array_values($send));
|
return response()->json(array_values($send));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function orderPeakHours(Request $request)
|
||||||
|
{
|
||||||
|
$days = (int) $request->input('days', 30);
|
||||||
|
$days = min(max($days, 7), 90);
|
||||||
|
$start = now()->subDays($days)->startOfDay();
|
||||||
|
|
||||||
|
$rows = Order::query()
|
||||||
|
->where('sts', 2)
|
||||||
|
->where('type', 2)
|
||||||
|
->where('created_at', '>=', $start)
|
||||||
|
->select([
|
||||||
|
DB::raw('HOUR(created_at) as hour'),
|
||||||
|
'direction',
|
||||||
|
DB::raw('COUNT(*) as count'),
|
||||||
|
])
|
||||||
|
->groupBy('hour', 'direction')
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$hours = [];
|
||||||
|
for ($h = 0; $h < 24; $h++) {
|
||||||
|
$hours[$h] = ['hour' => $h, 'buy' => 0, 'sell' => 0, 'total' => 0];
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($rows as $row) {
|
||||||
|
$h = (int) $row->hour;
|
||||||
|
if ($h < 0 || $h > 23) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$count = (int) $row->count;
|
||||||
|
if ((int) $row->direction === 1) {
|
||||||
|
$hours[$h]['buy'] += $count;
|
||||||
|
} elseif ((int) $row->direction === 2) {
|
||||||
|
$hours[$h]['sell'] += $count;
|
||||||
|
}
|
||||||
|
$hours[$h]['total'] += $count;
|
||||||
|
}
|
||||||
|
|
||||||
|
$peakHour = 0;
|
||||||
|
$peakCount = 0;
|
||||||
|
foreach ($hours as $slot) {
|
||||||
|
if ($slot['total'] > $peakCount) {
|
||||||
|
$peakCount = $slot['total'];
|
||||||
|
$peakHour = $slot['hour'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return response()->json([
|
||||||
|
'hours' => array_values($hours),
|
||||||
|
'peak_hour' => $peakCount > 0 ? $peakHour : null,
|
||||||
|
'peak_count' => $peakCount,
|
||||||
|
'days' => $days,
|
||||||
|
'total_orders' => array_sum(array_column($hours, 'total')),
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -141,6 +141,7 @@ Route::middleware('auth:user')->group(function (){
|
|||||||
Route::post('dashboard/customer/all_sell', [DashboardController::class, 'sumSellToCustomerMajor']);
|
Route::post('dashboard/customer/all_sell', [DashboardController::class, 'sumSellToCustomerMajor']);
|
||||||
Route::post('dashboard/customer/single/all_sell', [DashboardController::class, 'sumSellToCustomerSingle']);
|
Route::post('dashboard/customer/single/all_sell', [DashboardController::class, 'sumSellToCustomerSingle']);
|
||||||
Route::post('dashboard/customer/flow', [DashboardController::class, 'flow']);
|
Route::post('dashboard/customer/flow', [DashboardController::class, 'flow']);
|
||||||
|
Route::post('dashboard/customer/order-peak-hours', [DashboardController::class, 'orderPeakHours']);
|
||||||
|
|
||||||
//bank account
|
//bank account
|
||||||
Route::post('account/table', [BankAccountController::class, 'table']);
|
Route::post('account/table', [BankAccountController::class, 'table']);
|
||||||
|
|||||||
Reference in New Issue
Block a user