validate(['days' => 'required|integer|min:1|max:365'])['days']; $items = $this->reminders->expiring($days)->map(fn (Service $service) => [ 'id' => $service->id, 'server_name' => $service->server_name, 'product_name' => $service->product?->name, 'expires_at' => $service->expires_at, 'days_left' => $this->reminders->daysLeft($service), 'auto_renew' => (bool) $service->auto_renew, 'customer' => [ 'uuid' => $service->customer->uuid, 'fullname' => $service->customer->fullname, 'email' => $service->customer->email, ], ]); return response()->json([ 'error' => false, 'data' => $items->values(), 'truncated' => $items->count() >= ServiceRenewalReminderService::MAX_RESULTS, ]); } public function send(Request $request): JsonResponse { $data = $request->validate([ 'service_ids' => 'required|array|min:1|max:' . ServiceRenewalReminderService::MAX_RESULTS, 'service_ids.*' => 'integer', ]); $count = $this->reminders->send($data['service_ids'], Auth::guard('admin')->user()); return response()->json([ 'error' => false, 'message' => "Đã đưa {$count} email nhắc gia hạn vào hàng đợi gửi.", ]); } }