<?php
namespace App\Service;
use App\Entity\Cabecera;
use App\Utils\Xml;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
class XmlGeneratorService
{
private $params;
private $filesystem;
private $xml;
public function __construct(ParameterBagInterface $params, Filesystem $filesystem, Xml $xml)
{
$this->params = $params;
$this->filesystem = $filesystem;
$this->xml = $xml;
}
public function generatorXML(Cabecera $cabecera)
{
// Construye el nombre del archivo basado en la lógica proporcionada
$datetime['fecha'] = $cabecera->getUpdatedAt()->format('dm');
$datetime['hora'] = $cabecera->getUpdatedAt()->format('His');
$filename = substr($cabecera->getSucursal(), 0, 3) . $datetime['fecha'] . $datetime['hora'] . '-' . $cabecera->getId();
$filenameext = $filename . '.xml';
$numlineas = 2;
foreach ($cabecera->getLineas() as $key => $linea) {
if ($linea->getParent() == null) {
$numlineas++;
}
}
$xmlContent = $this->xml->generarXml($cabecera, $datetime, $numlineas, $filename);
// Define las rutas donde se guardarán los archivos
$path1 = $this->params->get('kernel.project_dir') . '/public/uploads/' . $filenameext;
$path2 = $this->params->get('kernel.project_dir') . '/public/respaldoXML/' . $filenameext;
// Usa Filesystem para guardar los archivos
$this->filesystem->dumpFile($path1, $xmlContent);
$this->filesystem->dumpFile($path2, $xmlContent);
return $filename;
}
}