Skip to content
Snippets Groups Projects
Commit 93790385 authored by Guillaume Heurtier's avatar Guillaume Heurtier
Browse files

FEAT #14537 TIME 0:40 added get last number + sites by type routes

parent 866dc81d
No related branches found
No related tags found
No related merge requests found
...@@ -626,6 +626,8 @@ $app->get('/registeredMail/ranges/{id}', \RegisteredMail\controllers\RegisteredN ...@@ -626,6 +626,8 @@ $app->get('/registeredMail/ranges/{id}', \RegisteredMail\controllers\RegisteredN
$app->post('/registeredMail/ranges', \RegisteredMail\controllers\RegisteredNumberRangeController::class . ':create'); $app->post('/registeredMail/ranges', \RegisteredMail\controllers\RegisteredNumberRangeController::class . ':create');
$app->put('/registeredMail/ranges/{id}', \RegisteredMail\controllers\RegisteredNumberRangeController::class . ':update'); $app->put('/registeredMail/ranges/{id}', \RegisteredMail\controllers\RegisteredNumberRangeController::class . ':update');
$app->delete('/registeredMail/ranges/{id}', \RegisteredMail\controllers\RegisteredNumberRangeController::class . ':delete'); $app->delete('/registeredMail/ranges/{id}', \RegisteredMail\controllers\RegisteredNumberRangeController::class . ':delete');
$app->get('/registeredMail/ranges/type/{type}', \RegisteredMail\controllers\RegisteredNumberRangeController::class . ':getLastNumberByType');
$app->get('/registeredMail/sites/type/{type}', \RegisteredMail\controllers\IssuingSiteController::class . ':getByType');
$app->run(); $app->run();
...@@ -17,6 +17,7 @@ use Group\controllers\PrivilegeController; ...@@ -17,6 +17,7 @@ use Group\controllers\PrivilegeController;
use History\controllers\HistoryController; use History\controllers\HistoryController;
use RegisteredMail\models\IssuingSiteEntitiesModel; use RegisteredMail\models\IssuingSiteEntitiesModel;
use RegisteredMail\models\IssuingSiteModel; use RegisteredMail\models\IssuingSiteModel;
use RegisteredMail\models\RegisteredNumberRangeModel;
use Respect\Validation\Validator; use Respect\Validation\Validator;
use Slim\Http\Request; use Slim\Http\Request;
use Slim\Http\Response; use Slim\Http\Response;
...@@ -239,4 +240,45 @@ class IssuingSiteController ...@@ -239,4 +240,45 @@ class IssuingSiteController
return $response->withStatus(204); return $response->withStatus(204);
} }
public function getByType(Request $request, Response $response, array $args)
{
if (!PrivilegeController::hasPrivilege(['privilegeId' => 'admin_registered_mail', 'userId' => $GLOBALS['id']])) {
return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']);
}
$sitesIds = RegisteredNumberRangeModel::get([
'select' => ['site_id'],
'where' => ['type = ?'],
'data' => [$args['type']]
]);
if (empty($sitesIds)) {
return $response->withStatus(403)->withJson(['errors' => 'No range found for type : ' . $args['type']]);
}
$sitesIds = array_column($sitesIds, 'site_id');
$sites = IssuingSiteModel::get([
'where' => ['id in (?)'],
'data' => [$sitesIds]
]);
foreach ($sites as $key => $site) {
$sites[$key] = [
'id' => $site['id'],
'siteLabel' => $site['site_label'],
'postOfficeLabel' => $site['post_office_label'],
'accountNumber' => $site['account_number'],
'addressNumber' => $site['address_number'],
'addressStreet' => $site['address_street'],
'addressAdditional1' => $site['address_additional1'],
'addressAdditional2' => $site['address_additional2'],
'addressPostcode' => $site['address_postcode'],
'addressTown' => $site['address_town'],
'addressCountry' => $site['address_country']
];
}
return $response->withJson(['sites' => $sites]);
}
} }
...@@ -235,4 +235,26 @@ class RegisteredNumberRangeController ...@@ -235,4 +235,26 @@ class RegisteredNumberRangeController
return $response->withStatus(204); return $response->withStatus(204);
} }
public function getLastNumberByType(Request $request, Response $response, array $args)
{
if (!PrivilegeController::hasPrivilege(['privilegeId' => 'admin_registered_mail', 'userId' => $GLOBALS['id']])) {
return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']);
}
$range = RegisteredNumberRangeModel::get([
'select' => ['range_end'],
'where' => ['type = ?'],
'data' => [$args['type']],
'orderBy' => ['range_end desc']
]);
if (empty($range)) {
return $response->withStatus(403)->withJson(['errors' => 'No range found for type : ' . $args['type']]);
}
$range = $range[0];
return $response->withJson(['lastNumber' => $range['range_end']]);
}
} }
...@@ -23,8 +23,12 @@ class IssuingSiteModel ...@@ -23,8 +23,12 @@ class IssuingSiteModel
ValidatorModel::arrayType($args, ['select']); ValidatorModel::arrayType($args, ['select']);
return DatabaseModel::select([ return DatabaseModel::select([
'select' => empty($args['select']) ? ['*'] : $args['select'], 'select' => empty($args['select']) ? ['*'] : $args['select'],
'table' => ['issuing_sites'] 'table' => ['issuing_sites'],
'where' => empty($args['where']) ? [] : $args['where'],
'data' => empty($args['data']) ? [] : $args['data'],
'order_by' => empty($args['orderBy']) ? [] : $args['orderBy'],
'limit' => empty($args['limit']) ? 0 : $args['limit']
]); ]);
} }
......
...@@ -23,8 +23,12 @@ class RegisteredNumberRangeModel ...@@ -23,8 +23,12 @@ class RegisteredNumberRangeModel
ValidatorModel::arrayType($args, ['select']); ValidatorModel::arrayType($args, ['select']);
return DatabaseModel::select([ return DatabaseModel::select([
'select' => empty($args['select']) ? ['*'] : $args['select'], 'select' => empty($args['select']) ? ['*'] : $args['select'],
'table' => ['registered_number_range'] 'table' => ['registered_number_range'],
'where' => empty($args['where']) ? [] : $args['where'],
'data' => empty($args['data']) ? [] : $args['data'],
'order_by' => empty($args['orderBy']) ? [] : $args['orderBy'],
'limit' => empty($args['limit']) ? 0 : $args['limit']
]); ]);
} }
......
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