partitions; if (empty($partitions)) { throw new BadRequestHttpException('Partitions is required'); } foreach ($input->clients as $clientInput) { /** @var Client $client */ $client = $clientInput->getEntity(); $disks = []; foreach ($partitions as $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, "ids" => "0" ]; $response = $this->createRequest( method: 'POST', url: 'https://'.$client->getIp().':8000/opengnsys/Configurar', params: [ 'json' => $result, ], token: $client->getToken(), ); $this->logger->info('Partition assistant', ['client' => $client->getId()]); if (isset($response['error']) && $response['code'] === Response::HTTP_INTERNAL_SERVER_ERROR) { throw new BadRequestHttpException('Error occurred while partitioning'); } $jobId = $response['job_id']; $client->setStatus(ClientStatus::BUSY); $this->entityManager->persist($client); $this->entityManager->flush(); $this->createService->__invoke($client, CommandTypes::PARTITION_AND_FORMAT, TraceStatus::IN_PROGRESS, $jobId, $data); } } return new JsonResponse(data: [], status: Response::HTTP_OK); } }