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, ]); } public function getTicketByOrderNum(Request $request, vCenter $serviceVCenter): JsonResponse { $orderNum = (string) $request->query('order_num', ''); if ($orderNum === '') { return response()->json(['error' => true, 'message' => 'Thiếu order_num'], 422); } $customer = $request->user(); $order = Order::with(['vmWare.vCenter']) ->where('customer_id', $customer->id) ->where('order_num', $orderNum) ->first(); if (!$order) { return response()->json(['error' => true, 'message' => 'Không tìm thấy đơn hàng'], 404); } $vm = $order->vmWare->first(); if (!$vm) { return response()->json(['error' => true, 'message' => 'Đơn hàng chưa có 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']]); } return response()->json([ 'error' => false, 'data' => $consoleTicket['data'], 'order_num' => $order->order_num, 'vm_id' => $vm->id, ]); } }