partitions; if (empty($partitions)) { throw new BadRequestHttpException('Partitions is required'); } $this->logger->info('Input received', [ 'partitions_count' => count($partitions), 'input_type' => gettype($input), 'partitions_type' => gettype($partitions) ]); $disks = []; foreach ($partitions as $index => $partition) { $diskNumber = $partition->diskNumber; $partitionEntity = $this->entityManager->getRepository(Partition::class)->findOneBy([ 'client' => $client, 'partitionNumber' => $partition->partitionNumber, 'diskNumber' => $partition->diskNumber, ]); if ($partitionEntity) { $partitionEntity->setClient($client); $this->entityManager->persist($partitionEntity); } if (!isset($disks[$diskNumber])) { $disks[$diskNumber] = [ 'diskData' => [], 'partitionData' => [] ]; } $disks[$diskNumber]['diskData'] = [ 'dis' => (string) $diskNumber, 'tch' => (string) ($partition->size * 1024), ]; $disks[$diskNumber]['partitionData'][] = [ 'par' => (string) $partition->partitionNumber, 'cpt' => $partition->partitionCode, 'sfi' => $partition->filesystem, 'tam' => (string) (integer) ($partition->size * 1024), 'ope' => $partition->format ? "1" : "0", ]; } foreach ($disks as $diskNumber => $diskInfo) { $data = []; if (!empty($diskInfo['diskData'])) { $data[] = $diskInfo['diskData']; } $data = array_merge($data, $diskInfo['partitionData']); $result = [ "nfn" => "Configurar", "dsk" => (string) $diskNumber, "cfg" => $data, "check-sizes" => "false", "gen-script" => "true", "ids" => "0" ]; $response = $this->createRequest( method: 'POST', url: 'https://'.$client->getIp().':8000/opengnsys/Configurar', params: [ 'json' => $result, ], token: $client->getToken(), ); if (isset($response['script'])) { $decodedScript = base64_decode((string) $response['script'], true); if ($decodedScript !== false) { $response['script'] = $decodedScript; } } } return new JsonResponse(data: $response, status: Response::HTTP_OK); } }