Skip to content
Snippets Groups Projects
Verified Commit 06e7c8eb authored by Damien's avatar Damien
Browse files

FEAT #22 Refactoring parameters

parent 07383a38
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,7 @@
"Basket\\" : "src/app/basket/",
"Contact\\" : "src/app/contact/",
"History\\" : "src/app/history/",
"Parameter\\" : "src/app/parameter/",
"Priority\\" : "src/app/priority/",
"Resource\\" : "src/app/resource/",
"Status\\" : "src/app/status/",
......
<?php
/**
* Copyright Maarch since 2008 under licence GPLv3.
* See LICENCE.txt file at the root folder for more details.
* This file is part of Maarch software.
* @brief ParametersController
* @author dev <dev@maarch.org>
* @ingroup core
*/
namespace Core\Controllers;
use Core\Models\ParameterModel;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
use Respect\Validation\Validator;
class ParametersController
{
public function getParametersForAdministration(RequestInterface $request, ResponseInterface $response)
{
$obj = [
'parametersList' => ParameterModel::getList(),
'lang' => ParameterModel::getParametersLang()
];
return $response->withJson($obj);
}
public function getParameterForAdministration(RequestInterface $request, ResponseInterface $response, $aArgs)
{
$obj['parameter'] = ParameterModel::getById(['id' => $aArgs['id']]);
if (empty($obj)) {
return $response->withStatus(400)->withJson(['errors' => 'User not found']);
}
if ($obj['parameter']['param_value_date']) {
$obj['type'] = 'date';
} else if ($obj['parameter']['param_value_int']) {
$obj['type'] = 'int';
} else {
$obj['type'] = 'string';
}
$obj['lang'] = ParameterModel::getParametersLang();
return $response->withJson($obj);
}
public function getNewParameterForAdministration(RequestInterface $request, ResponseInterface $response)
{
$obj['lang'] = ParameterModel::getParametersLang();
return $response->withJson($obj);
}
public function getById(RequestInterface $request, ResponseInterface $response, $aArgs)
{
$obj = ParameterModel::getById(['id' => $aArgs['id']]);
return $response->withJson($obj);
}
public function create(RequestInterface $request, ResponseInterface $response)
{
$errors = $this->control($request, 'create');
if (!empty($errors)) {
return $response
->withStatus(500)
->withJson(['errors' => $errors]);
}
$datas = $request->getParams();
$return = ParameterModel::create($datas);
if ($return) {
$obj = ParameterModel::getById(['id' => $datas['id']]);
} else {
return $response
->withStatus(500)
->withJson(['errors' => _NOT_CREATE]);
}
return $response->withJson(
[
'success' => _PARAMETER. ' <b>' . $obj['id'] .'</b> ' ._ADDED
]
);
}
public function update(RequestInterface $request, ResponseInterface $response, $aArgs)
{
$errors = $this->control($request, 'update');
if (!empty($errors)) {
return $response
->withStatus(500)
->withJson(['errors' => $errors]);
}
$aArgs = $request->getParams();
$return = ParameterModel::update($aArgs);
if ($return) {
$obj = ParameterModel::getById(['id' => $aArgs['id']]);
} else {
return $response
->withStatus(500)
->withJson(['errors' => _NOT_UPDATE]);
}
return $response->withJson(
[
'success' => _PARAMETER. ' <b>' . $aArgs['id'] .'</b> ' ._UPDATED,
]
);
}
public function delete(RequestInterface $request, ResponseInterface $response, $aArgs)
{
$obj = ParameterModel::delete(['id' => $aArgs['id']]);
return $response->withJson(
[
'success' => _PARAMETER. ' <b>' . $aArgs['id'] .'</b> ' ._DELETED,
'parameters' => ParameterModel::getList()
]
);
}
protected function control($request, $mode)
{
$errors = [];
if ($mode == 'update') {
$obj = ParameterModel::getById(
[
'id' => $request->getParam('id'),
'param_value_int' => $request->getParam('param_value_int')
]
);
if (empty($obj)) {
array_push($errors, _ID . ' '. _NOT_EXISTS);
}
}
if (!Validator::notEmpty()->validate($request->getParam('id'))) {
array_push($errors, _ID_IS_EMPTY_CONTROLLER);
} elseif ($mode == 'create') {
if (!Validator::regex('/^[\w.-]*$/')->validate($request->getParam('id'))) {
array_push($errors, _INVALID_ID);
}
if (!Validator::regex('/^[\w.-]*$/')->validate($request->getParam('description'))&&$request->getParam('description')!=null) {
array_push($errors, _INVALID_DESCRIPTION);
}
if (!Validator::regex('/^[\w.-]*$/')->validate($request->getParam('param_value_string'))&&$request->getParam('param_value_string')!=null) {
array_push($errors, _INVALID_STRING);
}
if (!Validator::regex('/^[0-9]*$/')->validate($request->getParam('param_value_int')) && $request->getParam('param_value_int')!=null) {
array_push($errors, _INVALID_INTEGER);
}
$obj = ParameterModel::getById(['id' => $request->getParam('id')]);
if (!empty($obj)) {
array_push($errors, _ID . ' ' . $obj[0]['id'] . ' ' . _ALREADY_EXISTS);
}
}
if ($request->getParam('param_value_date')!=null) {
if (date('d-m-Y', strtotime($request->getParam('param_value_date'))) != $request->getParam('param_value_date')) {
array_push($errors, _INVALID_PARAM_DATE);
}
}
if (!Validator::notEmpty()->validate($request->getParam('param_value_int'))
&& !Validator::notEmpty()->validate($request->getParam('param_value_string'))
&& !Validator::notEmpty()->validate($request->getParam('param_value_date'))
) {
array_push($errors, _PARAM_VALUE_IS_EMPTY);
}
return $errors;
}
}
......@@ -309,7 +309,7 @@ class UserController
'recordId' => $user['user_id'],
'eventType' => 'RET',
'eventId' => 'userabs',
'info' => "{$user['firstname']} {$user['lastname']} " ._BACK_FROM_VACATION
'info' => "{$user['firstname']} {$user['lastname']} " ._BACK_FROM_VACATION
]);
return $response->withJson([
......
......@@ -45,6 +45,7 @@ class DatabaseModel
* @param array $args
*
* @return int
* @throws \Exception
*/
public static function getNextSequenceValue(array $args)
{
......@@ -149,6 +150,7 @@ class DatabaseModel
* @param array $args
*
* @return bool
* @throws \Exception
*/
public static function insert(array $args)
{
......@@ -184,6 +186,7 @@ class DatabaseModel
* @param array $args
*
* @return bool
* @throws \Exception
*/
public static function update(array $args)
{
......@@ -219,6 +222,7 @@ class DatabaseModel
* @param array $args
*
* @return bool
* @throws \Exception
*/
public static function delete(array $args)
{
......
......@@ -147,7 +147,6 @@ $app->get('/groups/{id}/details', \Core\Controllers\GroupController::class . ':g
$app->put('/groups/{id}/services/{serviceId}', \Core\Controllers\GroupController::class . ':updateService');
$app->put('/groups/{id}/reassign/{newGroupId}', \Core\Controllers\GroupController::class . ':reassignUsers');
//Docservers
$app->get('/docservers', \Core\Controllers\DocserverController::class . ':get');
$app->get('/docservers/{id}', \Core\Controllers\DocserverController::class . ':getById');
......@@ -206,13 +205,12 @@ $app->put('/currentUser/emailSignature/{id}', \Core\Controllers\UserController::
$app->delete('/currentUser/emailSignature/{id}', \Core\Controllers\UserController::class . ':deleteCurrentUserEmailSignature');
$app->put('/currentUser/groups/{groupId}/baskets/{basketId}', \Core\Controllers\UserController::class . ':updateBasketPreference');
//parameters
$app->get('/administration/parameters', \Core\Controllers\ParametersController::class . ':getParametersForAdministration');
$app->get('/administration/parameters/new', \Core\Controllers\ParametersController::class . ':getNewParameterForAdministration');
$app->get('/administration/parameters/{id}', \Core\Controllers\ParametersController::class . ':getParameterForAdministration');
$app->post('/parameters', \Core\Controllers\ParametersController::class . ':create');
$app->put('/parameters/{id}', \Core\Controllers\ParametersController::class . ':update');
$app->delete('/parameters/{id}', \Core\Controllers\ParametersController::class . ':delete');
//Parameters
$app->get('/parameters', \Parameter\controllers\ParameterController::class . ':get');
$app->post('/parameters', \Parameter\controllers\ParameterController::class . ':create');
$app->get('/parameters/{id}', \Parameter\controllers\ParameterController::class . ':getById');
$app->put('/parameters/{id}', \Parameter\controllers\ParameterController::class . ':update');
$app->delete('/parameters/{id}', \Parameter\controllers\ParameterController::class . ':delete');
//Priorities
$app->get('/priorities', \Priority\controllers\PriorityController::class . ':get');
......
<?php
/**
* Copyright Maarch since 2008 under licence GPLv3.
* See LICENCE.txt file at the root folder for more details.
* This file is part of Maarch software.
* @brief ParametersController
* @author dev <dev@maarch.org>
* @ingroup core
*/
/**
* @brief Parameter Controller
* @author dev@maarch.org
*/
namespace Parameter\controllers;
use Core\Models\ServiceModel;
use Parameter\models\ParameterModel;
use Respect\Validation\Validator;
use Slim\Http\Request;
use Slim\Http\Response;
class ParameterController
{
public function get(Request $request, Response $response)
{
return $response->withJson(['parameters' => ParameterModel::get()]);
}
public function getById(Request $request, Response $response, array $aArgs)
{
$parameter = ParameterModel::getById(['id' => $aArgs['id']]);
if (empty($parameter)) {
return $response->withStatus(400)->withJson(['errors' => 'Parameter not found']);
}
return $response->withJson(['parameter' => $parameter]);
}
public function create(Request $request, Response $response)
{
if (!ServiceModel::hasService(['id' => 'admin_parameters', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) {
return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']);
}
$data = $request->getParams();
$check = Validator::stringType()->notEmpty()->validate($data['id']) && preg_match("/^[\w-]*$/", $data['id']);
if (!$check) {
return $response->withStatus(400)->withJson(['errors' => 'Bad Request']);
}
ParameterModel::create($data);
return $response->withJson(['success' => 'success']);
}
public function update(Request $request, Response $response, array $aArgs)
{
if (!ServiceModel::hasService(['id' => 'admin_parameters', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) {
return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']);
}
$parameter = ParameterModel::getById(['id' => $aArgs['id']]);
if (empty($parameter)) {
return $response->withStatus(400)->withJson(['errors' => 'Parameter not found']);
}
$data = $request->getParams();
ParameterModel::update($data);
return $response->withJson(['success' => 'success']);
}
public function delete(Request $request, Response $response, array $aArgs)
{
if (!ServiceModel::hasService(['id' => 'admin_parameters', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) {
return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']);
}
ParameterModel::delete(['id' => $aArgs['id']]);
return $response->withJson(['parameters' => ParameterModel::get()]);
}
}
<?php
/**
* Copyright Maarch since 2008 under licence GPLv3.
* See LICENCE.txt file at the root folder for more details.
......@@ -9,10 +10,13 @@
* @ingroup core
*/
namespace Core\Models;
/**
* @brief Parameter Model
* @author dev@maarch.org
*/
namespace Parameter\models;
class ParameterModel extends ParameterModelAbstract
{
}
\ No newline at end of file
<?php
/**
* Copyright Maarch since 2008 under licence GPLv3.
* See LICENCE.txt file at the root folder for more details.
......@@ -9,37 +10,35 @@
* @ingroup core
*/
namespace Core\Models;
/**
* @brief Parameter Model Abstract
* @author dev@maarch.org
*/
namespace Parameter\models;
use Core\Models\DatabaseModel;
use Core\Models\ValidatorModel;
class ParameterModelAbstract
{
public static function getList()
public static function get(array $aArgs = [])
{
$aReturn = DatabaseModel::select(
['select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'],
'table' => ['parameters']]
);
foreach ($aReturn as $key => $parameter) {
ValidatorModel::arrayType($aArgs, ['select']);
if ($parameter['param_value_date'] != null) {
$aReturn[$key]['param_value_date'] = TextFormatModel::formatDate($aReturn[$key]['param_value_date']);
}
}
$aReturn = DatabaseModel::select([
'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'],
'table' => ['parameters'],
]);
return $aReturn;
}
public static function getParametersLang()
{
$aLang = LangModel::getParametersLang();
return $aLang;
}
public static function getById(array $aArgs)
{
ValidatorModel::notEmpty($aArgs, ['id']);
ValidatorModel::stringType($aArgs, ['id']);
ValidatorModel::arrayType($aArgs, ['select']);
$parameter = DatabaseModel::select([
'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'],
......@@ -51,9 +50,6 @@ class ParameterModelAbstract
if (empty($parameter[0])) {
return [];
}
if (!empty($parameter[0]['param_value_date'])) {
$parameter[0]['param_value_date'] = TextFormatModel::formatDate($parameter[0]['param_value_date']);
}
return $parameter[0];
}
......@@ -79,34 +75,32 @@ class ParameterModelAbstract
return true;
}
public static function update(array $aArgs = [])
public static function update(array $aArgs)
{
ValidatorModel::notEmpty($aArgs, ['id']);
ValidatorModel::stringType($aArgs, ['id']);
$aReturn = DatabaseModel::update(
[
DatabaseModel::update([
'table' => 'parameters',
'set' => $aArgs,
'where' => ['id = ?'],
'data' => [$aArgs['id']]
]
);
]);
return $aReturn;
return true;
}
public static function delete(array $aArgs = [])
public static function delete(array $aArgs)
{
ValidatorModel::notEmpty($aArgs, ['id']);
ValidatorModel::stringType($aArgs, ['id']);
$aReturn = DatabaseModel::delete([
DatabaseModel::delete([
'table' => 'parameters',
'where' => ['id = ?'],
'data' => [$aArgs['id']]
]);
return $aReturn;
return true;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment