Files
Nexora/app/Services/ProjectCodeService.php
Javi 047e155238
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
new functions
2025-12-14 23:59:32 +01:00

80 lines
2.3 KiB
PHP

<?php
namespace App\Services;
use App\Models\Project;
use App\Services\ProjectCodeValidator;
use Illuminate\Support\Arr;
class ProjectCodeService
{
protected ProjectCodeValidator $validator;
public function __construct(ProjectCodeValidator $validator)
{
$this->validator = $validator;
}
/**
* Crea un validador para un proyecto específico
*/
public function forProject(Project $project): ProjectCodeValidator
{
// Si es un modelo Eloquent, convertir a array
//$projectData = $project instanceof Project ? $project->toArray() : $project;
return new ProjectCodeValidator($project);
}
/**
* Valida un código rápidamente
*/
public function validate(Project $project, string $code): bool
{
$validator = $this->forProject($project);
return $validator->validate($code);
}
/**
* Analiza un código y devuelve detalles
*/
public function analyze(Project $project, string $code): array
{
$validator = $this->forProject($project);
return $validator->analyze($code);
}
/**
* Genera un nuevo código para el proyecto
*/
public function generate(
Project $project,
array $components,
string $documentName
): string
{
$validator = $this->forProject($project);
return $validator->generateCode($components, $documentName);
}
/**
* Obtiene la configuración de codificación
*/
public function getConfiguration(Project $project): array
{
$validator = $this->forProject($project);
return [
'format' => $validator->getFormat(),
'reference' => $validator->getReference(),
'separator' => $validator->getSeparator(),
'sequence_length' => $validator->getSequenceLength(),
'components' => [
'maker' => $validator->getAllowedCodesForComponent('maker'),
'system' => $validator->getAllowedCodesForComponent('system'),
'discipline' => $validator->getAllowedCodesForComponent('discipline'),
'document_type' => $validator->getAllowedCodesForComponent('document_type'),
]
];
}
}