taurus-api/src/App/Service/TspInfoService.php
Dávid Danyi 0b7f357c29 * tspInfoService added
* caching is now enadbled on api endpoints
* cli task created for cache renewal
2017-09-08 15:31:21 +02:00

96 lines
2.7 KiB
PHP

<?php
namespace App\Service;
use League\Csv\Reader;
use League\Csv\Statement;
use Zend\Cache\Storage\StorageInterface;
use Zend\Config\Config;
use Zend\Http\Client;
use Zend\Json\Json;
class TspInfoService
{
const CACHE_KEY = 'tspInfo';
/**
* @var StorageInterface
*/
private $cache;
/**
* @var Config
*/
private $config;
/**
* @var VacationInfoCollectorService
*/
private $vacationInfoCollectorService;
/**
* @var TrInfoCollectorService
*/
private $trInfoCollectorService;
/**
* @var JcatInfoCollectorService
*/
private $jcatInfoCollectorService;
/**
* @var LabInfoCollectorService
*/
private $labInfoCollectorService;
/**
* @var JiraCollectorService
*/
private $jiraCollectorService;
public function __construct(
StorageInterface $cache,
Config $config,
VacationInfoCollectorService $vacationInfoCollectorService,
TrInfoCollectorService $trInfoCollectorService,
JcatInfoCollectorService $jcatInfoCollectorService,
LabInfoCollectorService $labInfoCollectorService,
JiraCollectorService $jiraCollectorService
)
{
$this->cache = $cache;
$this->config = $config;
$this->vacationInfoCollectorService = $vacationInfoCollectorService;
$this->trInfoCollectorService = $trInfoCollectorService;
$this->jcatInfoCollectorService = $jcatInfoCollectorService;
$this->labInfoCollectorService = $labInfoCollectorService;
$this->jiraCollectorService = $jiraCollectorService;
}
/**
* @param bool $forceReload
* @return array
*/
public function getTspInfo(bool $forceReload = false): array
{
$tspInfo = $this->cache->getItem(self::CACHE_KEY);
if($forceReload || null == $tspInfo) {
$tspInfo = [
'cameraUrls' => $this->config->get('url.eurestCameras')->toArray(),
'animGifs' => [],
'praGoals' => $this->trInfoCollectorService->getPraGoals(),
'trProgressInfo' => $this->trInfoCollectorService->getProgressInfo(),
'trFlowErrors' => $this->jcatInfoCollectorService->getTrFlowErrors(),
'expedites' => $this->jiraCollectorService->getExpedites(),
// 'isVacationSoon' => $this->vacationInfoCollectorService->isVacationSoon(),
// 'labTemperature' => $this->labInfoCollectorService->getLabTemperatureData(),
];
$this->cache->setItem(self::CACHE_KEY, serialize($tspInfo));
} else {
$tspInfo = unserialize($tspInfo);
}
return $tspInfo;
}
}