22 private $errorsFileName =
'errors.csv';
32 private $providerFactory;
37 private $reportValidator;
52 $this->reportValidator = $reportValidator;
53 $this->providerFactory = $providerFactory;
62 foreach ($this->config->get() as $file) {
63 $provider = reset($file[
'providers']);
64 if (isset($provider[
'parameters'][
'name'])) {
65 $error = $this->reportValidator->validate($provider[
'parameters'][
'name']);
67 $errorsList[] = $error;
72 $providerObject = $this->providerFactory->create($provider[
'class']);
73 $fileName = $provider[
'parameters'] ? $provider[
'parameters'][
'name'] : $provider[
'name'];
75 $fileData = $providerObject->getReport(...array_values($provider[
'parameters']));
76 $stream = $directory->
openFile($fileFullPath,
'w+');
79 foreach ($fileData as
$row) {
81 $headers = array_keys(
$row);
82 $stream->writeCsv($headers);
84 $stream->writeCsv(
$row);
90 $errorStream = $directory->
openFile(
$path . $this->errorsFileName,
'w+');
91 foreach ($errorsList as $error) {
93 $errorStream->writeCsv($error);
94 $errorStream->unlock();
96 $errorStream->close();
write(WriteInterface $directory, $path)
__construct(ConfigInterface $config, ReportValidator $reportValidator, ProviderFactory $providerFactory)
openFile($path, $mode='w')