Visual Console Refactor: added the status image to the group model

Former-commit-id: 80da05ae95ed87d4c7323594ada9e70c62f27501
This commit is contained in:
Alejandro Gallardo Escobar 2019-04-04 19:25:27 +02:00
parent 6e15117e11
commit 0f8c275ed1
1 changed files with 71 additions and 5 deletions

View File

@ -33,8 +33,9 @@ final class Group extends Item
{
$return = parent::decode($data);
$return['type'] = GROUP_ITEM;
$return['imageSrc'] = $this->extractImageSrc($data);
$return['groupId'] = $this->extractGroupId($data);
$return['imageSrc'] = static::extractImageSrc($data);
$return['groupId'] = static::extractGroupId($data);
$return['statusImageSrc'] = static::extractStatusImageSrc($data);
return $return;
}
@ -48,14 +49,14 @@ final class Group extends Item
*
* @throws \InvalidArgumentException When a valid image src can't be found.
*/
private function extractImageSrc(array $data): string
private static function extractImageSrc(array $data): string
{
$imageSrc = static::notEmptyStringOr(
static::issetInArray($data, ['imageSrc', 'image']),
null
);
if ($imageSrc === null || \strlen($imageSrc) === 0) {
if ($imageSrc === null) {
throw new \InvalidArgumentException(
'the image src property is required and should be a non empty string'
);
@ -65,6 +66,34 @@ final class Group extends Item
}
/**
* Extract a status image src value.
*
* @param array $data Unknown input data structure.
*
* @return mixed String representing the status image url (not empty)
* or null.
*
* @throws \InvalidArgumentException When a valid status image src
* can't be found.
*/
private static function extractStatusImageSrc(array $data): string
{
$statusImageSrc = static::notEmptyStringOr(
static::issetInArray($data, ['statusImageSrc']),
null
);
if ($statusImageSrc === null) {
throw new \InvalidArgumentException(
'the status image src property is required and should be a non empty string'
);
}
return $statusImageSrc;
}
/**
* Extract a group Id value.
*
@ -74,7 +103,7 @@ final class Group extends Item
*
* @throws \InvalidArgumentException When a valid group Id can't be found.
*/
private function extractGroupId(array $data): int
private static function extractGroupId(array $data): int
{
$groupId = static::parseIntOr(
static::issetInArray($data, ['groupId', 'id_group']),
@ -91,4 +120,41 @@ final class Group extends Item
}
/**
* Fetch a vc item data structure from the database using a filter.
*
* @param array $filter Filter of the Visual Console Item.
*
* @return array The Visual Console Item data structure stored into the DB.
* @throws \InvalidArgumentException When an agent Id cannot be found.
*
* @override Item::fetchDataFromDB.
*/
protected static function fetchDataFromDB(array $filter): array
{
// Due to this DB call, this function cannot be unit tested without
// a proper mock.
$data = parent::fetchDataFromDB($filter);
/*
* Retrieve extra data.
*/
// Load side libraries.
global $config;
include_once $config['homedir'].'/include/functions_groups.php';
include_once $config['homedir'].'/include/functions_visual_map.php';
// Get the status img src.
$groupId = static::extractGroupId($data);
$status = \groups_get_status($groupId);
$data['statusImageSrc'] = \visual_map_get_image_status_element(
$data,
$status
);
return $data;
}
}