Separate Banco::process pipe to be able to intervene in the middle

This commit is contained in:
Juan Pablo Vial
2024-08-26 15:23:22 -04:00
parent e93149456a
commit 936830ae64

View File

@ -9,20 +9,9 @@ abstract class Banco extends Service implements Define\Cartola\Banco
{ {
public function process(UploadedFileInterface $file): array public function process(UploadedFileInterface $file): array
{ {
$data = $this->handleFile($file); $filename = $this->processUploadedFile($file);
$temp = []; $data = $this->processFile($filename);
$columns = $this->columnMap(); return $this->mapColumns($data);
foreach ($data as $row) {
$r = [];
foreach ($columns as $old => $new) {
if (!isset($row[$old])) {
continue;
}
$r[$new] = $row[$old];
}
$temp []= $r;
}
return $temp;
} }
/** /**
@ -36,19 +25,52 @@ abstract class Banco extends Service implements Define\Cartola\Banco
} }
/** /**
* Move the UploadedFile into a temp file from getFilename and after parseFile remove temp file * Move the UploadedFile into a temp file from getFilename
* @param UploadedFileInterface $uploadedFile * @param UploadedFileInterface $uploadedFile
* @return array * @return string
*/ */
protected function handleFile(UploadedFileInterface $uploadedFile): array protected function processUploadedFile(UploadedFileInterface $uploadedFile): string
{ {
$filename = $this->getFilename($uploadedFile); $filename = $this->getFilename($uploadedFile);
$uploadedFile->moveTo($filename); $uploadedFile->moveTo($filename);
return $filename;
}
/**
* Process the temp file from getFilename and remove it
* @param string $filename
* @return array
*/
protected function processFile(string $filename): array
{
$data = $this->parseFile($filename); $data = $this->parseFile($filename);
unlink($filename); unlink($filename);
return $data; return $data;
} }
/**
* Map columns from uploaded file data to database columns
* @param array $data
* @return array
*/
protected function mapColumns(array $data): array
{
$temp = [];
$columns = $this->columnMap();
foreach ($data as $row) {
$r = [];
foreach ($columns as $old => $new) {
if (!isset($row[$old])) {
continue;
}
$r[$new] = $row[$old];
}
$temp []= $r;
}
return $temp;
}
/** /**
* Get filename where to move UploadedFile * Get filename where to move UploadedFile
* @param UploadedFileInterface $uploadedFile * @param UploadedFileInterface $uploadedFile