This commit is contained in:
baodev0
2026-07-21 08:34:15 +07:00
parent 3f477a559d
commit c3b5417b19
19 changed files with 652 additions and 20 deletions
@@ -15,7 +15,7 @@ final class EmailLogController extends Controller
{
$limit = min((int) $request->get('limit', $request->get('per_page', 20)), 200);
$query = Mail::query()->orderByDesc('created_at');
$query = Mail::query()->with(['customer', 'template'])->orderByDesc('created_at');
// sort=field_asc|field_desc
if ($sort = $request->get('sort')) {
@@ -30,7 +30,7 @@ final class EmailLogController extends Controller
}
if ($status = $request->get('status')) {
$query->where('status', $status);
$query->where('status', array_search($status, Mail::STATUS_MAP, true) ?: $status);
}
if ($customerId = $request->get('customer_id')) {
$query->where('customer_id', (int) $customerId);
@@ -47,7 +47,7 @@ final class EmailLogController extends Controller
return response()->json([
'error' => false,
'data' => [
'items' => $paginator->items(),
'items' => $paginator->getCollection()->map($this->mapLog(...))->all(),
'total' => $paginator->total(),
'per_page' => $paginator->perPage(),
'current_page' => $paginator->currentPage(),
@@ -58,12 +58,28 @@ final class EmailLogController extends Controller
public function show(int $id): JsonResponse
{
$log = Mail::find($id);
$log = Mail::with(['customer', 'template'])->find($id);
if (!$log) {
return response()->json(['error' => true, 'message' => 'Không tìm thấy email log'], 404);
}
return response()->json(['error' => false, 'data' => $log]);
return response()->json(['error' => false, 'data' => $this->mapLog($log)]);
}
private function mapLog(Mail $log): array
{
return [
'id' => $log->id,
'to_email' => $log->to,
'to_name' => $log->customer->fullname ?? null,
'customer_id' => $log->customer_id,
'subject' => $log->subject,
'template' => $log->template->name ?? '—',
'status' => $log->status,
'error_message' => null,
'sent_at' => $log->status === 'sent' ? $log->created_at : null,
'created_at' => $log->created_at,
];
}
}