2021-12-21 10:59:23 +01:00

48 lines
1.4 KiB
PHP

<?php
/**
* Chill is a software for social workers
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Chill\Migrations\Person;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
use function count;
/**
* Check if each person do not have multiple addresses with the same valideFrom.
*/
class Version20160422000000 extends AbstractMigration
{
public function down(Schema $schema): void
{
}
public function up(Schema $schema): void
{
$stmt = $this->connection->query('SELECT COUNT(*), pe.id, ad.validfrom FROM person AS pe
INNER JOIN chill_person_persons_to_addresses AS pe_ad ON pe.id = pe_ad.person_id
INNER JOIN chill_main_address AS ad ON ad.id = pe_ad.address_id
GROUP BY pe.id, ad.validfrom
HAVING COUNT(*) > 1');
$personWithTwoAddressWithSameValidFrom = $stmt->fetchAll();
foreach ($personWithTwoAddressWithSameValidFrom as $p) {
$this->warnIf(true, 'The person with id ' . $p['id'] . ' has two adresses with the same validFrom date');
}
$this->abortIf(
count($personWithTwoAddressWithSameValidFrom) !== 0,
'There exists some person with multiple adress with the same validFrom'
);
}
}