Skip to content

Commit

Permalink
log_docs mark as canceled too
Browse files Browse the repository at this point in the history
  • Loading branch information
aynsix committed Apr 24, 2024
1 parent 51cc35c commit 475c52b
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -503,7 +503,7 @@ public function updateStatusRunningToCanceledSinceCreated($hour = 0)
]);
}

public function getRunningSinceCreated($hour = 0)
public function getRunningSinceCreated($hour = 0, array $action = null)
{
$rsm = new ResultSetMappingBuilder($this->_em);
$rsm->addRootEntityFromClassMetadata('Alchemy\Phrasea\Model\Entities\WorkerRunningJob', 'w');
Expand All @@ -516,6 +516,11 @@ public function getRunningSinceCreated($hour = 0)
AND (TO_SECONDS(CURRENT_TIMESTAMP()) - TO_SECONDS(w.created)) > :second'
;

if ($action != null) {
$action = join('" ,"', $action);
$sql .= ' AND work IN("' . $action . '")';
}

$q = $this->_em->createNativeQuery($sql, $rsm);
$q->setParameters([
'second' => $hour * 3600,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace Alchemy\Phrasea\WorkerManager\Controller;

use Alchemy\Phrasea\Application as PhraseaApplication;
use Alchemy\Phrasea\Application\Helper\DataboxLoggerAware;
use Alchemy\Phrasea\Controller\Controller;
use Alchemy\Phrasea\Model\Entities\WorkerRunningJob;
use Alchemy\Phrasea\Model\Repositories\WorkerRunningJobRepository;
Expand Down Expand Up @@ -32,6 +33,8 @@

class AdminConfigurationController extends Controller
{
use DataboxLoggerAware;

public function indexAction(PhraseaApplication $app, Request $request)
{
return $this->render('admin/worker-manager/index.html.twig', [
Expand Down Expand Up @@ -223,15 +226,21 @@ public function changeStatusAction(Request $request, $workerId)
$workerRunningJob = $repoWorker->find($workerId);

$workerRunningJob->setStatus($request->request->get('status'));
$finishedDate = new \DateTime('now');

if($request->request->get('finished') == '1') {
$workerRunningJob->setFinished(new \DateTime('now'))->setFlock(null);
$workerRunningJob->setFinished($finishedDate)->setFlock(null);
}

$em = $repoWorker->getEntityManager();
$em->persist($workerRunningJob);

$em->flush();

if (in_array($workerRunningJob->getWork(), ['subdefCreation', 'writeMetadatas'])) {
$this->updateLogDocs($workerRunningJob, $workerRunningJob->getStatus(), $finishedDate);
}

return $this->app->json(['success' => true]);
}

Expand All @@ -250,8 +259,16 @@ public function doChangeStatusToCanceledAction(PhraseaApplication $app, Request
{
/** @var WorkerRunningJobRepository $repoWorker */
$repoWorker = $this->app['repo.worker-running-job'];
$workerRunningJobs = $repoWorker->getRunningSinceCreated($request->request->get('hour'), ['subdefCreation', 'writeMetadatas']);

$repoWorker->updateStatusRunningToCanceledSinceCreated($request->request->get('hour'));

$finishedDate = new \DateTime('now');
/** @var WorkerRunningJob $workerRunningJob */
foreach ($workerRunningJobs as $workerRunningJob) {
$this->updateLogDocs($workerRunningJob, 'canceled', $finishedDate);
}

return $this->app->json(['success' => true]);
}

Expand Down Expand Up @@ -557,6 +574,17 @@ public function populateStatusAction(PhraseaApplication $app, Request $request)
return $repoWorkerJob->checkPopulateStatusByDataboxIds($databoxIds);
}

private function updateLogDocs(WorkerRunningJob $workerRunningJob, $status, $finishedDate)
{
$databox = $this->findDataboxById($workerRunningJob->getDataboxId());
$record = $databox->get_record($workerRunningJob->getRecordId());
$subdefName = $workerRunningJob->getWorkOn();
$action = $workerRunningJob->getWork();

$this->getDataboxLogger($databox)->initOrUpdateLogDocsFromWorker($record, $databox, $workerRunningJob, $subdefName, $action, $finishedDate, $status);

}

private function getDefaultRecordsActionsSettings()
{
return <<<EOF
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ class ControllerServiceProvider implements ControllerProviderInterface, ServiceP
public function register(Application $app)
{
$app['controller.worker.admin.configuration'] = $app->share(function (PhraseaApplication $app) {
return new AdminConfigurationController($app);
return (new AdminConfigurationController($app))
->setDataboxLoggerLocator($app['phraseanet.logger'])
;
});

// example of route to check webhook
Expand Down

0 comments on commit 475c52b

Please sign in to comment.