Merge branch 'master' of gitlab.com:Chill-Projet/chill-bundles

This commit is contained in:
2021-12-20 12:58:35 +01:00
22 changed files with 128 additions and 73 deletions

View File

@@ -20,7 +20,6 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Role\Role;
use function array_filter;
use function array_values;
@@ -69,13 +68,4 @@ class PersonApiController extends ApiController
return $this->json(array_values($addresses), Response::HTTP_OK, [], ['groups' => ['read']]);
}
protected function createEntity(string $action, Request $request): object
{
return parent::createEntity($action, $request);
// TODO temporary hack to allow creation of person with fake center
/* $centers = $this->authorizationHelper->getReachableCenters($this->getUser(),
new Role(PersonVoter::CREATE));
$person->setCenter($centers[0]); */
}
}

View File

@@ -131,6 +131,8 @@ final class PersonController extends AbstractController
->getFlashBag()->add('error', $this->translator
->trans('This form contains errors'));
} elseif ($form->isSubmitted() && $form->isValid()) {
$this->em->flush();
$this->get('session')->getFlashBag()
->add(
'success',
@@ -138,8 +140,6 @@ final class PersonController extends AbstractController
->trans('The person data has been updated')
);
$this->em->flush();
return $this->redirectToRoute('chill_person_view', [
'person_id' => $person->getId(),
]);
@@ -216,13 +216,12 @@ final class PersonController extends AbstractController
);
}
$form = $this->createForm(CreationPersonType::class, $person, [
'validation_groups' => ['create'],
])->add('editPerson', SubmitType::class, [
'label' => 'Add the person',
])->add('createPeriod', SubmitType::class, [
'label' => 'Add the person and create an accompanying period',
]);
$form = $this->createForm(CreationPersonType::class, $person)
->add('editPerson', SubmitType::class, [
'label' => 'Add the person',
])->add('createPeriod', SubmitType::class, [
'label' => 'Add the person and create an accompanying period',
]);
$form->handleRequest($request);

View File

@@ -62,9 +62,7 @@ use function in_array;
* @DiscriminatorMap(typeProperty="type", mapping={
* "person": Person::class
* })
* @PersonHasCenter(
* groups={"general", "creation"}
* )
* @PersonHasCenter
* @HouseholdMembershipSequential(
* groups={"household_memberships"}
* )
@@ -153,12 +151,8 @@ class Person implements HasCenterInterface, TrackCreationInterface, TrackUpdateI
* @var DateTime
*
* @ORM\Column(type="date", nullable=true)
* @Assert\Date(
* groups={"general", "creation"}
* )
* @Birthdate(
* groups={"general", "creation"}
* )
* @Assert\Date
* @Birthdate
*/
private $birthdate;
@@ -241,9 +235,7 @@ class Person implements HasCenterInterface, TrackCreationInterface, TrackUpdateI
* @var DateTimeImmutable
*
* @ORM\Column(type="date_immutable", nullable=true)
* @Assert\Date(
* groups={"general", "creation"}
* )
* @Assert\Date
* @Assert\GreaterThanOrEqual(propertyPath="birthdate")
* @Assert\LessThanOrEqual("today")
*/
@@ -256,8 +248,7 @@ class Person implements HasCenterInterface, TrackCreationInterface, TrackUpdateI
*
* @ORM\Column(type="text", nullable=true)
* @Assert\Email(
* checkMX=true,
* groups={"general", "creation"}
* checkMX=true
* )
*/
private $email = '';
@@ -268,12 +259,9 @@ class Person implements HasCenterInterface, TrackCreationInterface, TrackUpdateI
* @var string
*
* @ORM\Column(type="string", length=255)
* @Assert\NotBlank(
* groups={"general", "creation"}
* )
* @Assert\NotBlank
* @Assert\Length(
* max=255,
* groups={"general", "creation"}
* )
*/
private $firstName;
@@ -294,9 +282,7 @@ class Person implements HasCenterInterface, TrackCreationInterface, TrackUpdateI
* @var string
*
* @ORM\Column(type="string", length=9, nullable=true)
* @Assert\NotNull(
* groups={"general", "creation"}
* )
* @Assert\NotNull
*/
private $gender;
@@ -340,12 +326,9 @@ class Person implements HasCenterInterface, TrackCreationInterface, TrackUpdateI
* @var string
*
* @ORM\Column(type="string", length=255)
* @Assert\NotBlank(
* groups={"general", "creation"}
* )
* @Assert\NotBlank
* @Assert\Length(
* max=255,
* groups={"general", "creation"}
* )
*/
private $lastName;
@@ -373,9 +356,7 @@ class Person implements HasCenterInterface, TrackCreationInterface, TrackUpdateI
* @var DateTime
*
* @ORM\Column(type="date", nullable=true)
* @Assert\Date(
* groups={"general", "creation"}
* )
* @Assert\Date
*/
private ?DateTime $maritalStatusDate = null;
@@ -394,11 +375,9 @@ class Person implements HasCenterInterface, TrackCreationInterface, TrackUpdateI
* @ORM\Column(type="text")
* @Assert\Regex(
* pattern="/^([\+{1}])([0-9\s*]{4,20})$/",
* groups={"general", "creation"}
* )
* @PhonenumberConstraint(
* type="mobile",
* groups={"general", "creation"}
* )
*/
private string $mobilenumber = '';
@@ -436,7 +415,6 @@ class Person implements HasCenterInterface, TrackCreationInterface, TrackUpdateI
* )
* @Assert\Valid(
* traverse=true,
* groups={"general", "creation"}
* )
*/
private $otherPhoneNumbers;
@@ -455,11 +433,9 @@ class Person implements HasCenterInterface, TrackCreationInterface, TrackUpdateI
* @ORM\Column(type="text")
* @Assert\Regex(
* pattern="/^([\+{1}])([0-9\s*]{4,20})$/",
* groups={"general", "creation"}
* )
* @PhonenumberConstraint(
* type="landline",
* groups={"general", "creation"}
* )
*/
private string $phonenumber = '';

