add ordering to social issue and social action

This commit is contained in:
Julien Fastré 2021-12-13 22:48:54 +01:00
parent 3d3cc9aeb4
commit f2fd30b690
4 changed files with 77 additions and 4 deletions

View File

@ -87,6 +87,11 @@ class SocialAction
*/ */
private $title = []; private $title = [];
/**
* @ORM\Column(type="float", name="ordering", options={"default": 0.0})
*/
private float $ordering = 0.0;
public function __construct() public function __construct()
{ {
$this->children = new ArrayCollection(); $this->children = new ArrayCollection();
@ -95,6 +100,17 @@ class SocialAction
$this->evaluations = new ArrayCollection(); $this->evaluations = new ArrayCollection();
} }
public function getOrdering(): float
{
return $this->ordering;
}
public function setOrdering(float $ordering): SocialAction
{
$this->ordering = $ordering;
return $this;
}
public function addChild(self $child): self public function addChild(self $child): self
{ {
if (!$this->children->contains($child)) { if (!$this->children->contains($child)) {

View File

@ -60,12 +60,28 @@ class SocialIssue
*/ */
private $title = []; private $title = [];
/**
* @ORM\Column(type="float", name="ordering", options={"default": 0.0})
*/
private float $ordering = 0.0;
public function __construct() public function __construct()
{ {
$this->children = new ArrayCollection(); $this->children = new ArrayCollection();
$this->socialActions = new ArrayCollection(); $this->socialActions = new ArrayCollection();
} }
public function getOrdering(): float
{
return $this->ordering;
}
public function setOrdering(float $ordering): SocialIssue
{
$this->ordering = $ordering;
return $this;
}
public function addChild(self $child): self public function addChild(self $child): self
{ {
if (!$this->children->contains($child)) { if (!$this->children->contains($child)) {

View File

@ -253,6 +253,8 @@ final class SocialWorkMetadata implements SocialWorkMetadataInterface
?string $socialActionTitle, ?string $socialActionTitle,
?string $socialActionChildTitle, ?string $socialActionChildTitle,
SocialIssue $socialIssue, SocialIssue $socialIssue,
float $orderingParent,
float $orderingChild,
?SocialAction $previousSocialAction, ?SocialAction $previousSocialAction,
?SocialAction $previousSocialActionChild ?SocialAction $previousSocialActionChild
): array { ): array {
@ -271,7 +273,8 @@ final class SocialWorkMetadata implements SocialWorkMetadataInterface
]; ];
$parentIsSame = true; $parentIsSame = true;
} else { } else {
$return['socialAction'] = $parent = (new SocialAction())->setTitle(['fr' => $socialActionTitle]); $return['socialAction'] = $parent = (new SocialAction())->setTitle(['fr' => $socialActionTitle])
->setOrdering($orderingParent);
$parent->setIssue($socialIssue); $parent->setIssue($socialIssue);
$this->entityManager->persist($parent); $this->entityManager->persist($parent);
$parentIsSame = false; $parentIsSame = false;
@ -284,7 +287,7 @@ final class SocialWorkMetadata implements SocialWorkMetadataInterface
} else { } else {
$return['socialActionChild'] = $child = (new SocialAction())->setTitle(['fr' => $socialActionChildTitle]); $return['socialActionChild'] = $child = (new SocialAction())->setTitle(['fr' => $socialActionChildTitle]);
$parent->addChild($child); $parent->addChild($child);
$child->setIssue($socialIssue); $child->setIssue($socialIssue)->setOrdering($orderingChild);
$this->entityManager->persist($child); $this->entityManager->persist($child);
} }
@ -299,6 +302,8 @@ final class SocialWorkMetadata implements SocialWorkMetadataInterface
private function handleSocialIssue( private function handleSocialIssue(
?string $socialIssueTitle, ?string $socialIssueTitle,
?string $socialIssueChildTitle, ?string $socialIssueChildTitle,
float $orderingParent,
float $orderingChild,
?SocialIssue $previousSocialIssue, ?SocialIssue $previousSocialIssue,
?SocialIssue $previousSocialIssueChild ?SocialIssue $previousSocialIssueChild
): array { ): array {
@ -310,7 +315,8 @@ final class SocialWorkMetadata implements SocialWorkMetadataInterface
]; ];
$parentIsSame = true; $parentIsSame = true;
} elseif (null !== $socialIssueTitle) { } elseif (null !== $socialIssueTitle) {
$return['socialIssue'] = $parent = (new SocialIssue())->setTitle(['fr' => $socialIssueTitle]); $return['socialIssue'] = $parent = (new SocialIssue())->setTitle(['fr' => $socialIssueTitle])
->setOrdering($orderingParent);
$this->entityManager->persist($parent); $this->entityManager->persist($parent);
$parentIsSame = false; $parentIsSame = false;
} else { } else {
@ -323,7 +329,8 @@ final class SocialWorkMetadata implements SocialWorkMetadataInterface
if ($parentIsSame && null !== $previousSocialIssueChild && ($previousSocialIssueChild->getTitle()['fr'] === $socialIssueChildTitle)) { if ($parentIsSame && null !== $previousSocialIssueChild && ($previousSocialIssueChild->getTitle()['fr'] === $socialIssueChildTitle)) {
$return['socialIssueChild'] = $previousSocialIssueChild; $return['socialIssueChild'] = $previousSocialIssueChild;
} elseif (null !== $socialIssueChildTitle) { } elseif (null !== $socialIssueChildTitle) {
$return['socialIssueChild'] = $child = (new SocialIssue())->setTitle(['fr' => $socialIssueChildTitle]); $return['socialIssueChild'] = $child = (new SocialIssue())->setTitle(['fr' => $socialIssueChildTitle])
->setOrdering($orderingChild);
$parent->addChild($child); $parent->addChild($child);
$this->entityManager->persist($child); $this->entityManager->persist($child);
} else { } else {
@ -353,10 +360,14 @@ final class SocialWorkMetadata implements SocialWorkMetadataInterface
*/ */
private function import1(int $key, array $row, array $previousRow): array private function import1(int $key, array $row, array $previousRow): array
{ {
$baseOrdering = $key * 10.0;
$socialIssues = $this $socialIssues = $this
->handleSocialIssue( ->handleSocialIssue(
$row[0], $row[0],
$row[1], $row[1],
$key + 1.0,
$key + 3.0,
$previousRow['socialIssues']['socialIssue'] ?? null, $previousRow['socialIssues']['socialIssue'] ?? null,
$previousRow['socialIssues']['socialIssueChild'] ?? null $previousRow['socialIssues']['socialIssueChild'] ?? null
); );
@ -372,6 +383,8 @@ final class SocialWorkMetadata implements SocialWorkMetadataInterface
$row[2], $row[2],
$row[3], $row[3],
$socialIssue, $socialIssue,
$key + 5.0,
$key + 7.0,
$previousRow['socialActions']['socialAction'] ?? null, $previousRow['socialActions']['socialAction'] ?? null,
$previousRow['socialActions']['socialActionChild'] ?? null $previousRow['socialActions']['socialActionChild'] ?? null
); );

View File

@ -0,0 +1,28 @@
<?php
declare(strict_types=1);
namespace Chill\Migrations\Person;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
final class Version20211213213755 extends AbstractMigration
{
public function getDescription(): string
{
return 'Add ordering to social issue and social actions';
}
public function up(Schema $schema): void
{
$this->addSql('ALTER TABLE chill_person_social_action ADD ordering DOUBLE PRECISION DEFAULT \'0\' NOT NULL');
$this->addSql('ALTER TABLE chill_person_social_issue ADD ordering DOUBLE PRECISION DEFAULT \'0\' NOT NULL');
}
public function down(Schema $schema): void
{
$this->addSql('ALTER TABLE chill_person_social_action DROP ordering');
$this->addSql('ALTER TABLE chill_person_social_issue DROP ordering');
}
}