diff --git a/rest/index.php b/rest/index.php index e5196ab89e494c924a6de59251bbbd685d1ae4cc..96e3c84793e60fb756ec2e7f044876e08d54a736 100755 --- a/rest/index.php +++ b/rest/index.php @@ -651,6 +651,8 @@ $app->get('/documents/{id}/maarchParapheurWorkflow', \ExternalSignatoryBook\cont $app->get('/maarchParapheur/user/{id}/picture', \ExternalSignatoryBook\controllers\MaarchParapheurController::class . ':getUserPicture'); $app->get('/externalSignatureBooks/enabled', \ExternalSignatoryBook\controllers\ExternalSignatureBookController::class . ':getEnabledSignatureBook'); $app->get('/externalSummary/{resId}', \ExternalSummary\controllers\SummaryController::class . ':getByResId'); +$app->get('/ixbus/messageModels/{natureId}', \ExternalSignatoryBook\controllers\IxbusController::class . ':getMessageModels'); +$app->get('/ixbus/natureUsers/{natureId}', \ExternalSignatoryBook\controllers\IxbusController::class . ':getNatureUsers'); $app->get('/externalConnectionsEnabled', \SrcCore\controllers\CoreController::class . ':externalConnectionsEnabled'); diff --git a/src/app/external/externalSignatoryBook/controllers/IxbusController.php b/src/app/external/externalSignatoryBook/controllers/IxbusController.php index 8931e888a02b1e849c63ccf8a4beb7c2fdff6c6a..cb787e73f724fad941d4da67777fa303fa9708b9 100755 --- a/src/app/external/externalSignatoryBook/controllers/IxbusController.php +++ b/src/app/external/externalSignatoryBook/controllers/IxbusController.php @@ -23,6 +23,9 @@ use Resource\controllers\StoreController; use Resource\models\ResModel; use SrcCore\models\CurlModel; use SrcCore\models\TextFormatModel; +use Slim\Http\Request; +use Slim\Http\Response; +use SrcCore\models\CoreConfigModel; /** * @codeCoverageIgnore @@ -30,39 +33,12 @@ use SrcCore\models\TextFormatModel; class IxbusController { public static function getInitializeDatas($config) - { - $natures = IxbusController::getNature(['config' => $config]); - if (!empty($natures['error'])) { - return ['error' => $natures['error']]; - } - - $rawResponse['natures'] = $natures['natures']; - $rawResponse['messagesModel'] = []; - - foreach ($natures['natures'] as $nature) { - $messagesModels = IxbusController::getMessagesModel(['config' => $config, 'natureId' => $nature['identifiant']]); - if (!empty($messagesModels['error'])) { - return ['error' => $messagesModels['error']]; - } - $rawResponse['messagesModel'][$nature['identifiant']] = $messagesModels['messageModels']; - - $users = IxbusController::getNatureUsers(['config' => $config, 'natureId' => $nature['identifiant']]); - if (!empty($users['error'])) { - return ['error' => $users['error']]; - } - $rawResponse['users'][$nature['identifiant']] = $users['users']; - } - - return $rawResponse; - } - - public static function getNature($aArgs) { $curlResponse = CurlModel::exec([ - 'url' => rtrim($aArgs['config']['data']['url'], '/') . '/api/parapheur/v1/nature', - 'headers' => ['IXBUS_API:' . $aArgs['config']['data']['tokenAPI']], - 'method' => 'GET' - ]); + 'url' => rtrim($config['data']['url'], '/') . '/api/parapheur/v1/nature', + 'headers' => ['IXBUS_API:' . $config['data']['tokenAPI']], + 'method' => 'GET' + ]); if (!empty($curlResponse['response']['error'])) { return ['error' => $curlResponse['message']]; @@ -74,38 +50,75 @@ class IxbusController return ['natures' => $curlResponse['response']['payload']]; } - public static function getMessagesModel($aArgs) + public static function getMessageModels(Request $request, Response $response, array $args) { + $loadedXml = CoreConfigModel::getXmlLoaded(['path' => 'modules/visa/xml/remoteSignatoryBooks.xml']); + if (empty($loadedXml)) { + return $response->withStatus(500)->withJson(['errors' => 'remote signatory book: no configuration file found']); + } + $config = ['id' => (string)$loadedXml->signatoryBookEnabled]; + if ($config['id'] != 'ixbus') { + return $response->withStatus(400)->withJson(['errors' => 'ixbus is disabled']); + } + foreach ($loadedXml->signatoryBook as $value) { + if ($value->id == $config['id']) { + $config['data'] = (array)$value; + break; + } + } + if (empty($config['data']['url'])) { + return $response->withStatus(500)->withJson(['errors' => 'no ixbus url configured']); + } + $curlResponse = CurlModel::exec([ - 'url' => rtrim($aArgs['config']['data']['url'], '/') . '/api/parapheur/v1/circuit/' . $aArgs['natureId'], - 'headers' => ['IXBUS_API:' . $aArgs['config']['data']['tokenAPI']], - 'method' => 'GET' + 'method' => 'GET', + 'url' => rtrim($config['data']['url'], '/') . '/api/parapheur/v1/circuit/' . $args['natureId'], + 'headers' => ['IXBUS_API:' . $config['data']['tokenAPI']] ]); - if (!empty($curlResponse['response']['error'])) { - return ['error' => $curlResponse['message']]; + if (empty($curlResponse['response']['payload']) || !empty($curlResponse['response']['error'])) { + return $response->withStatus(500)->withJson(['errors' => $curlResponse['message'] ?? "HTTP {$curlResponse['code']} while contacting ixbus"]); } foreach ($curlResponse['response']['payload'] as $key => $value) { unset($curlResponse['response']['payload'][$key]['etapes']); unset($curlResponse['response']['payload'][$key]['options']); } - return ['messageModels' => $curlResponse['response']['payload']]; + + return $response->withJson(['messageModels' => $curlResponse['response']['payload']]); } - public static function getNatureUsers($aArgs) + public static function getNatureUsers(Request $request, Response $response, array $args) { + $loadedXml = CoreConfigModel::getXmlLoaded(['path' => 'modules/visa/xml/remoteSignatoryBooks.xml']); + if (empty($loadedXml)) { + return $response->withStatus(500)->withJson(['errors' => 'remote signatory book: no configuration file found']); + } + $config = ['id' => (string)$loadedXml->signatoryBookEnabled]; + if ($config['id'] != 'ixbus') { + return $response->withStatus(400)->withJson(['errors' => 'ixbus is disabled']); + } + foreach ($loadedXml->signatoryBook as $value) { + if ($value->id == $config['id']) { + $config['data'] = (array)$value; + break; + } + } + if (empty($config['data']['url'])) { + return $response->withStatus(500)->withJson(['errors' => 'no ixbus url configured']); + } + $curlResponse = CurlModel::exec([ - 'url' => rtrim($aArgs['config']['data']['url'], '/') . '/api/parapheur/v1/nature/' . $aArgs['natureId'] . '/redacteur', - 'headers' => ['IXBUS_API:' . $aArgs['config']['data']['tokenAPI']], + 'url' => rtrim($config['data']['url'], '/') . '/api/parapheur/v1/nature/' . $args['natureId'] . '/redacteur', + 'headers' => ['IXBUS_API:' . $config['data']['tokenAPI']], 'method' => 'GET' ]); - if (!empty($curlResponse['response']['error'])) { - return ['error' => $curlResponse['message']]; + if (empty($curlResponse['response']['payload']) || !empty($curlResponse['response']['error'])) { + return $response->withStatus(500)->withJson(['errors' => $curlResponse['message'] ?? "HTTP {$curlResponse['code']} while contacting ixbus"]); } - return ['users' => $curlResponse['response']['payload']]; + return $response->withJson(['users' => $curlResponse['response']['payload']]); } public static function sendDatas($aArgs)