serviceClientService = $serviceClientService; $this->serviceClientRepository = $serviceClientRepository; } public function getService(Request $request) { $limit = $request->get('limit', 10); $services = $this->serviceClientService->getActiveServices($limit); return ServiceClientResource::collection($services)->additional([ 'error' => false, 'message' => 'Lấy dữ liệu thành công', 'page_type' => 'service', ]); } public function getDetail(Request $request, string $uuid) { $service = $this->serviceClientService->getDetailService($uuid); return (new ServiceClientDetailResource($service))->additional([ 'error' => false, 'message' => 'Lấy dữ liệu thành công', 'page_type' => 'service', ]); } public function getConsoleTicket(Request $request, string $uuid, vCenter $serviceVCenter) { $customer = $request->user(); $service = Service::with(['orderItem.order.vmWare.vCenter']) ->where('uuid', $uuid) ->where('customer_id', $customer->id) ->first(); if (!$service) { return response()->json(['error' => true, 'message' => 'Không tìm thấy dịch vụ'], 404); } $vm = $service->orderItem?->order?->vmWare?->first(); if (!$vm) { return response()->json(['error' => true, 'message' => 'Dịch vụ chưa được cấp phát VM'], 404); } $vcenter = $vm->vCenter; if (!$vcenter) { return response()->json(['error' => true, 'message' => 'Không tìm thấy thông tin vCenter'], 404); } if (!$serviceVCenter->loginServer($vcenter)) { return response()->json(['error' => true, 'message' => 'Không thể đăng nhập vào vCenter']); } $consoleTicket = $serviceVCenter->GetConsoleTickets($vm->vmware_id); if ($consoleTicket === 'Login_Again') { if ($serviceVCenter->loginServer($vcenter)) { $consoleTicket = $serviceVCenter->GetConsoleTickets($vm->vmware_id); } else { return response()->json(['error' => true, 'message' => 'Không thể đăng nhập lại vào vCenter']); } } if (is_string($consoleTicket)) { return response()->json(['error' => true, 'message' => "Failed to get console ticket: $consoleTicket"]); } if ($consoleTicket['error']) { return response()->json(['error' => true, 'message' => $consoleTicket['data']]); } $ticket = basename(parse_url((string) $consoleTicket['data'], PHP_URL_PATH)); return response()->json([ 'error' => false, 'message' => $ticket, ]); } }