Passed
Push — master ( 6304f4...fc13ff )
by Julito
08:01
created

Version20181025064351::up()   F

Complexity

Conditions 51
Paths 0

Size

Total Lines 295
Code Lines 171

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 51
eloc 171
c 1
b 0
f 0
nc 0
nop 1
dl 0
loc 295
rs 3.3333

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
/* For licensing terms, see /license.txt */
4
5
namespace Chamilo\CoreBundle\Migrations\Schema\V200;
6
7
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo;
8
use Doctrine\DBAL\Schema\Schema;
9
10
class Version20181025064351 extends AbstractMigrationChamilo
11
{
12
    public function getDescription(): string
13
    {
14
        return 'Migrate gradebook_category';
15
    }
16
17
    public function up(Schema $schema): void
18
    {
19
        $table = $schema->getTable('gradebook_result_log');
20
        if ($table->hasColumn('id_result')) {
21
            $this->addSql('DELETE FROM gradebook_result_log WHERE id_result IS NULL');
22
            $this->addSql('ALTER TABLE gradebook_result_log CHANGE id_result result_id INT NOT NULL');
23
        }
24
25
        $this->addSql('UPDATE gradebook_result_log SET user_id = NULL WHERE user_id = 0');
26
        $this->addSql('ALTER TABLE gradebook_result_log CHANGE user_id user_id INT DEFAULT NULL');
27
28
        if (false === $table->hasForeignKey('FK_C5C4CABBA76ED395')) {
29
            $this->addSql(
30
                'ALTER TABLE gradebook_result_log ADD CONSTRAINT FK_C5C4CABBA76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE'
31
            );
32
        }
33
34
        if (false === $table->hasIndex('IDX_C5C4CABBA76ED395')) {
35
            $this->addSql('CREATE INDEX IDX_C5C4CABBA76ED395 ON gradebook_result_log (user_id)');
36
        }
37
38
        $table = $schema->getTable('gradebook_category');
39
40
        $this->addSql('ALTER TABLE gradebook_category CHANGE user_id user_id INT DEFAULT NULL');
41
        $this->addSql(
42
            'DELETE FROM gradebook_category WHERE user_id IS NOT NULL AND user_id NOT IN (SELECT id FROM user)'
43
        );
44
45
        if ($table->hasIndex('idx_gb_cat_parent')) {
46
            $this->addSql(' DROP INDEX idx_gb_cat_parent ON gradebook_category;');
47
        }
48
49
        $this->addSql('UPDATE gradebook_category SET session_id = NULL WHERE session_id = 0');
50
        $this->addSql('UPDATE gradebook_category SET parent_id = NULL WHERE parent_id = 0');
51
52
        if (false === $table->hasForeignKey('FK_96A4C705727ACA70')) {
53
            $this->addSql('ALTER TABLE gradebook_category ADD CONSTRAINT FK_96A4C705727ACA70 FOREIGN KEY (parent_id) REFERENCES gradebook_category (id);');
54
        }
55
56
        if (false === $table->hasForeignKey('FK_96A4C705613FECDF')) {
57
            $this->addSql('ALTER TABLE gradebook_category ADD CONSTRAINT FK_96A4C705613FECDF FOREIGN KEY (session_id) REFERENCES session (id);');
58
        }
59
60
        if (false === $table->hasIndex('IDX_96A4C705613FECDF')) {
61
            $this->addSql('CREATE INDEX IDX_96A4C705613FECDF ON gradebook_category (session_id)');
62
        }
63
64
        if (false === $table->hasIndex('IDX_96A4C705727ACA70')) {
65
            $this->addSql('CREATE INDEX IDX_96A4C705727ACA70 ON gradebook_category (parent_id);');
66
        }
67
68
        if (false === $table->hasColumn('c_id')) {
69
            $this->addSql('ALTER TABLE gradebook_category ADD c_id INT DEFAULT NULL');
70
            $this->addSql('UPDATE gradebook_category SET c_id = (SELECT id FROM course WHERE code = course_code)');
71
            $this->addSql('ALTER TABLE gradebook_category DROP course_code');
72
            $this->addSql(
73
                'ALTER TABLE gradebook_category ADD CONSTRAINT FK_96A4C70591D79BD3 FOREIGN KEY (c_id) REFERENCES course (id);'
74
            );
75
            $this->addSql('CREATE INDEX IDX_96A4C70591D79BD3 ON gradebook_category (c_id);');
76
        }
77
        if (false === $table->hasColumn('depends')) {
78
            $this->addSql('ALTER TABLE gradebook_category ADD depends LONGTEXT DEFAULT NULL');
79
        }
80
        if (false === $table->hasColumn('minimum_to_validate')) {
81
            $this->addSql('ALTER TABLE gradebook_category ADD minimum_to_validate INT DEFAULT NULL');
82
        }
83
        if (false === $table->hasColumn('gradebooks_to_validate_in_dependence')) {
84
            $this->addSql('ALTER TABLE gradebook_category ADD gradebooks_to_validate_in_dependence INT DEFAULT NULL');
85
        }
86
87
        if (false === $table->hasForeignKey('FK_96A4C705A76ED395')) {
88
            $this->addSql(
89
                'ALTER TABLE gradebook_category ADD CONSTRAINT FK_96A4C705A76ED395 FOREIGN KEY (user_id) REFERENCES user (id)'
90
            );
91
        }
92
        if (false === $table->hasIndex('IDX_96A4C705A76ED395')) {
93
            $this->addSql('CREATE INDEX IDX_96A4C705A76ED395 ON gradebook_category (user_id)');
94
        }
95
96
        // Evaluation.
97
        $table = $schema->getTable('gradebook_evaluation');
98
        if (false === $table->hasColumn('c_id')) {
99
            $this->addSql('ALTER TABLE gradebook_evaluation ADD c_id INT DEFAULT NULL');
100
            $this->addSql('UPDATE gradebook_evaluation SET c_id = (SELECT id FROM course WHERE code = course_code)');
101
            $this->addSql('ALTER TABLE gradebook_evaluation DROP course_code');
102
            $this->addSql(
103
                'ALTER TABLE gradebook_evaluation ADD CONSTRAINT FK_DDDED80491D79BD3 FOREIGN KEY (c_id) REFERENCES course (id);'
104
            );
105
            $this->addSql('CREATE INDEX IDX_DDDED80491D79BD3 ON gradebook_evaluation (c_id)');
106
            //$this->addSql('ALTER TABLE gradebook_evaluation RENAME INDEX fk_ddded80491d79bd3 TO IDX_DDDED80491D79BD3;');
107
        }
108
        if (false === $table->hasIndex('idx_ge_cat')) {
109
            $this->addSql('CREATE INDEX idx_ge_cat ON gradebook_evaluation (category_id)');
110
        }
111
112
        if (false === $table->hasForeignKey('FK_DDDED80412469DE2')) {
113
            $this->addSql('ALTER TABLE gradebook_evaluation ADD CONSTRAINT FK_DDDED80412469DE2 FOREIGN KEY (category_id) REFERENCES gradebook_category (id);');
114
        }
115
116
        if (false === $table->hasColumn('best_score')) {
117
            $this->addSql('ALTER TABLE gradebook_evaluation ADD best_score DOUBLE PRECISION DEFAULT NULL');
118
        }
119
        if (false === $table->hasColumn('average_score')) {
120
            $this->addSql('ALTER TABLE gradebook_evaluation ADD average_score DOUBLE PRECISION DEFAULT NULL');
121
        }
122
        if (false === $table->hasColumn('score_weight')) {
123
            $this->addSql('ALTER TABLE gradebook_evaluation ADD score_weight DOUBLE PRECISION DEFAULT NULL');
124
        }
125
        if (false === $table->hasColumn('user_score_list')) {
126
            $this->addSql(
127
                'ALTER TABLE gradebook_evaluation ADD user_score_list LONGTEXT DEFAULT NULL COMMENT \'(DC2Type:array)\''
128
            );
129
        }
130
        $this->addSql('ALTER TABLE gradebook_evaluation CHANGE user_id user_id INT DEFAULT NULL');
131
132
        if (false === $table->hasForeignKey('FK_DDDED804A76ED395')) {
133
            $this->addSql(
134
                'ALTER TABLE gradebook_evaluation ADD CONSTRAINT FK_DDDED804A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE'
135
            );
136
        }
137
138
        if (false === $table->hasIndex('IDX_DDDED804A76ED395')) {
139
            $this->addSql('CREATE INDEX IDX_DDDED804A76ED395 ON gradebook_evaluation (user_id)');
140
        }
141
142
        $table = $schema->getTable('gradebook_link');
143
        if (false === $table->hasColumn('c_id')) {
144
            $this->addSql('ALTER TABLE gradebook_link ADD c_id INT DEFAULT NULL');
145
            $this->addSql('UPDATE gradebook_link SET c_id = (SELECT id FROM course WHERE code = course_code)');
146
            $this->addSql('ALTER TABLE gradebook_link DROP course_code');
147
            $this->addSql(
148
                'ALTER TABLE gradebook_link ADD CONSTRAINT FK_4F0F595F91D79BD3 FOREIGN KEY (c_id) REFERENCES course (id);'
149
            );
150
            $this->addSql('CREATE INDEX IDX_4F0F595F91D79BD3 ON gradebook_link (c_id);');
151
        }
152
153
        if (false === $table->hasColumn('best_score')) {
154
            $this->addSql('ALTER TABLE gradebook_link ADD best_score DOUBLE PRECISION DEFAULT NULL');
155
        }
156
        if (false === $table->hasColumn('average_score')) {
157
            $this->addSql(
158
                'ALTER TABLE gradebook_link ADD average_score DOUBLE PRECISION DEFAULT NULL'
159
            );
160
        }
161
162
        if (false === $table->hasColumn('score_weight')) {
163
            $this->addSql('ALTER TABLE gradebook_link ADD score_weight DOUBLE PRECISION DEFAULT NULL');
164
        }
165
166
        if (false === $table->hasColumn('user_score_list')) {
167
            $this->addSql(
168
                'ALTER TABLE gradebook_link ADD user_score_list LONGTEXT DEFAULT NULL COMMENT \'(DC2Type:array)\''
169
            );
170
        }
171
172
        if (false === $table->hasIndex('idx_gl_cat')) {
173
            $this->addSql('CREATE INDEX idx_gl_cat ON gradebook_link (category_id)');
174
        }
175
176
        $this->addSql('ALTER TABLE gradebook_link CHANGE user_id user_id INT DEFAULT NULL');
177
178
        if (false === $table->hasForeignKey('FK_4F0F595FA76ED395')) {
179
            $this->addSql(
180
                'ALTER TABLE gradebook_link ADD CONSTRAINT FK_4F0F595FA76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE'
181
            );
182
        }
183
184
        if (false === $table->hasIndex('IDX_4F0F595FA76ED395')) {
185
            $this->addSql('CREATE INDEX IDX_4F0F595FA76ED395 ON gradebook_link (user_id)');
186
        }
187
188
        $this->addSql('ALTER TABLE gradebook_link CHANGE category_id category_id INT DEFAULT NULL;');
189
        $this->addSql('UPDATE gradebook_link SET category_id = NULL WHERE category_id = 0');
190
191
        if (false === $table->hasForeignKey('FK_4F0F595F12469DE2')) {
192
            $this->addSql('ALTER TABLE gradebook_link ADD CONSTRAINT FK_4F0F595F12469DE2 FOREIGN KEY (category_id) REFERENCES gradebook_category (id);');
193
        }
194
195
        $table = $schema->getTable('gradebook_result');
196
        if ($table->hasIndex('idx_gb_uid_eid')) {
197
            $this->addSql('');
198
        }
199
200
        if (false === $table->hasIndex('IDX_B88AEB67456C5646')) {
201
            $this->addSql('CREATE INDEX IDX_B88AEB67456C5646 ON gradebook_result (evaluation_id);');
202
        }
203
204
        $this->addSql('ALTER TABLE gradebook_result CHANGE evaluation_id evaluation_id INT DEFAULT NULL;');
205
        $this->addSql('UPDATE gradebook_result SET evaluation_id = NULL WHERE evaluation_id = 0');
206
207
        if (false === $table->hasForeignKey('FK_B88AEB67456C5646')) {
208
            $this->addSql('ALTER TABLE gradebook_result ADD CONSTRAINT FK_B88AEB67456C5646 FOREIGN KEY (evaluation_id) REFERENCES gradebook_evaluation (id);');
209
        }
210
211
        $this->addSql('ALTER TABLE gradebook_result CHANGE user_id user_id INT DEFAULT NULL');
212
        $this->addSql('UPDATE gradebook_result SET user_id = NULL WHERE user_id = 0');
213
214
        if (false === $table->hasForeignKey('FK_B88AEB67A76ED395')) {
215
            $this->addSql(
216
                'ALTER TABLE gradebook_result ADD CONSTRAINT FK_B88AEB67A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE'
217
            );
218
        }
219
220
        if (false === $table->hasIndex('IDX_B88AEB67A76ED395')) {
221
            $this->addSql('CREATE INDEX IDX_B88AEB67A76ED395 ON gradebook_result (user_id)');
222
        }
223
224
        $table = $schema->getTable('gradebook_certificate');
225
        $this->addSql('ALTER TABLE gradebook_certificate CHANGE cat_id cat_id INT DEFAULT NULL;');
226
        $this->addSql('UPDATE gradebook_certificate SET cat_id = NULL WHERE cat_id = 0');
227
228
        if (false === $table->hasForeignKey('FK_650669DE6ADA943')) {
229
            if ($table->hasIndex('idx_gradebook_certificate_category_id')) {
230
                $this->addSql('DROP INDEX idx_gradebook_certificate_category_id ON gradebook_certificate;');
231
            }
232
233
            if ($table->hasIndex('idx_gradebook_certificate_category_id_user_id')) {
234
                $this->addSql('DROP INDEX idx_gradebook_certificate_category_id_user_id ON gradebook_certificate;');
235
            }
236
            $this->addSql('ALTER TABLE gradebook_certificate ADD CONSTRAINT FK_650669DE6ADA943 FOREIGN KEY (cat_id) REFERENCES gradebook_category (id);');
237
        }
238
239
        if (false === $table->hasColumn('downloaded_at')) {
240
            $this->addSql('ALTER TABLE gradebook_certificate ADD downloaded_at DATETIME DEFAULT NULL;');
241
            $this->addSql(
242
                'UPDATE gradebook_certificate gc SET downloaded_at = (
243
                        SELECT value from extra_field e
244
                        INNER JOIN extra_field_values v on v.field_id = e.id
245
                        WHERE variable = "downloaded_at" and extra_field_type = 11 and item_id = gc.id
246
                    )'
247
            );
248
        }
249
250
        $this->addSql('ALTER TABLE gradebook_certificate CHANGE user_id user_id INT DEFAULT NULL');
251
252
        if (false === $table->hasForeignKey('FK_650669DA76ED395')) {
253
            $this->addSql(
254
                'ALTER TABLE gradebook_certificate ADD CONSTRAINT FK_650669DA76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE'
255
            );
256
        }
257
258
        if (false === $table->hasIndex('IDX_650669DE6ADA943')) {
259
            $this->addSql('CREATE INDEX IDX_650669DE6ADA943 ON gradebook_certificate (cat_id);');
260
        }
261
262
        $table = $schema->hasTable('gradebook_result_attempt');
263
        if (false === $table) {
264
            $this->addSql(
265
                'CREATE TABLE gradebook_result_attempt (id INT AUTO_INCREMENT NOT NULL, comment LONGTEXT DEFAULT NULL, score DOUBLE PRECISION DEFAULT NULL, result_id INT NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB ROW_FORMAT = DYNAMIC;'
266
            );
267
        }
268
269
        $table = $schema->getTable('gradebook_linkeval_log');
270
271
        $this->addSql('UPDATE gradebook_linkeval_log SET user_id_log = NULL WHERE user_id_log = 0');
272
        $this->addSql('ALTER TABLE gradebook_linkeval_log CHANGE user_id_log user_id_log INT DEFAULT NULL');
273
274
        if (false === $table->hasForeignKey('FK_1F554C7474C99BA2')) {
275
            $this->addSql(
276
                'ALTER TABLE gradebook_linkeval_log ADD CONSTRAINT FK_1F554C7474C99BA2 FOREIGN KEY (user_id_log) REFERENCES user (id) ON DELETE CASCADE'
277
            );
278
        }
279
280
        if (false === $table->hasIndex('IDX_1F554C7474C99BA2')) {
281
            $this->addSql('CREATE INDEX IDX_1F554C7474C99BA2 ON gradebook_linkeval_log (user_id_log)');
282
        }
283
284
        $table = $schema->getTable('gradebook_score_log');
285
286
        $this->addSql('ALTER TABLE gradebook_score_log CHANGE user_id user_id INT DEFAULT NULL');
287
        $this->addSql('ALTER TABLE gradebook_score_log CHANGE category_id category_id INT DEFAULT NULL;');
288
289
        if (false === $table->hasForeignKey('FK_640C6449A76ED395')) {
290
            $this->addSql(
291
                'ALTER TABLE gradebook_score_log ADD CONSTRAINT FK_640C6449A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE'
292
            );
293
        }
294
295
        if (false === $table->hasIndex('IDX_640C644912469DE2')) {
296
            $this->addSql('CREATE INDEX IDX_640C644912469DE2 ON gradebook_score_log (category_id);');
297
        }
298
299
        $table = $schema->hasTable('gradebook_comment');
300
        if (false === $table) {
301
            $this->addSql('CREATE TABLE gradebook_comment (id BIGINT AUTO_INCREMENT NOT NULL, user_id INT DEFAULT NULL, gradebook_id INT DEFAULT NULL, comment LONGTEXT NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, INDEX IDX_C3B70763A76ED395 (user_id), INDEX IDX_C3B70763AD3ED51C (gradebook_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC;');
302
            $this->addSql('ALTER TABLE gradebook_comment ADD CONSTRAINT FK_C3B70763A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE;');
303
            $this->addSql('ALTER TABLE gradebook_comment ADD CONSTRAINT FK_C3B70763AD3ED51C FOREIGN KEY (gradebook_id) REFERENCES gradebook_category (id) ON DELETE CASCADE;');
304
        }
305
306
        $table = $schema->getTable('gradebook_score_display');
307
        $this->addSql('ALTER TABLE gradebook_score_display CHANGE category_id category_id INT DEFAULT NULL;');
308
        $this->addSql('UPDATE gradebook_score_display SET  category_id = NULL WHERE category_id = 0');
309
310
        if (false === $table->hasForeignKey('FK_61F7DC8412469DE2')) {
311
            $this->addSql('ALTER TABLE gradebook_score_display ADD CONSTRAINT FK_61F7DC8412469DE2 FOREIGN KEY (category_id) REFERENCES gradebook_category (id);');
312
        }
313
    }
314
315
    public function down(Schema $schema): void
316
    {
317
    }
318
}
319