Passed
Push — master ( b9a35c...ab20b0 )
by Julito
15:41
created

Version20201216110722::getDescription()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 3
rs 10
1
<?php
2
3
/* For licensing terms, see /license.txt */
4
5
namespace Chamilo\CoreBundle\Migrations\Schema\V200;
6
7
use Chamilo\CoreBundle\Entity\Course;
8
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo;
9
use Chamilo\CoreBundle\Repository\Node\CourseRepository;
10
use Chamilo\CoreBundle\Repository\Node\UserRepository;
11
use Chamilo\CoreBundle\Repository\SessionRepository;
12
use Chamilo\CourseBundle\Entity\CAttendance;
13
use Chamilo\CourseBundle\Entity\CAttendanceCalendar;
14
use Chamilo\CourseBundle\Repository\CAttendanceRepository;
15
use Chamilo\CourseBundle\Repository\CGroupRepository;
16
use Chamilo\Kernel;
17
use Doctrine\DBAL\Connection;
18
use Doctrine\DBAL\Schema\Schema;
19
20
final class Version20201216110722 extends AbstractMigrationChamilo
21
{
22
    public function getDescription(): string
23
    {
24
        return 'Migrate c_attendance';
25
    }
26
27
    public function up(Schema $schema): void
28
    {
29
        $container = $this->getContainer();
30
        $doctrine = $container->get('doctrine');
31
        $em = $doctrine->getManager();
32
        /** @var Connection $connection */
33
        $connection = $em->getConnection();
34
35
        $attendanceRepo = $container->get(CAttendanceRepository::class);
36
        //$attendanceRepo = $container->get(CAttendanceCalendar::class);
37
        $courseRepo = $container->get(CourseRepository::class);
38
        $sessionRepo = $container->get(SessionRepository::class);
39
        $groupRepo = $container->get(CGroupRepository::class);
40
        $userRepo = $container->get(UserRepository::class);
41
42
        /** @var Kernel $kernel */
43
        $kernel = $container->get('kernel');
44
        $rootPath = $kernel->getProjectDir();
45
        $admin = $this->getAdmin();
46
47
        $q = $em->createQuery('SELECT c FROM Chamilo\CoreBundle\Entity\Course c');
48
        /** @var Course $course */
49
        foreach ($q->toIterable() as $course) {
50
            $courseId = $course->getId();
51
            $course = $courseRepo->find($courseId);
52
53
            // c_thematic.
54
            $sql = "SELECT * FROM c_attendance WHERE c_id = $courseId
55
                    ORDER BY iid";
56
            $result = $connection->executeQuery($sql);
57
            $items = $result->fetchAllAssociative();
58
            foreach ($items as $itemData) {
59
                $id = $itemData['iid'];
60
                /** @var CAttendance $resource */
61
                $resource = $attendanceRepo->find($id);
62
                if ($resource->hasResourceNode()) {
63
                    continue;
64
                }
65
66
                $result = $this->fixItemProperty(
67
                    'attendance',
68
                    $attendanceRepo,
69
                    $course,
70
                    $admin,
71
                    $resource,
72
                    $course
73
                );
74
75
                if (false === $result) {
76
                    continue;
77
                }
78
79
                $em->persist($resource);
80
                $em->flush();
81
            }
82
        }
83
    }
84
}
85