Completed
Pull Request — master (#4224)
by Craig
04:46
created

MigrationController   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 23
c 0
b 0
f 0
dl 0
loc 39
rs 10
wmc 6

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A migrateAction() 0 27 5
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of the Zikula package.
7
 *
8
 * Copyright Zikula Foundation - https://ziku.la/
9
 *
10
 * For the full copyright and license information, please view the LICENSE
11
 * file that was distributed with this source code.
12
 */
13
14
namespace Zikula\Bundle\CoreInstallerBundle\Controller;
15
16
use Symfony\Component\HttpFoundation\JsonResponse;
17
use Symfony\Component\HttpFoundation\Request;
18
use Zikula\Bundle\CoreInstallerBundle\Helper\MigrationHelper;
19
20
class MigrationController
21
{
22
    /**
23
     * @var MigrationHelper
24
     */
25
    private $migrationHelper;
26
27
    public function __construct(MigrationHelper $migrationHelper)
28
    {
29
        $this->migrationHelper = $migrationHelper;
30
    }
31
32
    public function migrateAction(Request $request): JsonResponse
33
    {
34
        $percentComplete = 0;
35
        if ($request->hasSession() && ($session = $request->getSession())) {
36
            if (!$session->has('user_migration_lastuid')) {
37
                $session->set('user_migration_count', $this->migrationHelper->countUnMigratedUsers());
38
                $session->set('user_migration_complete', 0);
39
                $session->set('user_migration_lastuid', 0);
40
                $session->set('user_migration_maxuid', $this->migrationHelper->getMaxUnMigratedUid());
41
            }
42
            $result = $this->migrationHelper->migrateUsers($session->get('user_migration_lastuid'));
43
            $session->set('user_migration_complete', $session->get('user_migration_complete') + $result['complete']);
44
            $session->set('user_migration_lastuid', $result['lastUid']);
45
            if ($session->get('user_migration_lastuid') === $session->get('user_migration_maxuid')) {
46
                $percentComplete = 100;
47
                // clean up
48
                $session->remove('user_migration_count');
49
                $session->remove('user_migration_complete');
50
                $session->remove('user_migration_lastuid');
51
                $session->remove('user_migration_maxuid');
52
            } else {
53
                $percentComplete = ceil(100 * $session->get('user_migration_complete') / $session->get('user_migration_count'));
54
            }
55
        }
56
57
        return new JsonResponse([
58
            'percentcomplete' => $percentComplete,
59
        ]);
60
    }
61
}
62