From fb12286c00dbc40cae73eccf89756439418842f9 Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Mon, 1 Feb 2021 16:26:03 +0100 Subject: [PATCH] FEAT #16063 TIME 0:30 Chart + fixes --- src/app/home/controllers/TileController.php | 38 +++++++++++++++------ 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/src/app/home/controllers/TileController.php b/src/app/home/controllers/TileController.php index 55de189f85d..263e1f69c8a 100644 --- a/src/app/home/controllers/TileController.php +++ b/src/app/home/controllers/TileController.php @@ -24,6 +24,7 @@ use Respect\Validation\Validator; use Slim\Http\Request; use Slim\Http\Response; use SrcCore\controllers\PreparedClauseController; +use Status\models\StatusModel; use User\models\UserModel; class TileController @@ -214,9 +215,13 @@ class TileController } elseif (!Validator::intVal()->validate($args['parameters']['groupId'] ?? null)) { return ['errors' => 'Body[parameters] groupId is empty or not an integer']; } - if (!BasketModel::hasGroup(['id' => $args['parameters']['basketId'], 'groupId' => $args['parameters']['groupId']])) { + $basket = BasketModel::getById(['select' => ['basket_id'], 'id' => $args['parameters']['basketId']]); + $group = GroupModel::getById(['select' => ['group_id'], 'id' => $args['parameters']['groupId']]); + if (empty($basket) || empty($group)) { + return ['errors' => 'Basket or group do not exist']; + } elseif (!BasketModel::hasGroup(['id' => $basket['basket_id'], 'groupId' => $group['group_id']])) { return ['errors' => 'Basket is not linked to this group']; - } elseif (!UserModel::hasGroup(['id' => $GLOBALS['id'], 'groupId' => $args['parameters']['groupId']])) { + } elseif (!UserModel::hasGroup(['id' => $GLOBALS['id'], 'groupId' => $group['group_id']])) { return ['errors' => 'User is not linked to this group']; } } @@ -227,14 +232,14 @@ class TileController private static function getDetails(array &$tile) { if ($tile['type'] == 'basket') { - if (!BasketModel::hasGroup(['id' => $tile['parameters']['basketId'], 'groupId' => $tile['parameters']['groupId']])) { + $basket = BasketModel::getById(['select' => ['basket_clause', 'basket_name', 'basket_id'], 'id' => $tile['parameters']['basketId']]); + $group = GroupModel::getById(['select' => ['group_desc', 'group_id'], 'id' => $tile['parameters']['groupId']]); + if (!BasketModel::hasGroup(['id' => $basket['basket_id'], 'groupId' => $group['group_id']])) { return ['errors' => 'Basket is not linked to this group']; - } elseif (!UserModel::hasGroup(['id' => $GLOBALS['id'], 'groupId' => $tile['parameters']['groupId']])) { + } elseif (!UserModel::hasGroup(['id' => $GLOBALS['id'], 'groupId' => $group['group_id']])) { return ['errors' => 'User is not linked to this group']; } - $basket = BasketModel::getById(['select' => ['basket_clause', 'basket_name'], 'id' => $tile['parameters']['basketId']]); - $group = GroupModel::getById(['select' => ['group_desc'], 'id' => $tile['parameters']['groupId']]); $tile['basketName'] = $basket['basket_name']; $tile['groupName'] = $group['group_desc']; if ($tile['view'] == 'resume') { @@ -242,15 +247,28 @@ class TileController } elseif ($tile['view'] == 'list') { //TODO WIP } elseif ($tile['view'] == 'chart') { + if (!empty($tile['parameters']['chartMode']) && $tile['parameters']['chartMode'] == 'status') { + $type = 'status'; + } else { + $type = 'type_id'; + } $resources = ResModel::getOnView([ - 'select' => ['COUNT(type_id)'], + 'select' => ["COUNT({$type}), {$type}"], 'where' => [PreparedClauseController::getPreparedClause(['userId' => $GLOBALS['id'], 'clause' => $basket['basket_clause']])], - 'groupBy' => ['type_id'] + 'groupBy' => [$type] ]); $tile['resources'] = []; foreach ($resources as $resource) { - $doctype = DoctypeModel::getById(['select' => ['description'], 'id' => $resource['type_id']]); - $tile['resources'][] = ['name' => $doctype['description'], 'value' => $resource['count']]; + if ($type == 'status') { + $status['label_status'] = null; + if (!empty($resource['status'])) { + $status = StatusModel::getById(['select' => ['label_status'], 'id' => $resource['status']]); + } + $tile['resources'][] = ['name' => $status['label_status'], 'value' => $resource['count']]; + } else { + $doctype = DoctypeModel::getById(['select' => ['description'], 'id' => $resource['type_id']]); + $tile['resources'][] = ['name' => $doctype['description'], 'value' => $resource['count']]; + } } } } -- GitLab