public function dashboardAction()
{
$dbAdapters = new Collection($this->dbAdapters->fetchAll());
$dbAdapters->setCollectionRoute('zf-apigility/api/db-adapter');
$modules = $this->modules->getModules();
$map = function ($value) {
return $value->serviceName;
};
foreach ($modules as $module) {
$name = $module->getName();
$version = $module->getLatestVersion();
$rest = $this->restServicesFactory->factory($name)->fetchAll($version);
$rest = array_map($map, $rest);
sort($rest);
$rpc = $this->rpcServicesFactory->factory($name)->fetchAll($version);
$rpc = array_map($map, $rpc);
sort($rpc);
$module->exchangeArray(['rest' => $rest, 'rpc' => $rpc]);
}
$modulesCollection = new Collection($modules);
$modulesCollection->setCollectionRoute('zf-apigility/api/module');
$dashboard = ['db_adapter' => $dbAdapters, 'module' => $modulesCollection];
$entity = new Entity($dashboard, 'dashboard');
$links = $entity->getLinks();
$links->add(Link::factory(['rel' => 'self', 'route' => ['name' => 'zf-apigility/api/dashboard']]));
return new ViewModel(['payload' => $entity]);
}