View File

@@ -21,6 +21,7 @@ use Chill\MainBundle\Form\Type\Select2CountryType;
use Chill\MainBundle\Form\Type\Select2LanguageType;
use Chill\MainBundle\Templating\TranslatableStringHelper;
use Chill\PersonBundle\Config\ConfigPersonAltNamesHelper;
use Chill\PersonBundle\Entity\Person;
use Chill\PersonBundle\Entity\PersonPhone;
use Chill\PersonBundle\Form\Type\GenderType;
use Chill\PersonBundle\Form\Type\PersonAltNameType;
@@ -234,8 +235,7 @@ class PersonType extends AbstractType
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => 'Chill\PersonBundle\Entity\Person',
'validation_groups' => ['general', 'creation'],
'data_class' => Person::class,
]);
$resolver->setRequired([

View File

@@ -13,6 +13,7 @@
openPanesInModal: false,
stickyActions: true,
useValidFrom: true,
useValidTo: true,
} %}
</div>

View File

@@ -22,10 +22,8 @@
buttonSize: 'btn-lg',
buttonText: 'Move household',
modalTitle: 'Move household',
} %}
{#
useValidFrom: true,
#}
} %}
</li>
</ul>

View File

@@ -38,6 +38,7 @@
buttonText: 'Move household',
modalTitle: 'Move household',
buttonDisplayText: false,
useValidFrom: true,
} %}
</li>
<li class="list-inline-item">

View File

@@ -63,7 +63,7 @@ class PersonJsonNormalizer implements
{
$person = $this->extractObjectToPopulate($type, $context);
if (array_key_exists('id', $data)) {
if (array_key_exists('id', $data) && null === $person) {
$person = $this->repository->find($data['id']);
if (null === $person) {

View File

@@ -29,7 +29,7 @@ class MaxHolderValidator extends ConstraintValidator
$covers = new DateRangeCovering(
self::MAX_HOLDERS,
$holders[0]->getStartDate()->getTimezone()
$holders->first()->getStartDate()->getTimezone()
);
foreach ($holders as $key => $member) {

View File

@@ -21,8 +21,6 @@ Chill\PersonBundle\Entity\PersonPhone:
phonenumber:
- Regex:
pattern: '/^([\+{1}])([0-9\s*]{4,20})$/'
groups: [ general, creation ]
message: 'Invalid phone number: it should begin with the international prefix starting with "+", hold only digits and be smaller than 20 characters. Ex: +33123456789'
- Chill\MainBundle\Validation\Constraint\PhonenumberConstraint:
type: any
groups: [ general, creation ]

View File

@@ -0,0 +1,35 @@
<?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;
final class Version20211216154008 extends AbstractMigration
{
public function down(Schema $schema): void
{
$this->addSql('ALTER TABLE chill_person_household_members DROP CONSTRAINT chill_person_household_members_check');
$this->addSql('ALTER TABLE chill_person_household_members ADD CONSTRAINT chill_person_household_members_check CHECK (startdate < enddate)');
}
public function getDescription(): string
{
return 'Allow a person to be moved into different household on same day';
}
public function up(Schema $schema): void
{
$this->addSql('ALTER TABLE chill_person_household_members DROP CONSTRAINT chill_person_household_members_check');
$this->addSql('ALTER TABLE chill_person_household_members ADD CONSTRAINT chill_person_household_members_check CHECK (startdate <= enddate)');
}
}