Completed
Push — 1.10.x ( 2635b5...f0080b )
by Yannick
165:55 queued 120:08
created

Version20150528103216   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 65
Duplicated Lines 100 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
dl 65
loc 65
rs 10
c 0
b 0
f 0
wmc 2
lcom 0
cbo 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
/* For licensing terms, see /license.txt */
3
4
namespace Application\Migrations\Schema\V110;
5
6
use Application\Migrations\AbstractMigrationChamilo;
7
use Doctrine\DBAL\Schema\Schema;
8
9
/**
10
 * Session date changes
11
 */
12
class Version20150528103216 extends AbstractMigrationChamilo
13
{
14
    /**
15
     * @param Schema $schema
16
     */
17
    public function up(Schema $schema)
18
    {
19
  	    $this->addSql('ALTER TABLE session ADD COLUMN access_start_date datetime');
20
        $this->addSql('ALTER TABLE session ADD COLUMN access_end_date datetime');
21
        $this->addSql('ALTER TABLE session ADD COLUMN coach_access_start_date datetime');
22
        $this->addSql('ALTER TABLE session ADD COLUMN coach_access_end_date datetime');
23
        $this->addSql('ALTER TABLE session ADD COLUMN display_start_date datetime');
24
        $this->addSql('ALTER TABLE session ADD COLUMN display_end_date datetime');
25
26
27
        $this->addSql('UPDATE session SET access_start_date = date_start');
28
        $this->addSql("UPDATE session SET access_end_date = CONVERT(CONCAT(date_end, ' 23:59:59'), DATETIME)");
29
30
        $this->addSql('UPDATE session SET coach_access_start_date = CONVERT(DATE_SUB(date_start, INTERVAL nb_days_access_before_beginning DAY), DATETIME) ');
31
        $this->addSql('UPDATE session SET coach_access_start_date = NULL WHERE nb_days_access_before_beginning = 0');
32
33
        $this->addSql('UPDATE session SET coach_access_end_date = CONVERT(DATE_ADD(date_end, INTERVAL nb_days_access_after_end DAY), DATETIME) ');
34
        $this->addSql('UPDATE session SET coach_access_end_date = NULL WHERE nb_days_access_after_end = 0');
35
36
        $this->addSql('UPDATE session SET display_start_date = access_start_date');
37
        $this->addSql('UPDATE session SET display_end_date = access_end_date');
38
39
        // Set dates to NULL
40
41
        $this->addSql('UPDATE session SET access_start_date = NULL WHERE access_start_date = "0000-00-00 00:00:00"');
42
        $this->addSql('UPDATE session SET access_end_date = NULL WHERE access_end_date = "0000-00-00 00:00:00"');
43
44
        $this->addSql('UPDATE session SET coach_access_start_date = NULL WHERE coach_access_start_date = "0000-00-00 00:00:00"');
45
        $this->addSql('UPDATE session SET coach_access_end_date = NULL WHERE coach_access_end_date = "0000-00-00 00:00:00"');
46
47
        $this->addSql('UPDATE session SET display_start_date = NULL WHERE display_start_date = "0000-00-00 00:00:00"');
48
        $this->addSql('UPDATE session SET display_end_date = NULL WHERE display_end_date = "0000-00-00 00:00:00"');
49
    }
50
51
    /**
52
     * @param Schema $schema
53
     */
54
    public function down(Schema $schema)
55
    {
56
        $this->addSql('ALTER TABLE session CREATE date_start date NOT NULL');
57
        $this->addSql('ALTER TABLE session CREATE date_end date NOT NULL');
58
        $this->addSql('ALTER TABLE session CREATE nb_days_access_before_beginning TINYINT');
59
        $this->addSql('ALTER TABLE session CREATE nb_days_access_after_end TINYINT');
60
61
        $this->addSql('UPDATE session SET date_start = access_start_date');
62
        $this->addSql('UPDATE session SET date_end = access_end_date');
63
64
        $this->addSql('UPDATE session SET nb_days_access_before_beginning = DATEDIFF(access_start_date, coach_access_start_date) WHERE access_start_date != coach_access_start_date AND coach_access_start_date IS NOT NULL');
65
        $this->addSql('UPDATE session SET nb_days_access_after_end = DATEDIFF(coach_access_end_date, coach_access_end_date) WHERE access_end_date != coach_access_end_date AND coach_access_end_date IS NOT NULL');
66
        $this->addSql('UPDATE session SET nb_days_access_before_beginning = 0 WHERE access_start_date = coach_access_start_date OR coach_access_start_date IS NULL');
67
        $this->addSql('UPDATE session SET nb_days_access_after_end = 0 WHERE access_end_date = coach_access_end_date OR coach_access_end_date IS NULL');
68
69
        $this->addSql('ALTER TABLE session DROP access_start_date');
70
        $this->addSql('ALTER TABLE session DROP access_end_date');
71
        $this->addSql('ALTER TABLE session DROP coach_access_start_date');
72
        $this->addSql('ALTER TABLE session DROP coach_access_end_date');
73
        $this->addSql('ALTER TABLE session DROP display_start_date');
74
        $this->addSql('ALTER TABLE session DROP display_end_date');
75
    }
76
}
77