Cartola BCI

This commit is contained in:
Juan Pablo Vial
2024-03-18 17:54:27 -03:00
parent 936fd2d1e1
commit dc2e2c7f71
8 changed files with 143 additions and 27 deletions

View File

@ -5,6 +5,11 @@ use Psr\Http\Message\UploadedFileInterface;
interface Banco
{
/**
* Process bank movements for database inserts
* @param UploadedFileInterface $file
* @return array
*/
public function process(UploadedFileInterface $file): array;
}

View File

@ -9,7 +9,7 @@ abstract class Banco extends Service implements Define\Cartola\Banco
{
public function process(UploadedFileInterface $file): array
{
$data = $this->parseFile($file);
$data = $this->handleFile($file);
$temp = [];
$columns = $this->columnMap();
foreach ($data as $row) {
@ -24,11 +24,48 @@ abstract class Banco extends Service implements Define\Cartola\Banco
}
return $temp;
}
/**
* There are banks that need some post-processing
* @param array $movimientos
* @return array
*/
public function processMovimientosDiarios(array $movimientos): array
{
return $movimientos;
}
/**
* Move the UploadedFile into a temp file from getFilename and after parseFile remove temp file
* @param UploadedFileInterface $uploadedFile
* @return array
*/
protected function handleFile(UploadedFileInterface $uploadedFile): array
{
$filename = $this->getFilename($uploadedFile);
$uploadedFile->moveTo($filename);
$data = $this->parseFile($filename);
unlink($filename);
return $data;
}
/**
* Get filename where to move UploadedFile
* @param UploadedFileInterface $uploadedFile
* @return string
*/
abstract protected function getFilename(UploadedFileInterface $uploadedFile): string;
/**
* Mapping of uploaded file data columns to database columns
* @return array
*/
abstract protected function columnMap(): array;
abstract protected function parseFile(UploadedFileInterface $uploadedFile): array;
/**
* Translate uploaded file data to database data
* @param string $filename
* @return array
*/
abstract protected function parseFile(string $filename): array;
}