This commit is contained in:
Julien Fastré 2022-03-25 13:39:27 +01:00
parent c99a967fb9
commit e68c12e0e7
7 changed files with 65 additions and 61 deletions

View File

@ -126,7 +126,7 @@ class ActivityType extends AbstractType
if ($activityType->isVisible('socialIssues') && $accompanyingPeriod) { if ($activityType->isVisible('socialIssues') && $accompanyingPeriod) {
$builder->add('socialIssues', HiddenType::class, [ $builder->add('socialIssues', HiddenType::class, [
'required' => $activityType->getSocialIssuesVisible() === 2 'required' => $activityType->getSocialIssuesVisible() === 2,
]); ]);
$builder->get('socialIssues') $builder->get('socialIssues')
->addModelTransformer(new CallbackTransformer( ->addModelTransformer(new CallbackTransformer(
@ -154,7 +154,7 @@ class ActivityType extends AbstractType
if ($activityType->isVisible('socialActions') && $accompanyingPeriod) { if ($activityType->isVisible('socialActions') && $accompanyingPeriod) {
$builder->add('socialActions', HiddenType::class, [ $builder->add('socialActions', HiddenType::class, [
'required' => $activityType->getSocialActionsVisible() === 2 'required' => $activityType->getSocialActionsVisible() === 2,
]); ]);
$builder->get('socialActions') $builder->get('socialActions')
->addModelTransformer(new CallbackTransformer( ->addModelTransformer(new CallbackTransformer(
@ -344,8 +344,8 @@ class ActivityType extends AbstractType
if ($activityType->isVisible('location')) { if ($activityType->isVisible('location')) {
$builder->add('location', HiddenType::class, [ $builder->add('location', HiddenType::class, [
'required' => $activityType->getLocationVisible() === 2 'required' => $activityType->getLocationVisible() === 2,
]) ])
->get('location') ->get('location')
->addModelTransformer(new CallbackTransformer( ->addModelTransformer(new CallbackTransformer(
static function (?Location $location): string { static function (?Location $location): string {

View File

@ -48,7 +48,7 @@ class AccompanyingCourseMenuBuilder implements LocalMenuBuilderInterface
'accompanying_period_id' => $period->getId(), 'accompanying_period_id' => $period->getId(),
], ]) ], ])
->setExtras(['order' => 35]); ->setExtras(['order' => 35]);
*/ */
} }
} }

View File

@ -232,7 +232,6 @@ class PersonResource implements TrackCreationInterface, TrackUpdateInterface
} }
if (null !== $this->person && $this->person === $this->personOwner) { if (null !== $this->person && $this->person === $this->personOwner) {
$context->buildViolation('You cannot associate a resource with the same person') $context->buildViolation('You cannot associate a resource with the same person')
->addViolation(); ->addViolation();
} }

View File

@ -102,7 +102,7 @@ class AccompanyingCourseMenuBuilder implements LocalMenuBuilderInterface
'route' => 'chill_person_accompanying_course_close', 'route' => 'chill_person_accompanying_course_close',
'routeParameters' => [ 'routeParameters' => [
'accompanying_period_id' => $period->getId(), 'accompanying_period_id' => $period->getId(),
],]) ], ])
->setExtras(['order' => 99999]); ->setExtras(['order' => 99999]);
} }
} }
@ -113,10 +113,9 @@ class AccompanyingCourseMenuBuilder implements LocalMenuBuilderInterface
'route' => 'chill_person_accompanying_course_reopen', 'route' => 'chill_person_accompanying_course_reopen',
'routeParameters' => [ 'routeParameters' => [
'accompanying_period_id' => $period->getId(), 'accompanying_period_id' => $period->getId(),
],]) ], ])
->setExtras(['order' => 99998]); ->setExtras(['order' => 99998]);
} }
} }
public static function getMenuIds(): array public static function getMenuIds(): array

View File

