diff --git a/src/Command/Migration/MigratePartitionClientCommand.php b/src/Command/Migration/MigratePartitionClientCommand.php new file mode 100644 index 0000000..32dd3ca --- /dev/null +++ b/src/Command/Migration/MigratePartitionClientCommand.php @@ -0,0 +1,81 @@ +doctrine->getManager('og_1'); + + $clientRepository = $this->entityManager->getRepository(Client::class); + $operativeSystemRepository = $this->entityManager->getRepository(OperativeSystem::class); + + /** Obtener las particiones de los clientes de la base de datos antigua **/ + $rsmPartitions = new ResultSetMapping(); + $rsmPartitions->addScalarResult('idordenador', 'idordenador'); + $rsmPartitions->addScalarResult('idnombreso', 'idnombreso'); + $rsmPartitions->addScalarResult('numdisk', 'numdisk'); + $rsmPartitions->addScalarResult('numpar', 'numpar'); + $rsmPartitions->addScalarResult('codpar', 'codpar'); + $rsmPartitions->addScalarResult('tamano', 'tamano'); + $rsmPartitions->addScalarResult('uso', 'uso'); + + $partitionQuery = $oldDatabaseEntityManager->createNativeQuery('SELECT idordenador, idnombreso, numdisk, numpar, codpar, tamano, uso FROM ordenadores_particiones', $rsmPartitions); + $partitions = $partitionQuery->getResult(); + + /** Particiones **/ + $output->writeln("PARTICIONES TOTAL: ". count($partitions)); + foreach ($partitions as $partition){ + $clientEntity = $clientRepository->findOneBy(['migrationId' => $partition['idordenador']]); + if(!$clientEntity){ + $output->writeln("No se ha encontrado el cliente con id: ". $partition['idordenador']); + continue; + } + + $operativeSystemEntity = $operativeSystemRepository->findOneBy(['migrationId' => $partition['idnombreso']]); + if(!$operativeSystemEntity){ + $output->writeln("No se ha encontrado el sistema operativo con id: ". $partition['idnombreso']); + continue; + } + + $partitionEntity = new Partition(); + $partitionEntity->setDiskNumber($partition['numdisk']); + $partitionEntity->setPartitionNumber($partition['numpar']); + $partitionEntity->setPartitionCode($partition['codpar']); + $partitionEntity->setSize($partition['tamano']); + $partitionEntity->setMemoryUsage($partition['uso']); + $partitionEntity->setClient($clientEntity); + $partitionEntity->setOperativeSystem($operativeSystemEntity); + + $this->entityManager->persist($partitionEntity); + $this->entityManager->flush(); + } + return 1; + } +} \ No newline at end of file