Passed
Push — master ( c37697...7551f3 )
by Julito
11:15
created

Version20190210182615   A

Complexity

Total Complexity 12

Size/Duplication

Total Lines 63
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 33
c 1
b 0
f 1
dl 0
loc 63
rs 10
wmc 12

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getDescription() 0 3 1
D up() 0 51 10
A down() 0 2 1
1
<?php
2
3
declare(strict_types=1);
4
5
/* For licensing terms, see /license.txt */
6
7
namespace Chamilo\CoreBundle\Migrations\Schema\V200;
8
9
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo;
10
use Doctrine\DBAL\Schema\Schema;
11
12
class Version20190210182615 extends AbstractMigrationChamilo
13
{
14
    public function getDescription(): string
15
    {
16
        return 'Session changes';
17
    }
18
19
    public function up(Schema $schema): void
20
    {
21
        $table = $schema->getTable('session');
22
        if (false === $table->hasColumn('position')) {
23
            $this->addSql('ALTER TABLE session ADD COLUMN position INT DEFAULT 0 NOT NULL');
24
        } else {
25
            $this->addSql('ALTER TABLE session CHANGE position position INT DEFAULT 0 NOT NULL');
26
        }
27
28
        $this->addSql('UPDATE session SET promotion_id = NULL WHERE promotion_id = 0');
29
        if (false === $table->hasForeignKey('FK_D044D5D4139DF194')) {
30
            $this->addSql('ALTER TABLE session ADD CONSTRAINT FK_D044D5D4139DF194 FOREIGN KEY (promotion_id) REFERENCES promotion (id) ON DELETE CASCADE');
31
            $this->addSql('CREATE INDEX IDX_D044D5D4139DF194 ON session (promotion_id);');
32
        }
33
34
        if (false === $table->hasColumn('status')) {
35
            $this->addSql('ALTER TABLE session ADD COLUMN status INT NOT NULL');
36
        }
37
38
        if (false === $table->hasForeignKey('FK_D044D5D4EF87E278')) {
39
            $this->addSql('ALTER TABLE session ADD CONSTRAINT FK_D044D5D4EF87E278 FOREIGN KEY(session_admin_id) REFERENCES user(id);');
40
        }
41
42
        $this->addSql('UPDATE session_category SET date_start = NULL WHERE date_start = "0000-00-00"');
43
        $this->addSql('UPDATE session_category SET date_end = NULL WHERE date_end = "0000-00-00"');
44
45
        $table = $schema->getTable('session_rel_course_rel_user');
46
47
        if (!$table->hasColumn('progress')) {
48
            $this->addSql('ALTER TABLE session_rel_course_rel_user ADD progress INT NOT NULL');
49
        }
50
51
        if ($table->hasForeignKey('FK_720167E91D79BD3')) {
52
            $this->addSql('ALTER TABLE session_rel_course_rel_user DROP FOREIGN KEY FK_720167E91D79BD3');
53
            $this->addSql('ALTER TABLE session_rel_course_rel_user ADD CONSTRAINT FK_720167E91D79BD3 FOREIGN KEY (c_id) REFERENCES course (id) ON DELETE CASCADE');
54
        } else {
55
            $this->addSql('ALTER TABLE session_rel_course_rel_user ADD CONSTRAINT FK_720167E91D79BD3 FOREIGN KEY (c_id) REFERENCES course (id) ON DELETE CASCADE');
56
        }
57
58
        if (!$table->hasIndex('course_session_unique')) {
59
            $this->addSql(' CREATE UNIQUE INDEX course_session_unique ON session_rel_course_rel_user (session_id, c_id, user_id, status);');
60
        }
61
62
        $table = $schema->getTable('session_rel_course');
63
        if (!$table->hasIndex('UNIQ_12D110D391D79BD3')) {
64
            $this->addSql('CREATE UNIQUE INDEX course_session_unique ON session_rel_course (session_id, c_id)');
65
        }
66
67
        $table = $schema->getTable('session_rel_user');
68
        if (!$table->hasIndex('session_user_unique')) {
69
            $this->addSql('CREATE UNIQUE INDEX session_user_unique ON session_rel_user (session_id, user_id, relation_type);');
70
        }
71
    }
72
73
    public function down(Schema $schema): void
74
    {
75
    }
76
}
77