@ -40,7 +40,7 @@ class AccompanyingPeriodVoter extends AbstractChillVoter implements ProvideRoleH
public const CREATE = 'CHILL_PERSON_ACCOMPANYING_PERIOD_CREATE'; public const CREATE = 'CHILL_PERSON_ACCOMPANYING_PERIOD_CREATE';
/** /**
* role to DELETE the course * role to DELETE the course.
* *
* Will be true only for the creator, and if the course is still at DRAFT step. * Will be true only for the creator, and if the course is still at DRAFT step.
*/ */
@ -58,6 +58,14 @@ class AccompanyingPeriodVoter extends AbstractChillVoter implements ProvideRoleH
*/ */
public const FULL = 'CHILL_PERSON_ACCOMPANYING_PERIOD_FULL'; public const FULL = 'CHILL_PERSON_ACCOMPANYING_PERIOD_FULL';
/**
* Reopen a closed course.
*
* This forward to the EDIT role, without taking into account that the course
* is closed
*/
public const RE_OPEN_COURSE = 'CHILL_PERSON_ACCOMPANYING_PERIOD_REOPEN';
public const SEE = 'CHILL_PERSON_ACCOMPANYING_PERIOD_SEE'; public const SEE = 'CHILL_PERSON_ACCOMPANYING_PERIOD_SEE';
/** /**
@ -67,14 +75,6 @@ class AccompanyingPeriodVoter extends AbstractChillVoter implements ProvideRoleH
*/ */
public const SEE_DETAILS = 'CHILL_PERSON_ACCOMPANYING_PERIOD_SEE_DETAILS'; public const SEE_DETAILS = 'CHILL_PERSON_ACCOMPANYING_PERIOD_SEE_DETAILS';
/**
* Reopen a closed course.
*
* This forward to the EDIT role, without taking into account that the course
* is closed
*/
public const RE_OPEN_COURSE = 'CHILL_PERSON_ACCOMPANYING_PERIOD_REOPEN';
public const TOGGLE_CONFIDENTIAL = 'CHILL_PERSON_ACCOMPANYING_PERIOD_TOGGLE_CONFIDENTIAL'; public const TOGGLE_CONFIDENTIAL = 'CHILL_PERSON_ACCOMPANYING_PERIOD_TOGGLE_CONFIDENTIAL';
/** /**
@ -154,8 +154,8 @@ class AccompanyingPeriodVoter extends AbstractChillVoter implements ProvideRoleH
} }
if (in_array($attribute, [ if (in_array($attribute, [
self::SEE, self::SEE_DETAILS, self::EDIT self::SEE, self::SEE_DETAILS, self::EDIT,
])) { ], true)) {
if ($subject->getUser() === $token->getUser()) { if ($subject->getUser() === $token->getUser()) {
return true; return true;
} }

View File

@ -198,7 +198,7 @@ class ThirdParty implements TrackCreationInterface, TrackUpdateInterface
private ?string $email = null; private ?string $email = null;
/** /**
* @ORM\Column(name="firstname", type="text", options={"default":""}) * @ORM\Column(name="firstname", type="text", options={"default": ""})
* @Groups({"read", "write", "docgen:read", "docgen:read:3party:parent"}) * @Groups({"read", "write", "docgen:read", "docgen:read:3party:parent"})
*/ */
private string $firstname = ''; private string $firstname = '';

View File

@ -1,5 +1,12 @@
<?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); declare(strict_types=1);
namespace Chill\Migrations\ThirdParty; namespace Chill\Migrations\ThirdParty;
@ -9,6 +16,45 @@ use Doctrine\Migrations\AbstractMigration;
final class Version20220324175549 extends AbstractMigration final class Version20220324175549 extends AbstractMigration
{ {
public function down(Schema $schema): void
{
$this->addSql("
CREATE OR REPLACE FUNCTION chill_3party.canonicalize() RETURNS TRIGGER
LANGUAGE plpgsql
AS
$$
BEGIN
NEW.canonicalized =
UNACCENT(
LOWER(
NEW.name ||
CASE WHEN COALESCE(NEW.name_company, '') <> '' THEN ' ' ELSE '' END ||
COALESCE(NEW.name_company, '') ||
CASE WHEN COALESCE(NEW.acronym, '') <> '' THEN ' ' ELSE '' END ||
COALESCE(NEW.acronym, '')
)
)
;
return NEW;
END
$$
");
$this->addSql("
UPDATE chill_3party.third_party
SET canonicalized =
UNACCENT(
LOWER(
name ||
CASE WHEN COALESCE(name_company, '') <> '' THEN ' ' ELSE '' END ||
COALESCE(name_company, '') ||
CASE WHEN COALESCE(acronym, '') <> '' THEN ' ' ELSE '' END ||
COALESCE(acronym, '')
)
)
");
}
public function getDescription(): string public function getDescription(): string
{ {
return 'indexing of firstname on third parties'; return 'indexing of firstname on third parties';
@ -55,45 +101,5 @@ final class Version20220324175549 extends AbstractMigration
END END
$$ $$
"); ");
}
public function down(Schema $schema): void
{
$this->addSql("
CREATE OR REPLACE FUNCTION chill_3party.canonicalize() RETURNS TRIGGER
LANGUAGE plpgsql
AS
$$
BEGIN
NEW.canonicalized =
UNACCENT(
LOWER(
NEW.name ||
CASE WHEN COALESCE(NEW.name_company, '') <> '' THEN ' ' ELSE '' END ||
COALESCE(NEW.name_company, '') ||
CASE WHEN COALESCE(NEW.acronym, '') <> '' THEN ' ' ELSE '' END ||
COALESCE(NEW.acronym, '')
)
)
;
return NEW;
END
$$
");
$this->addSql("
UPDATE chill_3party.third_party
SET canonicalized =
UNACCENT(
LOWER(
name ||
CASE WHEN COALESCE(name_company, '') <> '' THEN ' ' ELSE '' END ||
COALESCE(name_company, '') ||
CASE WHEN COALESCE(acronym, '') <> '' THEN ' ' ELSE '' END ||
COALESCE(acronym, '')
)
)
");
} }
} }