diff --git a/lib/Alchemy/Phrasea/WorkerManager/Controller/AdminConfigurationController.php b/lib/Alchemy/Phrasea/WorkerManager/Controller/AdminConfigurationController.php index 332fa78761..487410c6f0 100644 --- a/lib/Alchemy/Phrasea/WorkerManager/Controller/AdminConfigurationController.php +++ b/lib/Alchemy/Phrasea/WorkerManager/Controller/AdminConfigurationController.php @@ -17,12 +17,14 @@ use Alchemy\Phrasea\WorkerManager\Form\WorkerSearchengineType; use Alchemy\Phrasea\WorkerManager\Form\WorkerValidationReminderType; use Alchemy\Phrasea\WorkerManager\Queue\AMQPConnection; use Alchemy\Phrasea\WorkerManager\Queue\MessagePublisher; +use Alchemy\Phrasea\WorkerManager\Worker\RecordMoverWorker; use Doctrine\ORM\OptimisticLockException; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\Form\Form; use Symfony\Component\Form\FormInterface; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; @@ -400,6 +402,35 @@ class AdminConfigurationController extends Controller ]); } + public function recordMoverFacilityAction(PhraseaApplication $app, Request $request) + { + $ret = ['tasks' => []]; + $job = new RecordMoverWorker($app); + switch ($request->get('ACT')) { + case 'PLAYTEST': + $sxml = simplexml_load_string($request->get('xml')); + if (isset($sxml->tasks->task)) { + foreach ($sxml->tasks->task as $sxtask) { + $ret['tasks'][] = $job->calcSQL($app, $sxtask, true); + } + } + break; + case 'CALCTEST': + case 'CALCSQL': + $sxml = simplexml_load_string($request->get('xml')); + if (isset($sxml->tasks->task)) { + foreach ($sxml->tasks->task as $sxtask) { + $ret['tasks'][] = $job->calcSQL($app, $sxtask, false); + } + } + break; + default: + throw new NotFoundHttpException('Route not found.'); + } + + return $app->json($ret); + } + public function populateStatusAction(PhraseaApplication $app, Request $request) { $databoxIds = $request->get('sbasIds'); diff --git a/lib/Alchemy/Phrasea/WorkerManager/Provider/ControllerServiceProvider.php b/lib/Alchemy/Phrasea/WorkerManager/Provider/ControllerServiceProvider.php index 290cff39b3..8ffae4951e 100644 --- a/lib/Alchemy/Phrasea/WorkerManager/Provider/ControllerServiceProvider.php +++ b/lib/Alchemy/Phrasea/WorkerManager/Provider/ControllerServiceProvider.php @@ -109,6 +109,10 @@ class ControllerServiceProvider implements ControllerProviderInterface, ServiceP ->method('GET|POST') ->bind('worker_admin_recordMover'); + $controllers->match('/record-mover/facility', 'controller.worker.admin.configuration:recordMoverFacilityAction') + ->method('POST') + ->bind('worker_admin_recordMover_facility'); + /** @uses AdminConfigurationController::queueMonitorAction */ $controllers->match('/queue-monitor', 'controller.worker.admin.configuration:queueMonitorAction') ->method('GET') diff --git a/lib/Alchemy/Phrasea/WorkerManager/Worker/RecordMoverWorker.php b/lib/Alchemy/Phrasea/WorkerManager/Worker/RecordMoverWorker.php index 8f612a7577..590c636197 100644 --- a/lib/Alchemy/Phrasea/WorkerManager/Worker/RecordMoverWorker.php +++ b/lib/Alchemy/Phrasea/WorkerManager/Worker/RecordMoverWorker.php @@ -216,7 +216,7 @@ class RecordMoverWorker implements WorkerInterface return $this; } - private function calcSQL(Application $app, $sxtask, $playTest = false) + public function calcSQL(Application $app, $sxtask, $playTest = false) { $sbas_id = (int) $sxtask['sbas_id']; diff --git a/templates/web/admin/worker-manager/worker_record_mover.html.twig b/templates/web/admin/worker-manager/worker_record_mover.html.twig index c9594dff1c..afd2c34b08 100644 --- a/templates/web/admin/worker-manager/worker_record_mover.html.twig +++ b/templates/web/admin/worker-manager/worker_record_mover.html.twig @@ -1,3 +1,55 @@ +{% block css %} + +{% endblock %} +