mirror of
				https://gitlab.com/Chill-Projet/chill-bundles.git
				synced 2025-10-31 09:18:24 +00:00 
			
		
		
		
	Compare commits
	
		
			16 Commits
		
	
	
		
			v4.5.1
			...
			features/a
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 7045e643a8 | |||
| ebb2479966 | |||
| 3f005aaf8f | |||
| 736b2255ab | |||
| a0ff6bbe03 | |||
| 081c1c5271 | |||
| d31175f9ef | |||
| 2744e4995c | |||
| f382131f3c | |||
| 886924a7e5 | |||
| 5ef5b65d90 | |||
| 3169da20ad | |||
| 3c7b67604c | |||
| 4e8dd3b189 | |||
| 4cca148f69 | |||
| 34f22d237e | 
| @@ -6,10 +6,12 @@ use Chill\MainBundle\CRUD\Controller\ApiController; | ||||
| use Chill\MainBundle\Entity\Address; | ||||
| use Chill\MainBundle\Serializer\Model\Collection; | ||||
| use Chill\PersonBundle\Entity\Person; | ||||
| use Chill\PersonBundle\Entity\Household\Household; | ||||
| use Chill\PersonBundle\Repository\Household\HouseholdRepository; | ||||
| use Symfony\Component\HttpFoundation\Request; | ||||
| use Symfony\Component\HttpFoundation\Response; | ||||
| use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; | ||||
| use Symfony\Component\Routing\Annotation\Route; | ||||
|  | ||||
| class HouseholdApiController extends ApiController | ||||
| { | ||||
| @@ -50,4 +52,45 @@ class HouseholdApiController extends ApiController | ||||
|         return $this->json($collection, Response::HTTP_OK, [], | ||||
|             [ "groups" => ["read"]]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @Route("/api/1.0/person/address/suggest/by-household/{household_id}.{_format}", | ||||
|      *  name="chill_person_address_suggest_by_household", | ||||
|      *  requirements={ | ||||
|      *     "_format"="json" | ||||
|      *     } | ||||
|      *  ) | ||||
|      *  @ParamConverter("household", options={"id" = "household_id"}) | ||||
|      */ | ||||
|     public function suggestAddressByHousehold(Household $household, string $_format) | ||||
|     { | ||||
|         // TODO add acl | ||||
|  | ||||
|         $addresses = []; | ||||
|         // collect addresses from location in courses | ||||
|         foreach ($household->getCurrentPersons() as $person) { | ||||
|             foreach ($person->getAccompanyingPeriodParticipations() as $participation) { | ||||
|                 if (null !== $participation->getAccompanyingPeriod()->getAddressLocation()) { | ||||
|                     $a = $participation->getAccompanyingPeriod()->getAddressLocation(); | ||||
|                     $addresses[$a->getId()] = $a; | ||||
|                 } | ||||
|                 if (null !== $personLocation = $participation | ||||
|                     ->getAccompanyingPeriod()->getPersonLocation()) { | ||||
|                     $a = $personLocation->getCurrentHouseholdAddress(); | ||||
|                     if (null !== $a) { | ||||
|                         $addresses[$a->getId()] = $a; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         // remove the actual address | ||||
|         $actual = $household->getCurrentAddress(); | ||||
|         if (null !== $actual) { | ||||
|             $addresses = \array_filter($addresses, fn($a) => $a !== $actual); | ||||
|         } | ||||
|  | ||||
|         return $this->json(\array_values($addresses), Response::HTTP_OK, [], | ||||
|             [ 'groups' => [ 'read' ] ]); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -18,12 +18,15 @@ | ||||
| namespace Chill\PersonBundle\Controller; | ||||
|  | ||||
| use Chill\PersonBundle\Security\Authorization\PersonVoter; | ||||
| use Chill\PersonBundle\Entity\Person; | ||||
| use Chill\MainBundle\Security\Authorization\AuthorizationHelper; | ||||
| use Symfony\Component\Security\Core\Role\Role; | ||||
| use Chill\MainBundle\CRUD\Controller\ApiController; | ||||
| use Symfony\Component\HttpFoundation\Request; | ||||
| use Symfony\Component\HttpFoundation\Response; | ||||
| use Chill\MainBundle\Entity\Address; | ||||
| use Symfony\Component\Routing\Annotation\Route; | ||||
| use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; | ||||
|  | ||||
| class PersonApiController extends ApiController | ||||
| { | ||||
| @@ -54,4 +57,41 @@ class PersonApiController extends ApiController | ||||
|         return $this->addRemoveSomething('address', $id, $request, $_format, 'address', Address::class, [ 'groups' => [ 'read' ] ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @Route("/api/1.0/person/address/suggest/by-person/{person_id}.{_format}", | ||||
|      *  name="chill_person_address_suggest_by_person", | ||||
|      *  requirements={ | ||||
|      *     "_format"="json" | ||||
|      *     } | ||||
|      *  ) | ||||
|      *  @ParamConverter("person", options={"id" = "person_id"}) | ||||
|      */ | ||||
|     public function suggestAddress(Person $person, Request $request, string $_format): Response | ||||
|     { | ||||
|         $this->denyAccessUnlessGranted(PersonVoter::SEE, $person); | ||||
|  | ||||
|         $addresses = []; | ||||
|         // collect addresses from location in courses | ||||
|         foreach ($person->getAccompanyingPeriodParticipations() as $participation) { | ||||
|             if (null !== $participation->getAccompanyingPeriod()->getAddressLocation()) { | ||||
|                 $a = $participation->getAccompanyingPeriod()->getAddressLocation(); | ||||
|                 $addresses[$a->getId()] = $a; | ||||
|             } | ||||
|             if (null !== $personLocation = $participation | ||||
|                 ->getAccompanyingPeriod()->getPersonLocation()) { | ||||
|                 $a = $personLocation->getCurrentHouseholdAddress(); | ||||
|                 if (null !== $a) { | ||||
|                     $addresses[$a->getId()] = $a; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         // remove the actual address | ||||
|         $actual = $person->getCurrentHouseholdAddress(); | ||||
|         if (null !== $actual) { | ||||
|             $addresses = \array_filter($addresses, fn($a) => $a !== $actual); | ||||
|         } | ||||
|  | ||||
|         return $this->json(\array_values($addresses), Response::HTTP_OK, [], [ 'groups' => [ 'read' ]]); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -0,0 +1,46 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Chill\PersonBundle\Controller; | ||||
|  | ||||
| use Chill\MainBundle\Pagination\PaginatorFactory; | ||||
| use Chill\MainBundle\Serializer\Model\Collection; | ||||
| use Chill\PersonBundle\Entity\SocialWork\SocialAction; | ||||
| use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; | ||||
| use Symfony\Component\HttpFoundation\Response; | ||||
| use Symfony\Component\Routing\Annotation\Route; | ||||
| use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; | ||||
|  | ||||
| class SocialWorkEvaluationApiController extends AbstractController | ||||
| { | ||||
|     private PaginatorFactory $paginatorFactory; | ||||
|  | ||||
|     /** | ||||
|      * @param PaginatorFactory $paginatorFactory | ||||
|      */ | ||||
|     public function __construct(PaginatorFactory $paginatorFactory) | ||||
|     { | ||||
|         $this->paginatorFactory = $paginatorFactory; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @Route("/api/1.0/person/social-work/evaluation/by-social-action/{action_id}.json", | ||||
|      *     name="chill_person_evaluation_index_by_social_action", | ||||
|      *     requirements={ | ||||
|      *          "_format": "json" | ||||
|      *     } | ||||
|      * ) | ||||
|      * @ParamConverter("action", options={"id": "action_id"}) | ||||
|      * @param SocialAction $action | ||||
|      * @return Response | ||||
|      */ | ||||
|     public function listEvaluationBySocialAction(SocialAction $action): Response | ||||
|     { | ||||
|         $pagination = $this->paginatorFactory->create($action->getEvaluations()->count()); | ||||
|  | ||||
|         $evaluations = $action->getEvaluations()->slice($pagination->getCurrentPageFirstItemNumber(), | ||||
|             $pagination->getItemsPerPage()); | ||||
|         $collection = new Collection($evaluations, $pagination); | ||||
|  | ||||
|         return $this->json($collection, Response::HTTP_OK, [], [ 'groups' => [ 'read' ]]); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,140 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Chill\PersonBundle\DataFixtures\ORM; | ||||
|  | ||||
| use Chill\PersonBundle\Entity\AccompanyingPeriod; | ||||
| use Chill\PersonBundle\Entity\SocialWork\Evaluation; | ||||
| use Chill\PersonBundle\Entity\SocialWork\SocialAction; | ||||
| use Chill\PersonBundle\Entity\SocialWork\SocialIssue; | ||||
| use Chill\PersonBundle\Repository\AccompanyingPeriodRepository; | ||||
| use Chill\PersonBundle\Repository\SocialWork\EvaluationRepository; | ||||
| use Chill\PersonBundle\Repository\SocialWork\SocialActionRepository; | ||||
| use Chill\PersonBundle\Repository\SocialWork\SocialIssueRepository; | ||||
| use Doctrine\Persistence\ObjectManager; | ||||
| use Chill\PersonBundle\DataFixtures\ORM\LoadPeople; | ||||
|  | ||||
| class LoadAccompanyingPeriodWork extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Doctrine\Common\DataFixtures\DependentFixtureInterface | ||||
| { | ||||
|     private AccompanyingPeriodRepository $periodRepository; | ||||
|     private EvaluationRepository $evaluationRepository; | ||||
|  | ||||
|     /** | ||||
|      * @var Evaluation[]|array | ||||
|      */ | ||||
|     private array $cacheEvaluations = []; | ||||
|  | ||||
|     /** | ||||
|      * @param AccompanyingPeriodRepository $periodRepository | ||||
|      */ | ||||
|     public function __construct( | ||||
|         AccompanyingPeriodRepository $periodRepository, | ||||
|         EvaluationRepository $evaluationRepository | ||||
|     ) { | ||||
|         $this->periodRepository = $periodRepository; | ||||
|         $this->evaluationRepository = $evaluationRepository; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @inheritDoc | ||||
|      */ | ||||
|     public function getDependencies() | ||||
|     { | ||||
|         return [ | ||||
|             LoadPeople::class | ||||
|         ]; | ||||
|     } | ||||
|  | ||||
|     private function getRandomAction(SocialIssue $socialIssue): ?SocialAction | ||||
|     { | ||||
|         $actions = $socialIssue->getRecursiveSocialActions()->toArray(); | ||||
|  | ||||
|         if (0 === count($actions)) { | ||||
|             return null; | ||||
|         } | ||||
|  | ||||
|         return $actions[\array_rand($actions)]; | ||||
|     } | ||||
|  | ||||
|     private function getRandomEvaluation(): Evaluation | ||||
|     { | ||||
|        if (0 === count($this->cacheEvaluations)) { | ||||
|            $this->cacheEvaluations = $this->evaluationRepository | ||||
|                ->findAll(); | ||||
|        } | ||||
|  | ||||
|        return $this->cacheEvaluations[\array_rand($this->cacheEvaluations)]; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @inheritDoc | ||||
|      */ | ||||
|     public function load(ObjectManager $manager) | ||||
|     { | ||||
|         // load all the period which are confirmed | ||||
|         $periods = $this->periodRepository | ||||
|             ->findBy(['step' => AccompanyingPeriod::STEP_CONFIRMED]) | ||||
|             ; | ||||
|  | ||||
|         $i = 0; | ||||
|         while (null !== $period = \array_pop($periods)) { | ||||
|            /** @var AccompanyingPeriod $period */ | ||||
|            $i++; | ||||
|            if (0 === $i % 15) { | ||||
|                $manager->flush(); | ||||
|            } | ||||
|            if (0 === $period->getSocialIssues()->count()) { | ||||
|                continue; | ||||
|            } | ||||
|            $work = new AccompanyingPeriod\AccompanyingPeriodWork(); | ||||
|            $action = $this->getRandomAction($period->getSocialIssues()->first()); | ||||
|  | ||||
|            if (null !== $action) { | ||||
|                $work | ||||
|                    ->setAccompanyingPeriod($period) | ||||
|                    ->setSocialAction($action) | ||||
|                    ->setStartDate(new \DateTimeImmutable('today')) | ||||
|                    ->addPerson($period->getPersons()->first()) | ||||
|                    ->setCreatedAt(new \DateTimeImmutable()) | ||||
|                    ->setCreatedBy($this->getReference('center a_social')) | ||||
|                    ->setUpdatedAt(new \DateTimeImmutable()) | ||||
|                    ->setUpdatedBy($this->getReference('center a_social')); | ||||
|                $manager->persist($work); | ||||
|  | ||||
|                if ($action->getEvaluations()->count() > 0) { | ||||
|                    $ev = $action->getEvaluations()->first(); | ||||
|                    $evaluation = new AccompanyingPeriod\AccompanyingPeriodWorkEvaluation(); | ||||
|                    $evaluation->setAccompanyingPeriodWork($work) | ||||
|                        ->setEvaluation($ev); | ||||
|                    $manager->persist($evaluation); | ||||
|                } | ||||
|            } | ||||
|  | ||||
|            // 1 of 10, force an evaluation | ||||
|            if (0 === $i % 10) { | ||||
|                $evaluation = $this->getRandomEvaluation(); | ||||
|                $action = $evaluation->getSocialAction(); | ||||
|                $issue = $action->getIssue(); | ||||
|  | ||||
|                $period->addSocialIssue($issue); | ||||
|                $work | ||||
|                    ->setAccompanyingPeriod($period) | ||||
|                    ->setSocialAction($action) | ||||
|                    ->setStartDate(new \DateTimeImmutable('today')) | ||||
|                    ->addPerson($period->getPersons()->first()) | ||||
|                    ->setCreatedAt(new \DateTimeImmutable()) | ||||
|                    ->setCreatedBy($this->getReference('center a_social')) | ||||
|                    ->setUpdatedAt(new \DateTimeImmutable()) | ||||
|                    ->setUpdatedBy($this->getReference('center a_social')) | ||||
|                ; | ||||
|                $manager->persist($work); | ||||
|                $ev = new AccompanyingPeriod\AccompanyingPeriodWorkEvaluation(); | ||||
|                $ev->setAccompanyingPeriodWork($work) | ||||
|                    ->setEvaluation($evaluation); | ||||
|                $manager->persist($ev); | ||||
|            } | ||||
|  | ||||
|         } | ||||
|  | ||||
|         $manager->flush(); | ||||
|     } | ||||
| } | ||||
| @@ -21,15 +21,25 @@ | ||||
|  | ||||
| namespace Chill\PersonBundle\DataFixtures\ORM; | ||||
|  | ||||
| use Chill\MainBundle\Entity\PostalCode; | ||||
| use Chill\PersonBundle\Entity\AccompanyingPeriod; | ||||
| use Chill\PersonBundle\Entity\SocialWork\SocialIssue; | ||||
| use Chill\ThirdPartyBundle\Entity\ThirdParty; | ||||
| use Doctrine\Common\DataFixtures\AbstractFixture; | ||||
| use Doctrine\Common\DataFixtures\OrderedFixtureInterface; | ||||
| use Doctrine\Persistence\ObjectManager; | ||||
| use Chill\PersonBundle\Entity\Person; | ||||
| use Faker\Factory; | ||||
| use Faker\Generator; | ||||
| use Nelmio\Alice\Loader\NativeLoader; | ||||
| use Nelmio\Alice\ObjectSet; | ||||
| use Symfony\Component\DependencyInjection\ContainerAwareInterface; | ||||
| use Chill\MainBundle\DataFixtures\ORM\LoadPostalCodes; | ||||
| use Chill\MainBundle\Entity\Address; | ||||
| use Chill\MainBundle\Doctrine\Model\Point; | ||||
| use Symfony\Component\Workflow\Registry; | ||||
| use Symfony\Component\Workflow\Workflow; | ||||
| use Chill\PersonBundle\Repository\SocialWork\SocialIssueRepository; | ||||
|  | ||||
| /** | ||||
|  * Load people into database | ||||
| @@ -39,14 +49,21 @@ use Chill\MainBundle\Doctrine\Model\Point; | ||||
|  */ | ||||
| class LoadPeople extends AbstractFixture implements OrderedFixtureInterface, ContainerAwareInterface | ||||
| { | ||||
|  | ||||
|     use \Symfony\Component\DependencyInjection\ContainerAwareTrait; | ||||
|  | ||||
|     protected $faker; | ||||
|     protected Generator $faker; | ||||
|  | ||||
|     public function __construct() | ||||
|     protected Registry $workflowRegistry; | ||||
|  | ||||
|     protected SocialIssueRepository $socialIssueRepository; | ||||
|  | ||||
|     protected array $cacheSocialIssues = array(); | ||||
|  | ||||
|     public function __construct(Registry $workflowRegistry, SocialIssueRepository $socialIssueRepository) | ||||
|     { | ||||
|         $this->faker = \Faker\Factory::create('fr_FR'); | ||||
|         $this->faker = Factory::create('fr_FR'); | ||||
|         $this->workflowRegistry = $workflowRegistry; | ||||
|         $this->socialIssueRepository = $socialIssueRepository; | ||||
|     } | ||||
|  | ||||
|     public function prepare() | ||||
| @@ -165,7 +182,7 @@ class LoadPeople extends AbstractFixture implements OrderedFixtureInterface, Con | ||||
|                 'Birthdate' => "1960-10-12", | ||||
|                 'PlaceOfBirth' => "Ottignies Louvain-La-Neuve", | ||||
|                 'Gender' => Person::MALE_GENDER, | ||||
|                 'Email' => "Email d'un ami: roger@tt.com", | ||||
|                 'Email' => "roger@yopmail.com", | ||||
|                 'CountryOfBirth' => 'BE', | ||||
|                 'Nationality' => 'BE', | ||||
|                 'CFData' => array(), | ||||
| @@ -173,6 +190,15 @@ class LoadPeople extends AbstractFixture implements OrderedFixtureInterface, Con | ||||
|             ), $specific); | ||||
|     } | ||||
|  | ||||
|     private function getRandomSocialIssue(): SocialIssue | ||||
|     { | ||||
|         if (0 === count($this->cacheSocialIssues)) { | ||||
|             $this->cacheSocialIssues = $this->socialIssueRepository->findAll(); | ||||
|         } | ||||
|  | ||||
|         return $this->cacheSocialIssues[\array_rand($this->cacheSocialIssues)]; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * create a new person from array data | ||||
|      * | ||||
| @@ -183,14 +209,21 @@ class LoadPeople extends AbstractFixture implements OrderedFixtureInterface, Con | ||||
|     private function addAPerson(array $person, ObjectManager $manager) | ||||
|     { | ||||
|         $p = new Person(); | ||||
|         $p->addAccompanyingPeriod( | ||||
|             new AccompanyingPeriod( | ||||
|                 (new \DateTime()) | ||||
|                     ->sub( | ||||
|                         new \DateInterval('P'.\random_int(0, 180).'D') | ||||
|                     ) | ||||
|             ) | ||||
|         $accompanyingPeriod = new AccompanyingPeriod( | ||||
|             (new \DateTime()) | ||||
|                 ->sub( | ||||
|                     new \DateInterval('P' . \random_int(0, 180) . 'D') | ||||
|                 ) | ||||
|         ); | ||||
|         $p->addAccompanyingPeriod($accompanyingPeriod); | ||||
|         $accompanyingPeriod->addSocialIssue($this->getRandomSocialIssue()); | ||||
|  | ||||
|         if (\random_int(0, 10) > 3) { | ||||
|             $accompanyingPeriod->setAddressLocation($this->createAddress()); | ||||
|             $manager->persist($accompanyingPeriod->getAddressLocation()); | ||||
|             $workflow = $this->workflowRegistry->get($accompanyingPeriod); | ||||
|             $workflow->apply($accompanyingPeriod, 'confirm'); | ||||
|         } | ||||
|  | ||||
|         foreach ($person as $key => $value) { | ||||
|             switch ($key) { | ||||
| @@ -235,6 +268,29 @@ class LoadPeople extends AbstractFixture implements OrderedFixtureInterface, Con | ||||
|         echo "add person'".$p->__toString()."'\n"; | ||||
|     } | ||||
|  | ||||
|     private function createAddress(): Address | ||||
|     { | ||||
|         $loader = new NativeLoader(); | ||||
|         $objectSet = $loader->loadData([ | ||||
|             Address::class => [ | ||||
|                 'address' => [ | ||||
|                     'street' => '<fr_FR:streetName()>', | ||||
|                     'streetNumber' => '<fr_FR:buildingNumber()>', | ||||
|                     'validFrom' => '<dateTimeBetween(\'-1 year\', \'now\')>', | ||||
|                     'postCode' => $this->getPostalCode() | ||||
|                 ], | ||||
|             ], | ||||
|         ]); | ||||
|  | ||||
|         return $objectSet->getObjects()['address']; | ||||
|     } | ||||
|  | ||||
|     private function getPostalCode(): PostalCode | ||||
|     { | ||||
|         $ref = LoadPostalCodes::$refs[\array_rand(LoadPostalCodes::$refs)]; | ||||
|  | ||||
|         return $this->getReference($ref); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Create a random point | ||||
|   | ||||
| @@ -1,82 +0,0 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * Chill is a suite of a modules, Chill is a software for social workers | ||||
|  * Copyright (C) 2021, Champs Libres Cooperative SCRLFS, <http://www.champs-libres.coop> | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  *  it under the terms of the GNU Affero General Public License as | ||||
|  * published by the Free Software Foundation, either version 3 of the | ||||
|  *  License, or (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU Affero General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Affero General Public License | ||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
|  | ||||
| namespace Chill\PersonBundle\DataFixtures\ORM; | ||||
|  | ||||
| use Doctrine\Common\DataFixtures\AbstractFixture; | ||||
| use Doctrine\Common\DataFixtures\OrderedFixtureInterface; | ||||
| use Doctrine\Persistence\ObjectManager; | ||||
|  | ||||
| use Chill\PersonBundle\Entity\SocialWork\SocialAction; | ||||
|  | ||||
| /** | ||||
|  * Create social actions | ||||
|  * | ||||
|  */ | ||||
| class LoadSocialActions extends AbstractFixture implements OrderedFixtureInterface | ||||
| { | ||||
|     public function getOrder() | ||||
|     { | ||||
|         return 10020; | ||||
|     } | ||||
|  | ||||
|     public static $socialActions = [ | ||||
|         'social_action_info_conseil' => [ | ||||
|             'title' => [ | ||||
|                 'fr' => 'Informer, conseiller' | ||||
|             ], | ||||
|             'issue' => 'social_issue_prev_prot' | ||||
|         ], | ||||
|         'social_action_instruire' => [ | ||||
|             'title' => [ | ||||
|                 'fr' => 'Instruire l\'imprime unique pour des impayés' | ||||
|             ], | ||||
|             'issue' => 'social_issue_prev_prot' | ||||
|         ], | ||||
|         'social_action_MASP' => [ | ||||
|             'title' => [ | ||||
|                 'fr' => 'MASP' | ||||
|             ], | ||||
|             'issue' => 'social_issue_diff_fin' | ||||
|         ], | ||||
|         'social_action_protection_enfant' => [ | ||||
|             'title' => [ | ||||
|                 'fr' => 'Protection Enfant confié dans le cadre judiciaire' | ||||
|             ], | ||||
|             'issue' => 'social_issue_enfant_protection' | ||||
|         ], | ||||
|     ]; | ||||
|  | ||||
|     public function load(ObjectManager $manager) | ||||
|     { | ||||
|         foreach (static::$socialActions as $ref => $new) { | ||||
|             $socialAction = new SocialAction(); | ||||
|             $socialAction->setTitle($new['title']); | ||||
|             $socialAction->setIssue($this->getReference($new['issue'])); | ||||
|             $socialAction->setDefaultNotificationDelay(new \DateInterval('P5D')); | ||||
|  | ||||
|             $manager->persist($socialAction); | ||||
|             $this->addReference($ref, $socialAction); | ||||
|             print("Adding SocialAction '".$new['title']['fr']."'\n"); | ||||
|         } | ||||
|  | ||||
|         $manager->flush(); | ||||
|     } | ||||
| } | ||||
| @@ -1,70 +0,0 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * Chill is a suite of a modules, Chill is a software for social workers | ||||
|  * Copyright (C) 2021, Champs Libres Cooperative SCRLFS, <http://www.champs-libres.coop> | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  *  it under the terms of the GNU Affero General Public License as | ||||
|  * published by the Free Software Foundation, either version 3 of the | ||||
|  *  License, or (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU Affero General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Affero General Public License | ||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
|  | ||||
| namespace Chill\PersonBundle\DataFixtures\ORM; | ||||
|  | ||||
| use Doctrine\Common\DataFixtures\AbstractFixture; | ||||
| use Doctrine\Common\DataFixtures\OrderedFixtureInterface; | ||||
| use Doctrine\Persistence\ObjectManager; | ||||
|  | ||||
| use Chill\PersonBundle\Entity\SocialWork\Goal; | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Create social goals | ||||
|  * | ||||
|  */ | ||||
| class LoadSocialGoals extends AbstractFixture implements OrderedFixtureInterface | ||||
| { | ||||
|     public function getOrder() | ||||
|     { | ||||
|         return 10030; | ||||
|     } | ||||
|  | ||||
|     public static $socialGoals = [ | ||||
|         'social_goal_instuire_dossier' => [ | ||||
|             'title' => [ | ||||
|                 'fr' => 'Instruire le dossier de surendettement' | ||||
|             ], | ||||
|             'action' => 'social_action_MASP' | ||||
|         ], | ||||
|         'social_goal_proteger' => [ | ||||
|             'title' => [ | ||||
|                 'fr' => 'Protéger via une assistance educative placement' | ||||
|             ], | ||||
|             'action' => 'social_action_protection_enfant' | ||||
|         ], | ||||
|     ]; | ||||
|  | ||||
|     public function load(ObjectManager $manager) | ||||
|     { | ||||
|         foreach (static::$socialGoals as $ref => $new) { | ||||
|             $socialGoal = new Goal(); | ||||
|             $socialGoal->setTitle($new['title']); | ||||
|             $socialGoal->addSocialAction($this->getReference($new['action'])); | ||||
|  | ||||
|             $manager->persist($socialGoal); | ||||
|             $this->addReference($ref, $socialGoal); | ||||
|             print("Adding SocialGoal '".$new['title']['fr']."'\n"); | ||||
|         } | ||||
|  | ||||
|         $manager->flush(); | ||||
|     } | ||||
| } | ||||
| @@ -1,90 +0,0 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * Chill is a suite of a modules, Chill is a software for social workers | ||||
|  * Copyright (C) 2021, Champs Libres Cooperative SCRLFS, <http://www.champs-libres.coop> | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  *  it under the terms of the GNU Affero General Public License as | ||||
|  * published by the Free Software Foundation, either version 3 of the | ||||
|  *  License, or (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU Affero General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Affero General Public License | ||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
|  | ||||
| namespace Chill\PersonBundle\DataFixtures\ORM; | ||||
|  | ||||
| use Doctrine\Common\DataFixtures\AbstractFixture; | ||||
| use Doctrine\Common\DataFixtures\OrderedFixtureInterface; | ||||
| use Doctrine\Persistence\ObjectManager; | ||||
|  | ||||
| use Chill\PersonBundle\Entity\SocialWork\SocialIssue; | ||||
|  | ||||
| /** | ||||
|  * Create social issues | ||||
|  * | ||||
|  */ | ||||
| class LoadSocialIssues extends AbstractFixture implements OrderedFixtureInterface | ||||
| { | ||||
|     public function getOrder() | ||||
|     { | ||||
|         return 10010; | ||||
|     } | ||||
|  | ||||
|     public static $socialIssues = [ | ||||
|         'social_issue_diff_fin_or_admin' => [ | ||||
|             'title' => [ | ||||
|                 'fr' => 'ADULTE - DIFFICULTES FINANCIERES ET/OU ADMINISTRATIVES' | ||||
|             ] | ||||
|         ], | ||||
|         'social_issue_prev_prot' => [ | ||||
|             'title' => [ | ||||
|                 'fr' => 'ADULTE PREVENTION/PROTECTION' | ||||
|             ], | ||||
|             'parent' => 'social_issue_diff_fin_or_admin' | ||||
|         ], | ||||
|         'social_issue_diff_fin' => [ | ||||
|             'title' => [ | ||||
|                 'fr' => 'Difficulté financière' | ||||
|             ], | ||||
|             'parent' => 'social_issue_diff_fin_or_admin' | ||||
|         ], | ||||
|         'social_issue_enfant_famille' => [ | ||||
|             'title' => [ | ||||
|                 'fr' => 'Enfant / famille' | ||||
|             ] | ||||
|         ], | ||||
|         'social_issue_enfant_protection' => [ | ||||
|             'title' => [ | ||||
|                 'fr' => 'enfant - protection' | ||||
|             ], | ||||
|             'parent' => 'social_issue_enfant_famille' | ||||
|         ], | ||||
|     ]; | ||||
|  | ||||
|     public function load(ObjectManager $manager) | ||||
|     { | ||||
|         foreach (static::$socialIssues as $ref => $new) { | ||||
|             $socialIssue = new SocialIssue(); | ||||
|             $socialIssue->setTitle($new['title']); | ||||
|  | ||||
|             if ( array_key_exists('parent', $new)) { | ||||
|                 $parentRef = $new['parent']; | ||||
|                 $parent = $this->getReference($parentRef); | ||||
|                 $socialIssue->setParent($parent); | ||||
|             } | ||||
|  | ||||
|             $manager->persist($socialIssue); | ||||
|             $this->addReference($ref, $socialIssue); | ||||
|             print("Adding SocialIssue '".$new['title']['fr']."'\n"); | ||||
|         } | ||||
|  | ||||
|         $manager->flush(); | ||||
|     } | ||||
| } | ||||
| @@ -1,94 +0,0 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * Chill is a suite of a modules, Chill is a software for social workers | ||||
|  * Copyright (C) 2021, Champs Libres Cooperative SCRLFS, <http://www.champs-libres.coop> | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  *  it under the terms of the GNU Affero General Public License as | ||||
|  * published by the Free Software Foundation, either version 3 of the | ||||
|  *  License, or (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU Affero General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Affero General Public License | ||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
|  | ||||
| namespace Chill\PersonBundle\DataFixtures\ORM; | ||||
|  | ||||
| use Doctrine\Common\DataFixtures\AbstractFixture; | ||||
| use Doctrine\Common\DataFixtures\OrderedFixtureInterface; | ||||
| use Doctrine\Persistence\ObjectManager; | ||||
|  | ||||
| use Chill\PersonBundle\Entity\SocialWork\Result; | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Create social results | ||||
|  * | ||||
|  */ | ||||
| class LoadSocialResults extends AbstractFixture implements OrderedFixtureInterface | ||||
| { | ||||
|     public function getOrder() | ||||
|     { | ||||
|         return 10040; | ||||
|     } | ||||
|  | ||||
|     public static $socialResults = [ | ||||
|         'social_result_FSL_acces' => [ | ||||
|             'title' => [ | ||||
|                 'fr' => 'FSL - accès cautionnement' | ||||
|             ], | ||||
|             'action' => 'social_action_instruire' | ||||
|         ], | ||||
|         'social_result_FSL_maintien' => [ | ||||
|             'title' => [ | ||||
|                 'fr' => 'FSL maintien - impayés de loyer' | ||||
|             ], | ||||
|             'action' => 'social_action_MASP' | ||||
|         ], | ||||
|         'social_result_soutien_parental' => [ | ||||
|             'title' => [ | ||||
|                 'fr' => 'Soutien parental' | ||||
|             ], | ||||
|             // 'action' => 'social_action_protection_enfant', (via le goal) | ||||
|             'goal' => 'social_goal_proteger' | ||||
|         ], | ||||
|         'social_result_accompagnement_mineur' => [ | ||||
|             'title' => [ | ||||
|                 'fr' => 'Accompagnement du mineur' | ||||
|             ], | ||||
|             // 'action' => 'social_action_protection_enfant', (via le goal) | ||||
|             'goal' => 'social_goal_proteger', | ||||
|         ], | ||||
|     ]; | ||||
|  | ||||
|     public function load(ObjectManager $manager) | ||||
|     { | ||||
|         foreach (static::$socialResults as $ref => $new) { | ||||
|             $socialResult = new Result(); | ||||
|             $socialResult->setTitle($new['title']); | ||||
|  | ||||
|             if ( array_key_exists('action', $new)) { | ||||
|                 $action = $this->getReference($new['action']); | ||||
|                 $socialResult->addSocialAction($action); | ||||
|             } | ||||
|  | ||||
|             if ( array_key_exists('goal', $new)) { | ||||
|                 $goal = $this->getReference($new['goal']); | ||||
|                 $socialResult->addGoal($goal); | ||||
|             } | ||||
|  | ||||
|  | ||||
|             $manager->persist($socialResult); | ||||
|             $this->addReference($ref, $socialResult); | ||||
|             print("Adding SocialResult '".$new['title']['fr']."'\n"); | ||||
|         } | ||||
|  | ||||
|         $manager->flush(); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,44 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Chill\PersonBundle\DataFixtures\ORM; | ||||
|  | ||||
| use Chill\PersonBundle\Service\Import\SocialWorkMetadata; | ||||
| use Doctrine\Persistence\ObjectManager; | ||||
| use League\Csv\Reader; | ||||
|  | ||||
| class LoadSocialWorkMetadata extends \Doctrine\Bundle\FixturesBundle\Fixture implements \Doctrine\Common\DataFixtures\OrderedFixtureInterface | ||||
| { | ||||
|     private SocialWorkMetadata $importer; | ||||
|  | ||||
|     /** | ||||
|      * @param SocialWorkMetadata $importer | ||||
|      */ | ||||
|     public function __construct(SocialWorkMetadata $importer) | ||||
|     { | ||||
|         $this->importer = $importer; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @inheritDoc | ||||
|      */ | ||||
|     public function load(ObjectManager $manager) | ||||
|     { | ||||
|         try { | ||||
|             $csv = Reader::createFromPath(__DIR__.'/data/social_work_metadata.csv'); | ||||
|         } catch (Throwable $e) { | ||||
|             throw new Exception('Error while loading CSV.',0, $e); | ||||
|         } | ||||
|  | ||||
|         $csv->setDelimiter(";"); | ||||
|  | ||||
|         $this->importer->import($csv); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @inheritDoc | ||||
|      */ | ||||
|     public function getOrder() | ||||
|     { | ||||
|         return 9500; | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,420 @@ | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;ACCES AUX DROITS;Informer, conseiller;;;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;ACCES AUX DROITS;Aider à l'inclusion numérique;;;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;ACCES AUX DROITS;Demander une aide juridictionnelle;;;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;ACCES AUX DROITS;Aider à l'ouverture aux droits;;;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;ACCES AUX DROITS;Demander une aide alimentaire;;;;Demande aide alimentaire | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Informer, conseiller;;;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Demander une aide pour des impayés;;Objectif : Centre Communal d’Action Sociale;;Demande aide impayé CCAS | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Demander une aide pour des impayés;;Objectif : CAF/MSA - Secours d’urgence;;Demande aide impayé CAF | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Demander une aide pour des impayés;;Objectif : CAF/MSA - Aide financière;;Demande aide impayé CAF | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Demander une aide pour des impayés;;Objectif : Caisse Primaire d’Assurance Maladie;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Demander une aide pour des impayés;;Objectif : FSL Maintien - Impayés de loyer;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Demander une aide pour des impayés;;Objectif : FSL Maintien - Énergie / Fluides;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Demander une aide pour des impayés;;Objectif : FSL Maintien - Impayés télécommunication;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Demander une aide pour des impayés;;Objectif : FSL Maintien - Impayés aire d'accueil GDV ;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Demander une aide pour des impayés;;Objectif : FSL Maintien - Lié à la COVID;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Demander une aide pour des impayés;;Objectif : Secours exceptionnels;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Instruire le dossier de surendettement;;;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Demander une mesure de protection adulte;;Objectif : Sauvegarde de justice;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Demander une mesure de protection adulte;;Objectif : Mesure d'Accompagnement Judiciaire (MAJ);; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Demander une mesure de protection adulte;;Objectif : Signalement personne vulnérable;;Formulaire signalement personne vulnérable | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Demander une mesure de protection adulte;;Objectif : Mesure de protection personne majeure (tutelle, curatelle);; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Faire une demande auprès des associations caritatives;;;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Instruire des formulaires auprès d'autres organismes (Locapass, Fastt, …);;;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Instruire une première demande d'AEB;;;;Demande AEB | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Demander un renouvellement d'AEB;;Objectif : Dans l'attente d'une mesure de protection ;;Renouvellement AEB | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Demander un renouvellement d'AEB;;Objectif : Pour poursuivre les objectifs engagés;;Renouvellement AEB | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Instruire une première demande de MASP;;;;Demande MAPS | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Demander un renouvellement MASP;;Objectif : Dans l'attente d'une mesure de protection ;;Renouvellement MASP | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Demander un renouvellement MASP;;Objectif : Pour poursuivre les objectifs engagés;;Renouvellement MASP | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Cibler des objectifs avec l'usager;Objectif : Soutenir dans les démarches administratives;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Cibler des objectifs avec l'usager;Objectif : Aider au tri, au classement et à l’archivage des documents administratifs;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Cibler des objectifs avec l'usager;Objectif : Soutenir les ménages dans l’apurement des dettes, accompagner les ménages endettées, surendettées;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Cibler des objectifs avec l'usager;Objectif : Accompagner les ménages dans leur gestion budgétaire;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Cibler des objectifs avec l'usager;Objectif : Aider les ménages à se questionner sur leur mode de consommation;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Cibler des objectifs avec l'usager;Objectif : Assurer une fonction de médiation;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Cibler des objectifs avec l'usager;Objectif : Soutenir les ménages dans les démarches liées au logement;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Cibler des objectifs avec l'usager;Objectif : Aider à l'accès aux droits;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Cibler des objectifs avec l'usager;Objectif : Aider à l'inclusion numérique;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Cibler des objectifs avec l'usager;Objectif : Instruire des formulaires d'autres organismes non référencés…;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Cibler des objectifs avec l'usager;Objectif : Instruire le dossier de surendettement ;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Cibler des objectifs avec l'usager;Objectif : Demander ou renouveler la couverture santé (ACS);; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une aide alimentaire;;;Demande aide alimentaire | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une aide pour des impayés ou accès logement;Objectif : Centre Communal d’Action Sociale;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une aide pour des impayés ou accès logement;Objectif : CAF/MSA - Secours d’urgence;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une aide pour des impayés ou accès logement;Objectif : CAF/MSA - Aide financière;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une aide pour des impayés ou accès logement;Objectif : Caisse Primaire d’Assurance Maladie ;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une aide pour des impayés ou accès logement;Objectif : FSL Accès - Cautionnement;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une aide pour des impayés ou accès logement;Objectif : FSL Accès - Dépôt de garantie;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une aide pour des impayés ou accès logement;Objectif : FSL Accès - 1er loyer;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une aide pour des impayés ou accès logement;Objectif : FSL Accès - Frais d’agence;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une aide pour des impayés ou accès logement;Objectif : FSL Accès - Assurances;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une aide pour des impayés ou accès logement;Objectif : FSL Accès - Déménagement;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une aide pour des impayés ou accès logement;Objectif : FSL Accès - Aide à l’installation;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une aide pour des impayés ou accès logement;Objectif : FSL Accès - Facture résiliation énergie (nv logement);; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une aide pour des impayés ou accès logement;Objectif : FSL Maintien - Impayés de loyer;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une aide pour des impayés ou accès logement;Objectif : FSL Maintien - Énergie / Fluides;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une aide pour des impayés ou accès logement;Objectif : FSL Maintien - Impayés télécommunication;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une aide pour des impayés ou accès logement;Objectif : FSL Maintien - Impayés aire d'accueil GDV ;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une aide pour des impayés ou accès logement;Objectif : FSL Maintien - Lié à la COVID;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une aide pour des impayés ou accès logement;Objectif : Secours exceptionnels;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une aide pour des impayés ou accès logement;Objectif : Mesure ASLL;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Faire une demande auprès de Association caritative;;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une mesure de protection ;Objectif : Sauvegarde de justice;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une mesure de protection ;Objectif : Signalement personne vulnérable;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une mesure de protection ;Objectif : Mesure de protection personne majeure (tutelle, curatelle);; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une mesure de protection ;Objectif : Mesure d'Accompagnement Judiciaire (MAJ);; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Demander une mesure de protection ;Objectif : Mesure Judiciaire d'Aide à la Gestion du Budget Familial (MJAGBF);; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Conclure l'AEB;;Résultat : Arrêt à l'initiative du ménage pour déménagement; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Conclure l'AEB;;Résultat : Suspension momentanée de l'accompagnement par le ménage ou le professionnel; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Conclure l'AEB;;Résultat : Arrêt pour absence d'adhésion; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Conclure l'AEB;;Résultat : Arrêt à l'initiative du ménage pour séparation; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Conclure l'AEB;;Résultat : Arrêt à l'initiative du professionnel pour absence d'avancée ; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Conclure l'AEB;;Résultat : Retour à l'autonomie; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Conclure l'AEB;;Résultat : Transmission pour mesure judiciaire d'aide à la gestion du budget familial; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Conclure l'AEB;;Orientation vers une MASP; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Conclure l'AEB;;Résultat : Transmission pour une mesure d'accompagnement judiciaire ; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Conclure l'AEB;;Résultat : Renouvellement de l'AEB dans l'attente d'une mesure de protection ; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer un AEB;Conclure l'AEB;;Résultat : Renouvellement de l'AEB pour poursuivre les objectifs engagés; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Cibler des objectifs avec l'usager;Objectif : Soutenir dans les démarches administratives;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Cibler des objectifs avec l'usager;Objectif : Aider au tri, au classement et à l’archivage des documents administratifs;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Cibler des objectifs avec l'usager;Objectif : Soutenir les ménages dans l’apurement des dettes, accompagner les ménages endettées, surendettées;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Cibler des objectifs avec l'usager;Objectif : Accompagner les ménages dans leur gestion budgétaire;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Cibler des objectifs avec l'usager;Objectif : Aider les ménages à se questionner sur leur mode de consommation;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Cibler des objectifs avec l'usager;Objectif : Assurer une fonction de médiation;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Cibler des objectifs avec l'usager;Objectif : Soutenir les ménages dans les démarches liées au logement;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Cibler des objectifs avec l'usager;Objectif : Aider à l'accès aux droits;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Cibler des objectifs avec l'usager;Objectif : Aider à l'inclusion numérique;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Cibler des objectifs avec l'usager;Objectif : Instruire des formulaires d'autres organismes non référencés…;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Cibler des objectifs avec l'usager;Objectif : Instruire le dossier de surendettement ;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Cibler des objectifs avec l'usager;Objectif : Demander ou renouveler la couverture santé (ACS);; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une aide alimentaire;;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une aide pour des impayés ou accès logement;Objectif : Centre Communal d’Action Sociale;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une aide pour des impayés ou accès logement;Objectif : CAF/MSA - Secours d’urgence;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une aide pour des impayés ou accès logement;Objectif : CAF/MSA - Aide financière;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une aide pour des impayés ou accès logement;Objectif : Caisse Primaire d’Assurance Maladie ;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une aide pour des impayés ou accès logement;Objectif : FSL Accès - Cautionnement;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une aide pour des impayés ou accès logement;Objectif : FSL Accès - Dépôt de garantie;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une aide pour des impayés ou accès logement;Objectif : FSL Accès - 1er loyer;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une aide pour des impayés ou accès logement;Objectif : FSL Accès - Frais d’agence;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une aide pour des impayés ou accès logement;Objectif : FSL Accès - Assurances;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une aide pour des impayés ou accès logement;Objectif : FSL Accès - Déménagement;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une aide pour des impayés ou accès logement;Objectif : FSL Accès - Aide à l’installation;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une aide pour des impayés ou accès logement;Objectif : FSL Accès - Facture résiliation énergie (nv logement);; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une aide pour des impayés ou accès logement;Objectif : FSL Maintien - Impayés de loyer;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une aide pour des impayés ou accès logement;Objectif : FSL Maintien - Énergie / Fluides;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une aide pour des impayés ou accès logement;Objectif : FSL Maintien - Impayés télécommunication;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une aide pour des impayés ou accès logement;Objectif : FSL Maintien - Impayés aire d'accueil GDV ;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une aide pour des impayés ou accès logement;Objectif : FSL Maintien - Lié à la COVID;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une aide pour des impayés ou accès logement;Objectif : Secours exceptionnels;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une aide pour des impayés ou accès logement;Objectif : Mesure ASLL;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une mesure de protection adulte;Objectif : Sauvegarde de justice;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une mesure de protection adulte;Objectif : Signalement personne vulnérable;; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une mesure de protection adulte;Objectif : Mesure de protection personne majeure (tutelle, curatelle);; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une mesure de protection adulte;Objectif : Mesure d'Accompagnement Judiciaire (MAJ);; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Demander une mesure de protection adulte;Objectif : Mesure Judiciaire d'Aide à la Gestion du Budget Familial (MJAGBF);; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Conclure la MASP;;Résultat : Arrêt à l'initiative du ménage pour déménagement; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Conclure la MASP;;Résultat : Suspension momentanée de l'accompagnement par le ménage ou le professionnel; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Conclure la MASP;;Résultat : Arrêt pour absence d'adhésion; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Conclure la MASP;;Résultat : Arrêt à l'initiative du ménage pour séparation; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Conclure la MASP;;Résultat : Arrêt à l'initiative du professionnel pour absence d'avancée ; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Conclure la MASP;;Résultat : Retour à l'autonomie; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Conclure la MASP;;Résultat : Transmission pour mesure judiciaire d'aide à la gestion du budget familial; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Conclure la MASP;;Résultat : Transmission pour une mesure d'accompagnement judiciaire ; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Conclure la MASP;;Résultat : Renouvellement de MASP dans l'attente d'une mesure de protection ; | ||||
| AD - PREVENTION, ACCES AUX DROITS, BUDGET;SOUTIEN EQUILIBRE BUDGET;Exercer une MASP;Conclure la MASP;;Résultat : Renouvellement de MASP pour poursuivre les objectifs engagés; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Informer, conseiller;;;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Demander une aide pour l'accès;;Objectif : FSL Accès - Cautionnement;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Demander une aide pour l'accès;;Objectif : FSL Accès - Dépôt de garantie;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Demander une aide pour l'accès;;Objectif : FSL Accès - 1er loyer;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Demander une aide pour l'accès;;Objectif : FSL Accès - Frais d’agence;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Demander une aide pour l'accès;;Objectif : FSL Accès - Assurances;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Demander une aide pour l'accès;;Objectif : FSL Accès - Déménagement;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Demander une aide pour l'accès;;Objectif : FSL Accès - Aide à l’installation;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Demander une aide pour l'accès;;Objectif : FSL Accès - Facture résiliation énergie (nv logement);; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Demander une aide pour l'accès;;Objectif : FSL Accès - Mesure ASLL;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Demander auprès des Bailleurs sociaux, mairies, partenaires;;;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Instruire une demande DALO, DAHO;;;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Instruire une demande SIAO;;;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Instruire une demande ASLL;;;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Instruire une demande au Contingent préfectoral;;;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Instruire une demande au 115;;;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Prévenir de l'expulsion;;Objectif : Intervenir au commandement de payer;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Prévenir de l'expulsion;;Objectif : Instruire la fiche Assignation;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Prévenir de l'expulsion;;Objectif : Répondre au commandement de quitter les lieux;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Prévenir de l'expulsion;;Objectif : Répondre au concours de la force publique;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Prévenir de l'expulsion;;Objectif : Demander une aide financière FSL pour impayé de loyer;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Prévenir de l'expulsion;;Objectif : Déposer un dossier de surendettement;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Prévenir de l'expulsion;;Objectif : Demander auprès des Bailleurs sociaux, mairies, partenaires;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Prévenir de l'expulsion;;Objectif : Instruire une demande DALO, DAHO;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Prévenir de l'expulsion;;Objectif : Instruire une demande SIAO;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Prévenir de l'expulsion;;Objectif : Instruire une demande ASLL;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Prévenir de l'expulsion;;Objectif : Instruire une demande au Contingent préfectoral;; | ||||
| AD - LOGEMENT;ACCES LOGEMENT (RE);Prévenir de l'expulsion;;Objectif : Instruire une demande au 115;; | ||||
| AD - LOGEMENT;HABITAT INDIGNE;Informer, conseiller;;;; | ||||
| AD - LOGEMENT;HABITAT INDIGNE;Demander une aide pour incurie;;Objectif : FSL maintien - aide incurie;; | ||||
| AD - LOGEMENT;HABITAT INDIGNE;Instruire la grille de signalement;;;; | ||||
| AD - LOGEMENT;HABITAT INDIGNE;Faire intervenir d'autres partenaires;;;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;ACCOMPAGNEMENT INSERTION;Informer, conseiller;;;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;ACCOMPAGNEMENT INSERTION;Demander un accompagnement psychologue insertion;;;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;ACCOMPAGNEMENT INSERTION;Exercer l'accompagnement psychologue insertion;;;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;ACCOMPAGNEMENT INSERTION;Renouveller l'accompagnement psychologue insertion;;;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;ACCOMPAGNEMENT INSERTION;Réorienter l'usager vers autres structures pour un accompagnement psychologique;;;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;ACCOMPAGNEMENT INSERTION;Demander l'accompagnement global;;Objectif : Axe 2;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;ACCOMPAGNEMENT INSERTION;Exercer l'accompagnement global;;Objectif : Axe 2;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;ACCOMPAGNEMENT INSERTION;Renouveller l'accompagnement global;;Objectif : Axe 2;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;ACCOMPAGNEMENT INSERTION;Demander l'accompagnement global;;Objectif : Axe 3 (agent d'insertion);; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;ACCOMPAGNEMENT INSERTION;Exercer l'accompagnement global;;Objectif : Axe 3 (agent d'insertion);; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;ACCOMPAGNEMENT INSERTION;Renouveller l'accompagnement global;;Objectif : Axe 3 (agent d'insertion);; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;ACCOMPAGNEMENT INSERTION;Instruire une demande MOVEA;;;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Informer, conseiller;;;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;"Aider à l'ouverture de droits | ||||
| ";;;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Renseigner la plateforme INCLUSION@COM pour les chantiers d'insertion;;;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire le 1er Contrat d'Engagement Réciproque;;Objectif : Soutenir le parcours professionnel (emploi, formation, …);; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire le 1er Contrat d'Engagement Réciproque;;Objectif : Demander l'accompagnement global Axe 2 (orientation Pôle Emploi);; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire le 1er Contrat d'Engagement Réciproque;;Objectif : Orienter vers une structure de l'insertion (chantier, AI, ETTI, …);; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire le 1er Contrat d'Engagement Réciproque;;Objectif : Demander la médiation emploi;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire le 1er Contrat d'Engagement Réciproque;;Objectif : Création d'entreprise;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire le 1er Contrat d'Engagement Réciproque;;Objectif : Demander l'accompagnement travailleur non salarié;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire le 1er Contrat d'Engagement Réciproque;;Objectif : Demander l'accompagnement ASR CEIDRE;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire le 1er Contrat d'Engagement Réciproque;;Objectif : Déposer un dossier MDPH;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire le 1er Contrat d'Engagement Réciproque;;Objectif : Déposer un dossier retraite;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire le 1er Contrat d'Engagement Réciproque;;Objectif : Soutenir l'accès au logement;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire le 1er Contrat d'Engagement Réciproque;;Objectif : Accompagner le budget;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire le 1er Contrat d'Engagement Réciproque;;Objectif : Soutenir la mobilité (MOVEA, transport solidaire, PST, …);; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire le 1er Contrat d'Engagement Réciproque;;Objectif : Demander le psychologue insertion;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire le 1er Contrat d'Engagement Réciproque;;Objectif : Etre accompagné dans la parentalité;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire le 1er Contrat d'Engagement Réciproque;;Objectif : Initier ou maintenir un parcours santé (cure, hospitalisation, CMP, …);; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire le 1er Contrat d'Engagement Réciproque;;Objectif : Solliciliter un FAII;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire le 1er Contrat d'Engagement Réciproque;;Objectif : Demander un réorientation Pôle Emploi;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire le 1er Contrat d'Engagement Réciproque;;Objectif : Autre;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Renouveler le Contrat d'Engagement Réciproque;;Objectif : Soutenir le parcours professionnel (emploi, formation, …);; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Renouveler le Contrat d'Engagement Réciproque;;Objectif : Demander l'accompagnement global Axe 2 (orientation Pôle Emploi);; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Renouveler le Contrat d'Engagement Réciproque;;Objectif : Orienter vers une structure de l'insertion (chantier, AI, ETTI, …);; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Renouveler le Contrat d'Engagement Réciproque;;Objectif : Demander la médiation emploi;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Renouveler le Contrat d'Engagement Réciproque;;Objectif : Création d'entreprise;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Renouveler le Contrat d'Engagement Réciproque;;Objectif : Demander l'accompagnement travailleur non salarié;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Renouveler le Contrat d'Engagement Réciproque;;Objectif : Demander l'accompagnement ASR CEIDRE;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Renouveler le Contrat d'Engagement Réciproque;;Objectif : Déposer un dossier MDPH;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Renouveler le Contrat d'Engagement Réciproque;;Objectif : Déposer un dossier retraite;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Renouveler le Contrat d'Engagement Réciproque;;Objectif : Soutenir l'accès au logement;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Renouveler le Contrat d'Engagement Réciproque;;Objectif : Accompagner le budget;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Renouveler le Contrat d'Engagement Réciproque;;Objectif : Soutenir la mobilité (MOVEA, transport solidaire, PST, …);; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Renouveler le Contrat d'Engagement Réciproque;;Objectif : Demander le psychologue insertion;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Renouveler le Contrat d'Engagement Réciproque;;Objectif : Etre accompagné dans la parentalité;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Renouveler le Contrat d'Engagement Réciproque;;Objectif : Initier ou maintenir un parcours santé;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Renouveler le Contrat d'Engagement Réciproque;;Objectif : Solliciliter un FAII;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Renouveler le Contrat d'Engagement Réciproque;;Objectif : Demander un réorientation Pôle Emploi;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Renouveler le Contrat d'Engagement Réciproque;;Objectif : Autre;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire un avenant au Contrat d'Engagement Réciproque;;Objectif : Soutenir le parcours professionnel (emploi, formation, …);; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire un avenant au Contrat d'Engagement Réciproque;;Objectif : Demander l'accompagnement global Axe 2 (orientation Pôle Emploi);; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire un avenant au Contrat d'Engagement Réciproque;;Objectif : Orienter vers une structure de l'insertion (chantier, AI, ETTI, …);; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire un avenant au Contrat d'Engagement Réciproque;;Objectif : Demander la médiation emploi;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire un avenant au Contrat d'Engagement Réciproque;;Objectif : Création d'entreprise;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire un avenant au Contrat d'Engagement Réciproque;;Objectif : Demander l'accompagnement travailleur non salarié;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire un avenant au Contrat d'Engagement Réciproque;;Objectif : Demander l'accompagnement ASR CEIDRE;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire un avenant au Contrat d'Engagement Réciproque;;Objectif : Déposer un dossier MDPH;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire un avenant au Contrat d'Engagement Réciproque;;Objectif : Déposer un dossier retraite;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire un avenant au Contrat d'Engagement Réciproque;;Objectif : Soutenir l'accès au logement;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire un avenant au Contrat d'Engagement Réciproque;;Objectif : Accompagner le budget;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire un avenant au Contrat d'Engagement Réciproque;;Objectif : Soutenir la mobilité (MOVEA, transport solidaire, PST, …);; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire un avenant au Contrat d'Engagement Réciproque;;Objectif : Demander le psychologue insertion;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire un avenant au Contrat d'Engagement Réciproque;;Objectif : Etre accompagné dans la parentalité;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire un avenant au Contrat d'Engagement Réciproque;;Objectif : Initié ou maintenir un parcours santé;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire un avenant au Contrat d'Engagement Réciproque;;Objectif : Solliciliter un FAII;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire un avenant au Contrat d'Engagement Réciproque;;Objectif : Demander un réorientation Pôle Emploi;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;RSA;Faire un avenant au Contrat d'Engagement Réciproque;;Objectif : Autre;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;JEUNES 16/25 AIDE FINANCIERE INSERTION;Informer, conseiller;;;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;JEUNES 16/25 AIDE FINANCIERE INSERTION;Demander une aide FAJ;;Objectif : SU bons alimentaires;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;JEUNES 16/25 AIDE FINANCIERE INSERTION;Demander une aide FAJ;;Objectif : SU bons hygiène;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;JEUNES 16/25 AIDE FINANCIERE INSERTION;Demander une aide FAJ;;Objectif : SU bons carburant;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;JEUNES 16/25 AIDE FINANCIERE INSERTION;Demander une aide FAJ;;Objectif : SU virement;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;JEUNES 16/25 AIDE FINANCIERE INSERTION;Solliciter le comité FAJ;;Objectif : Aide financière;; | ||||
| AD - INSERTION SOCIALE PROFESSIONNELLE;JEUNES 16/25 AIDE FINANCIERE INSERTION;Solliciter le comité FAJ;;Objectif : Action d’accompagnement;; | ||||
| AD - SANTE;;Informer, conseiller;;;; | ||||
| AD - SANTE;;Orienter vers une structure de soins (CMP, psychologue, cure, …);;;; | ||||
| AD - SANTE;;Instruire un dossier MDPH;;;; | ||||
| AD - SANTE;;Accompagner le dépôt de dossier de pension d'invalidité;;;; | ||||
| AD - SANTE;;Instruire le dossier Complémentaire santé ACS;;;; | ||||
| AD – ACCOMPAGNEMENT SPECIFIQUE;;Informer, conseiller;;;; | ||||
| AD – ACCOMPAGNEMENT SPECIFIQUE;;Accompagner des publics spécifiques;;Objectif : Procéder à une élection de domicile;; | ||||
| AD – ACCOMPAGNEMENT SPECIFIQUE;;Accompagner des publics spécifiques;;Objectif : Demander une aide financière;; | ||||
| AD – ACCOMPAGNEMENT SPECIFIQUE;;Accompagner des publics spécifiques;;Objectif : Demander un interprète;; | ||||
| AD – ACCOMPAGNEMENT SPECIFIQUE;;Accompagner des publics spécifiques;;Objectif : Prendre contact avec le CADA;; | ||||
| AD – ACCOMPAGNEMENT SPECIFIQUE;;Accompagner des publics spécifiques;;Objectif : Aider à la constitution de dossier auprès de la préfecture;; | ||||
| AD – ACCOMPAGNEMENT SPECIFIQUE;;Accompagner des publics spécifiques;;Objectif : Faire le lien avec les associations;; | ||||
| AD – ACCOMPAGNEMENT SPECIFIQUE;;Accompagner des publics spécifiques;;Objectif : Demander une aide médicale d'état;; | ||||
| AD – ACCOMPAGNEMENT SPECIFIQUE;;Accompagner des publics spécifiques;;Objectif : Demander une carte mobilité;; | ||||
| AD – ACCOMPAGNEMENT SPECIFIQUE;;Accompagner des publics spécifiques;;Objectif : Accompagner pour la scolarité des enfants (crèches, collège, péri scolaire, cantine…);; | ||||
| AD – ACCOMPAGNEMENT SPECIFIQUE;;Accompagner des publics spécifiques;;Objectif : Aider à la compréhension du français;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Informer, conseiller;;;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Orienter vers une autre structure;;;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Instruire une première demande d'Accompagnement Educatif de Prevention;;;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Demander le renouvellement de l'Accompagnement Educatif de Prévention;;;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Problèmatique :  : Conduite à risque / Passage à l'acte isolé de l'enfant/adolescent;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Problèmatique : Comportement de l'enfant/adolescent en difficulté avec les limites, les interdits, les règles sociales;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Problèmatique : Difficultés de l'enfant en milieu scolaire ou extra-scolaire;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Problèmatique : Difficultés liées à la prise d'autonomie;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Problèmatique : Evènement - Traumatisme qui affecte l'équilibre familial;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Problèmatique : Problème de communication intrafamiliale;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Problèmatique : Parents démunis sur le plan éducatif;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Problèmatique : conflits parentaux ayant des résonnances sur l'enfant/l'adolescent;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Objectif : travailler la place de chacun;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Objectif : Conseiller et soutenir le positionnement éducatif;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Objectif : Accompagner la relation parent-enfant;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Objectif : Accompagner les parents en lien avec les lieux de scolarisation et de socialisation de leurs enfants;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Objectif : Accompagner/orienter les parents en lien avec les lieux de soins ;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Objectif : Accompagnement d’un jeune majeur;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Objectif : évaluation / Orientation;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Dispositif : mise en place TISF;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Dispositif : Mise en place AED;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Dispositif : Mise en place CJM;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Dispositif : Mise en place d'un AP;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Dispositif : Transmission judiciaire pour AEMO;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Dispositif : Tramsmission judiciaire pour MJIE;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Excercer un Accompagnement Educatif de Prévention;;Dispositif : Transmission judiciaire pour une mesure de protection;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Conclure un Accompagnement Educatif de Prévention;;;Résultat : Arrêt à l’initiative de la famille; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Conclure un Accompagnement Educatif de Prévention;;;Résultat : Souhait interruption momentanée de l’accompagnement par la famille ; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Conclure un Accompagnement Educatif de Prévention;;;Résultat : Orientation vers un partenaire extérieur; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Conclure un Accompagnement Educatif de Prévention;;;Résultat : Relais avec AS et/ou Puér; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Conclure un Accompagnement Educatif de Prévention;;;Résultat : Arrêt à échéance; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Conclure un Accompagnement Educatif de Prévention;;;Résultat : Transmission à l’ASE pour une mesure administrative; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Conclure un Accompagnement Educatif de Prévention;;;Résultat : Transmission à l’ASE pour une mesure judiciaire; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Conclure un Accompagnement Educatif de Prévention;;;Résultat : Renouvellement de l’AEP dans l’attente d’une mesure ASE; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Conclure un Accompagnement Educatif de Prévention;;;Résultat : Renouvellement de l’AEP pour poursuivre les objectifs engagés; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Réaliser une permanence éducative;;;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Solliciter les moyens dans le cadre d'un accompagnement à la parentalité ;;Médiatiser les relations familiales;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Solliciter les moyens dans le cadre d'un accompagnement à la parentalité ;;Demander le passage en IRCP;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Solliciter les moyens dans le cadre d'un accompagnement à la parentalité ;;Demander une mise en place TISF;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Solliciter les moyens dans le cadre d'un accompagnement à la parentalité ;;Demander le renouvellement TISF;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Solliciter les moyens dans le cadre d'un accompagnement à la parentalité ;;Demander une mise en place AED;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Solliciter les moyens dans le cadre d'un accompagnement à la parentalité ;;Demander une mise en place AESF;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Solliciter les moyens dans le cadre d'un accompagnement à la parentalité ;;Demander une mise en place d'un AP (accueil provisoire);; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Solliciter les moyens dans le cadre d'un accompagnement à la parentalité ;;Demander une mesure ASMI;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Solliciter les moyens dans le cadre d'un accompagnement à la parentalité ;;Demander une entrée en centre maternelle;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Solliciter les moyens dans le cadre d'un accompagnement à la parentalité ;;Demander une entrée en centre parental;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Solliciter les moyens dans le cadre d'un accompagnement à la parentalité ;;Demander une entrée en Unité Mère Enfant (UME);; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Solliciter les moyens dans le cadre d'un accompagnement à la parentalité ;;Demander une MJAGBF;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Solliciter les moyens dans le cadre d'un accompagnement à la parentalité ;;Demander une AED TDC;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Solliciter les moyens dans le cadre d'un accompagnement à la parentalité ;;Demander la désignation un TDC;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Solliciter les moyens dans le cadre d'un accompagnement à la parentalité ;;Demander un CAP ASE;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Solliciter les moyens dans le cadre d'un accompagnement à la parentalité ;;Demander une AMAE (allocation mensuelle d'aide éducative);; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Solliciter les moyens dans le cadre d'un accompagnement à la parentalité ;;Demander une allocation socio-éducatif spécifique;; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Solliciter les moyens dans le cadre d'un accompagnement à la parentalité ;;Demander un CAFI (aides fi);; | ||||
| ENFANT / FAMILLE;SOUTIEN A LA PARENTALITE;Solliciter les moyens dans le cadre d'un accompagnement à la parentalité ;;Demander une autre aide (associations…);; | ||||
| ENFANT / FAMILLE;ENFANT PREVENTION;Alerter la CRIP;;Motif : arrêt de l'adhésion des parents à l'accompagnement du soutien à la parentalité;; | ||||
| ENFANT / FAMILLE;ENFANT PREVENTION;Alerter la CRIP;;Motif : violence intra-familiale;; | ||||
| ENFANT / FAMILLE;ENFANT PREVENTION;Alerter la CRIP;;Motif : suite à une ISG;; | ||||
| ENFANT / FAMILLE;ENFANT PREVENTION;Alerter la CRIP;;;Faire une FRIP; | ||||
| ENFANT / FAMILLE;ENFANT PREVENTION;Alerter la CRIP;;;Demander une MJIE; | ||||
| ENFANT / FAMILLE;ENFANT PREVENTION;Alerter la CRIP;;;Demander une mesure de protection; | ||||
| ENFANT / FAMILLE;ENFANT PREVENTION;Alerter la CRIP;;;Demander un OPP; | ||||
| ENFANT / FAMILLE;ENFANT PREVENTION;Alerter la CRIP;;;Demander un placement; | ||||
| ENFANT / FAMILLE;ENFANT PREVENTION;Alerter l'ASE (RJA) pour situation connue;;Motif : arrêt de l'adhésion des parents à l'accompagnement du soutien à la parentalité;; | ||||
| ENFANT / FAMILLE;ENFANT PREVENTION;Alerter l'ASE (RJA) pour situation connue;;Motif : violence intra-familiale;; | ||||
| ENFANT / FAMILLE;ENFANT PREVENTION;Alerter l'ASE (RJA) pour situation connue;;Motif : suite à une ISG;; | ||||
| ENFANT / FAMILLE;ENFANT PREVENTION;Alerter l'ASE (RJA) pour situation connue;;;Demander une MJIE; | ||||
| ENFANT / FAMILLE;ENFANT PREVENTION;Alerter l'ASE (RJA) pour situation connue;;;Demander une mesure de protection; | ||||
| ENFANT / FAMILLE;ENFANT PREVENTION;Alerter l'ASE (RJA) pour situation connue;;;Demander un OPP; | ||||
| ENFANT / FAMILLE;ENFANT PREVENTION;Alerter l'ASE (RJA) pour situation connue;;;Demander un placement; | ||||
| ENFANT / FAMILLE;ENFANT PREVENTION;Répondre à Eléments en votre possession;;;; | ||||
| ENFANT / FAMILLE;INFORMATIONS PREOCCUPANTES;Réaliser une Evaluation IP pour la CRIP;;;Evaluation sans suite; | ||||
| ENFANT / FAMILLE;INFORMATIONS PREOCCUPANTES;Réaliser une Evaluation IP pour la CRIP;;;Evaluation demande d'accompagnement médico-sociale; | ||||
| ENFANT / FAMILLE;INFORMATIONS PREOCCUPANTES;Réaliser une Evaluation IP pour la CRIP;;;Evaluation pur demande de MJIE; | ||||
| ENFANT / FAMILLE;INFORMATIONS PREOCCUPANTES;Réaliser une Evaluation IP pour la CRIP;;;Evaluation pour demande d'AEMO; | ||||
| ENFANT / FAMILLE;INFORMATIONS PREOCCUPANTES;Réaliser une Evaluation IP pour la CRIP;;;Evaluation pour demande de  placement; | ||||
| ENFANT / FAMILLE;INFORMATIONS PREOCCUPANTES;Réaliser une Evaluation IP pour la CRIP;;;Evaluation pour demande d'OPP; | ||||
| ENFANT / FAMILLE;INFORMATIONS PREOCCUPANTES;Réaliser une Evaluation IP pour la CRIP;;;Note complémentaire actualisation; | ||||
| ENFANT / FAMILLE;INFORMATIONS PREOCCUPANTES;Réaliser une Evaluation pour l'ASE;;;Evaluation sans suite; | ||||
| ENFANT / FAMILLE;INFORMATIONS PREOCCUPANTES;Réaliser une Evaluation pour l'ASE;;;Evaluation demande d'accompagnement médico-sociale; | ||||
| ENFANT / FAMILLE;INFORMATIONS PREOCCUPANTES;Réaliser une Evaluation pour l'ASE;;;Evaluation pur demande de MJIE; | ||||
| ENFANT / FAMILLE;INFORMATIONS PREOCCUPANTES;Réaliser une Evaluation pour l'ASE;;;Evaluation pour demande d'AEMO; | ||||
| ENFANT / FAMILLE;INFORMATIONS PREOCCUPANTES;Réaliser une Evaluation pour l'ASE;;;Evaluation pour demande de  placement; | ||||
| ENFANT / FAMILLE;INFORMATIONS PREOCCUPANTES;Réaliser une Evaluation pour l'ASE;;;Evaluation pour demande d'OPP; | ||||
| ENFANT / FAMILLE;INFORMATIONS PREOCCUPANTES;Réaliser une Evaluation pour l'ASE;;;Note complémentaire actualisation; | ||||
| ENFANT / FAMILLE;INFORMATIONS PREOCCUPANTES;Mettre en place un accompagnement médicosocial suite à une IP;;Demander un AEP;; | ||||
| ENFANT / FAMILLE;INFORMATIONS PREOCCUPANTES;Mettre en place un accompagnement médicosocial suite à une IP;;Demander une mise en place AED;; | ||||
| ENFANT / FAMILLE;INFORMATIONS PREOCCUPANTES;Mettre en place un accompagnement médicosocial suite à une IP;;Demander une mise en place TISF;; | ||||
| ENFANT / FAMILLE;INFORMATIONS PREOCCUPANTES;Mettre en place un accompagnement médicosocial suite à une IP;;Demander la mise en place d'un Accueil Provisoire;; | ||||
| ENFANT / FAMILLE;INFORMATIONS PREOCCUPANTES;Mettre en place un accompagnement médicosocial suite à une IP;;Demander l'orientation vers d'autres structures (soins, MDA, …);; | ||||
| ENFANT / FAMILLE;INFORMATIONS PREOCCUPANTES;Mettre en place un accompagnement médicosocial suite à une IP;;Demander l'entrée en centre maternel ;; | ||||
| ENFANT / FAMILLE;INFORMATIONS PREOCCUPANTES;Mettre en place un accompagnement médicosocial suite à une IP;;Demander l'entrée unité mère / enfant;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Informer, conseiller;;;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Protéger des violences intra familiales;;Orienter vers SOS femme;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Protéger des violences intra familiales;;Proposer un conseiller ou une thérapie conjugale;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Protéger des violences intra familiales;;Proposer une médiation familiale;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Protéger des violences intra familiales;;Aider au dépôt de plainte;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Protéger des violences intra familiales;;Signaler un adulte vulnérable au procureur ;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Protéger des violences intra familiales;;Demander une mesure de protection majeur;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Protéger des violences intra familiales;;Faire une FRIP pour enfant en danger;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Protéger des violences intra familiales;;Instruire la fiche VIF;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Réaliser l'intervention sociale en gendarmerie;;Conseiller  ;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Réaliser l'intervention sociale en gendarmerie;;Problématique : VIF;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Réaliser l'intervention sociale en gendarmerie;;Problématique : Difficultés éducatives;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Réaliser l'intervention sociale en gendarmerie;;Problématique : Protection de l’enfance;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Réaliser l'intervention sociale en gendarmerie;;Problématique : Violences sexuelles;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Réaliser l'intervention sociale en gendarmerie;;Problématique : Information suite à une séparation;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Réaliser l'intervention sociale en gendarmerie;;Orienter vers l'AS de secteur;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Réaliser l'intervention sociale en gendarmerie;;Orienter vers SOS femme;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Réaliser l'intervention sociale en gendarmerie;;Orienter vers un accompagnement CMP/libéral;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Réaliser l'intervention sociale en gendarmerie;;Orienter vers un conseiller ou thérapeute conjugal;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Réaliser l'intervention sociale en gendarmerie;;Aider au dépôt de plainte;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Réaliser l'intervention sociale en gendarmerie;;Signaler un adulte vulnérable au procureur ;; | ||||
| ENFANT / FAMILLE;VIOLENCES INTRA-FAMILIALES;Réaliser l'intervention sociale en gendarmerie;;Demander une mesure de protection majeur;; | ||||
| ENFANT PROTECTION;ACCUEIL PROVISOIRE;Accompagner le lieu d'accueil;;;; | ||||
| ENFANT PROTECTION;ACCUEIL PROVISOIRE;Mettre en place un soutien parental;;Mise en place TISF;; | ||||
| ENFANT PROTECTION;ACCUEIL PROVISOIRE;Mettre en place un soutien parental;;Demande aide financière / SU;; | ||||
| ENFANT PROTECTION;ACCUEIL PROVISOIRE;Mettre en place un soutien parental;;Demande SU;; | ||||
| ENFANT PROTECTION;ACCUEIL PROVISOIRE;Mettre en place un soutien parental;;Participation à des actions collectives;; | ||||
| ENFANT PROTECTION;ACCUEIL PROVISOIRE;Mettre en place un soutien parental;;Mise en place d'un loisir familial ;; | ||||
| ENFANT PROTECTION;ACCUEIL PROVISOIRE;Mettre en place un soutien parental;;Mise en place d'une aide transport;; | ||||
| ENFANT PROTECTION;ACCUEIL PROVISOIRE;Accompagner le mineur;;Demande mise en place d'un accompagnement psychologique;; | ||||
| ENFANT PROTECTION;ACCUEIL PROVISOIRE;Accompagner le mineur;;Construire le PPE;; | ||||
| ENFANT PROTECTION;ACCUEIL PROVISOIRE;Accompagner le mineur;;Mise en place CJM;; | ||||
| ENFANT PROTECTION;ACCUEIL PROVISOIRE;Accompagner le mineur;;Demande MDPH ;; | ||||
| ENFANT PROTECTION;ACCUEIL PROVISOIRE;Accompagner le mineur;;Organiser la mise en place d'un loisir;; | ||||
| ENFANT PROTECTION;ACCUEIL PROVISOIRE;Elaborer le lien partenarial;;;; | ||||
| ENFANT PROTECTION;ACCUEIL PROVISOIRE;Demander une protection majeur vulnérable;;;; | ||||
| ENFANT PROTECTION;ACCUEIL PROVISOIRE;Demande de MJIE (mesure judiciaire d'investigation éducative);;;; | ||||
| ENFANT PROTECTION;ASSISTANCE EDUCATIVE DE PLACEMENT DANS UN LIEU D'ACCUEIL;Accompagner le lieu d'accueil;;;; | ||||
| ENFANT PROTECTION;ASSISTANCE EDUCATIVE DE PLACEMENT DANS UN LIEU D'ACCUEIL;Mettre en place un soutien parental;;Mise en place TISF;; | ||||
| ENFANT PROTECTION;ASSISTANCE EDUCATIVE DE PLACEMENT DANS UN LIEU D'ACCUEIL;Mettre en place un soutien parental;;Demande aide financière;; | ||||
| ENFANT PROTECTION;ASSISTANCE EDUCATIVE DE PLACEMENT DANS UN LIEU D'ACCUEIL;Mettre en place un soutien parental;;Demande SU;; | ||||
| ENFANT PROTECTION;ASSISTANCE EDUCATIVE DE PLACEMENT DANS UN LIEU D'ACCUEIL;Mettre en place un soutien parental;;Demande de protection majeur vulnérable;; | ||||
| ENFANT PROTECTION;ASSISTANCE EDUCATIVE DE PLACEMENT DANS UN LIEU D'ACCUEIL;Accompagner le mineur;;;; | ||||
| ENFANT PROTECTION;ASSISTANCE EDUCATIVE DE PLACEMENT DANS UN LIEU D'ACCUEIL;Elaborer le lien partenarial;;;; | ||||
| ENFANT PROTECTION;ASSISTANCE EDUCATIVE DE PLACEMENT CHEZ LE PARENT;Mettre en place un soutien parental;;;; | ||||
| ENFANT PROTECTION;ASSISTANCE EDUCATIVE DE PLACEMENT CHEZ LE PARENT;Accompagner le mineur;;Construire le PPE;; | ||||
| ENFANT PROTECTION;ASSISTANCE EDUCATIVE DE PLACEMENT CHEZ LE PARENT;Accompagner le mineur;;Mise en place CJM;; | ||||
| ENFANT PROTECTION;ASSISTANCE EDUCATIVE DE PLACEMENT CHEZ LE PARENT;Accompagner le mineur;;Organiser la participation à un camp de vacances;; | ||||
| ENFANT PROTECTION;DELEGATION D'AUTORITE PARENTALE;Accompagner le lieu d'accueil;;;; | ||||
| ENFANT PROTECTION;DELEGATION D'AUTORITE PARENTALE;Accompagner le mineur;;;; | ||||
| ENFANT PROTECTION;DELEGATION D'AUTORITE PARENTALE;Elaborer le lien partenarial;;;; | ||||
| ENFANT PROTECTION;TUTELLE DEPARTEMENTALE;;;;; | ||||
| ENFANT PROTECTION;TUTELLE D'ETAT;Accompagner le lieu d'accueil;;;; | ||||
| ENFANT PROTECTION;TUTELLE D'ETAT;Accompagner le mineur;;;; | ||||
| ENFANT PROTECTION;TUTELLE D'ETAT;Elaborer le lien partenarial;;;; | ||||
| ENFANT PROTECTION;AEMO TDC;Accompagner le lieu d'accueil;;;; | ||||
| ENFANT PROTECTION;AEMO TDC;Mettre en place un soutien parental;;;; | ||||
| ENFANT PROTECTION;AEMO TDC;Accompagner le mineur;;;; | ||||
| ENFANT PROTECTION;AEMO TDC;Elaborer le lien partenarial;;;; | ||||
| ENFANT PROTECTION;AEMO FAMILLE;Mettre en place un soutien parental;;;; | ||||
| ENFANT PROTECTION;AEMO FAMILLE;Accompagner le mineur;;;; | ||||
| ENFANT PROTECTION;AEMO FAMILLE;Elaborer le lien partenarial;;;; | ||||
| AGREMENT;ASSISTANT MATERNEL;Instruire une première demande;;;; | ||||
| AGREMENT;ASSISTANT MATERNEL;Instruire un renouvellement;;;; | ||||
| AGREMENT;ASSISTANT MATERNEL;Instruire une modification;;;; | ||||
| AGREMENT;ASSISTANT MATERNEL;Suivre un(e) ASSMAT;;;; | ||||
| AGREMENT;ASSISTANT MATERNEL;Contrôler un(e) ASSMAT;;;; | ||||
| AGREMENT;ASSISTANT MATERNEL;Accompagner un(e) ASSMAT;;;; | ||||
| AGREMENT;ASSISTANT FAMILIAL;Instruire une première demande;;;; | ||||
| AGREMENT;ASSISTANT FAMILIAL;Instruire un renouvellement;;;; | ||||
| AGREMENT;ASSISTANT FAMILIAL;Instruire une modification;;;; | ||||
| AGREMENT;ASSISTANT FAMILIAL;Suivre un(e) ASSFAM;;;; | ||||
| AGREMENT;ASSISTANT FAMILIAL;Contrôler un(e) ASSFAM;;;; | ||||
| AGREMENT;ASSISTANT FAMILIAL;Accompagner un(e) ASSFAM;;;; | ||||
| AGREMENT;FAMILLE D'ACCUEIL PA/PH;Contribuer à l'évaluation si Famille d'Accueil connue;;Première demande;; | ||||
| AGREMENT;FAMILLE D'ACCUEIL PA/PH;Contribuer à l'évaluation si Famille d'Accueil connue;;Renouvellement;; | ||||
| AGREMENT;FAMILLE D'ACCUEIL PA/PH;Contribuer à l'évaluation si Famille d'Accueil connue;;Modification;; | ||||
| AGREMENT;FAMILLE D'ACCUEIL PA/PH;Contribuer à l'évaluation si Famille d'Accueil connue;;Suivi;; | ||||
| 
 | 
| @@ -25,6 +25,7 @@ namespace Chill\PersonBundle\Entity; | ||||
| use Chill\MainBundle\Doctrine\Model\TrackUpdateInterface; | ||||
| use Chill\MainBundle\Doctrine\Model\TrackCreationInterface; | ||||
| use Chill\MainBundle\Entity\Scope; | ||||
| use Chill\MainBundle\Entity\Address; | ||||
| use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWork; | ||||
| use Chill\PersonBundle\Entity\AccompanyingPeriod\ClosingMotive; | ||||
| use Chill\PersonBundle\Entity\AccompanyingPeriod\Comment; | ||||
| @@ -291,6 +292,22 @@ class AccompanyingPeriod implements TrackCreationInterface, TrackUpdateInterface | ||||
|      */ | ||||
|     private Collection $works; | ||||
|  | ||||
|     /** | ||||
|      * @ORM\ManyToOne( | ||||
|      *  targetEntity=Person::class, | ||||
|      *  inversedBy="periodLocatedOn" | ||||
|      * ) | ||||
|      */ | ||||
|     private ?Person $personLocation = null; | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * @ORM\ManyToOne( | ||||
|      *  targetEntity=Address::class | ||||
|      * ) | ||||
|      */ | ||||
|     private ?Address $addressLocation = null; | ||||
|  | ||||
|     /** | ||||
|      * AccompanyingPeriod constructor. | ||||
|      * | ||||
| @@ -824,7 +841,9 @@ class AccompanyingPeriod implements TrackCreationInterface, TrackUpdateInterface | ||||
|  | ||||
|     public function addSocialIssue(SocialIssue $socialIssue): self | ||||
|     { | ||||
|         $this->socialIssues[] = $socialIssue; | ||||
|         if (!$this->socialIssues->contains($socialIssue)) { | ||||
|             $this->socialIssues[] = $socialIssue; | ||||
|         } | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
| @@ -931,4 +950,67 @@ class AccompanyingPeriod implements TrackCreationInterface, TrackUpdateInterface | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getAddressLocation(): ?Address | ||||
|     { | ||||
|         return $this->addressLocation; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @Groups({"write"}) | ||||
|      */ | ||||
|     public function setAddressLocation(?Address $addressLocation = null): self | ||||
|     { | ||||
|         $this->addressLocation = $addressLocation; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @Groups({"read"}) | ||||
|      */ | ||||
|     public function getPersonLocation(): ?Person | ||||
|     { | ||||
|         return $this->personLocation; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @Groups({"write"}) | ||||
|      */ | ||||
|     public function setPersonLocation(?Person $person = null): self | ||||
|     { | ||||
|         $this->personLocation = $person; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get the location, taking precedence into account | ||||
|      * | ||||
|      * @Groups({"read"}) | ||||
|      */ | ||||
|     public function getLocation(\DateTimeImmutable $at = null): ?Address | ||||
|     { | ||||
|         if ($this->getPersonLocation() instanceof Person) { | ||||
|            return $this->getPersonLocation()->getCurrentHouseholdAddress($at); | ||||
|         } | ||||
|  | ||||
|         return $this->getAddressLocation(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get where the location is | ||||
|      * | ||||
|      * @Groups({"read"}) | ||||
|      */ | ||||
|     public function getLocationStatus(): string | ||||
|     { | ||||
|         if ($this->getPersonLocation() instanceof Person) { | ||||
|             return 'person'; | ||||
|         } elseif ($this->getAddressLocation() instanceof Address) { | ||||
|             return 'address'; | ||||
|         } else { | ||||
|             return 'none'; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -160,12 +160,26 @@ use Symfony\Component\Validator\Constraints as Assert; | ||||
|      */ | ||||
|     private Collection $persons; | ||||
|  | ||||
|      /** | ||||
|       * @var Collection | ||||
|       * @ORM\OneToMany( | ||||
|       *     targetEntity=AccompanyingPeriodWorkEvaluation::class, | ||||
|       *     mappedBy="accompanyingPeriodWork", | ||||
|       *     cascade={"persist"}, | ||||
|       *     orphanRemoval=true | ||||
|       * ) | ||||
|       * @Serializer\Groups({"read"}) | ||||
|       * @internal /!\ the serialization for read / write evaluations is handled in `AccompanyingPeriodWorkDenormalizer` | ||||
|       */ | ||||
|     private Collection $accompanyingPeriodWorkEvaluations; | ||||
|  | ||||
|     public function __construct() | ||||
|     { | ||||
|         $this->goals = new ArrayCollection(); | ||||
|         $this->results = new ArrayCollection(); | ||||
|         $this->thirdParties = new ArrayCollection(); | ||||
|         $this->persons = new ArrayCollection(); | ||||
|         $this->accompanyingPeriodWorkEvaluations = new ArrayCollection(); | ||||
|     } | ||||
|  | ||||
|     public function getId(): ?int | ||||
| @@ -388,6 +402,11 @@ use Symfony\Component\Validator\Constraints as Assert; | ||||
|         return $this->thirdParties; | ||||
|     } | ||||
|  | ||||
|     public function getThirdPartys(): Collection | ||||
|     { | ||||
|         return $this->getThirdParties(); | ||||
|     } | ||||
|  | ||||
|     public function addThirdParty(ThirdParty $thirdParty): self | ||||
|     { | ||||
|         if (!$this->thirdParties->contains($thirdParty)) { | ||||
| @@ -424,4 +443,31 @@ use Symfony\Component\Validator\Constraints as Assert; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|      /** | ||||
|       * @return Collection | ||||
|       */ | ||||
|      public function getAccompanyingPeriodWorkEvaluations() | ||||
|      { | ||||
|          return $this->accompanyingPeriodWorkEvaluations; | ||||
|      } | ||||
|  | ||||
|      public function addAccompanyingPeriodWorkEvaluation(AccompanyingPeriodWorkEvaluation $evaluation): self | ||||
|      { | ||||
|          if (!$this->accompanyingPeriodWorkEvaluations->contains($evaluation)) { | ||||
|              $this->accompanyingPeriodWorkEvaluations[] = $evaluation; | ||||
|              $evaluation->setAccompanyingPeriodWork($this); | ||||
|          } | ||||
|  | ||||
|          return $this; | ||||
|      } | ||||
|  | ||||
|      public function removeAccompanyingPeriodWorkEvaluation(AccompanyingPeriodWorkEvaluation $evaluation): self | ||||
|      { | ||||
|          $this->accompanyingPeriodWorkEvaluations | ||||
|              ->removeElement($evaluation); | ||||
|          $evaluation->setAccompanyingPeriodWork(null); | ||||
|  | ||||
|          return $this; | ||||
|      } | ||||
| } | ||||
|   | ||||
| @@ -0,0 +1,369 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Chill\PersonBundle\Entity\AccompanyingPeriod; | ||||
|  | ||||
| use Chill\MainBundle\Doctrine\Model\TrackCreationInterface; | ||||
| use Chill\MainBundle\Doctrine\Model\TrackUpdateInterface; | ||||
| use Chill\MainBundle\Entity\User; | ||||
| use Chill\PersonBundle\Entity\SocialWork\Evaluation; | ||||
| use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWorkEvaluationDocument; | ||||
| use DateInterval; | ||||
| use DateTimeImmutable; | ||||
| use Doctrine\Common\Collections\ArrayCollection; | ||||
| use Doctrine\Common\Collections\Collection; | ||||
| use Doctrine\ORM\Mapping as ORM; | ||||
| use Symfony\Component\Serializer\Annotation as Serializer; | ||||
|  | ||||
| /** | ||||
|  * @ORM\Entity | ||||
|  * @ORM\Table("chill_person_accompanying_period_work_evaluation") | ||||
|  * @Serializer\DiscriminatorMap(typeProperty="type", mapping={ | ||||
|  *        "accompanying_period_work_evaluation"=AccompanyingPeriodWorkEvaluation::class, | ||||
|  *     }) | ||||
|  */ | ||||
| class AccompanyingPeriodWorkEvaluation implements TrackUpdateInterface, TrackCreationInterface | ||||
| { | ||||
|     /** | ||||
|      * @ORM\Id | ||||
|      * @ORM\GeneratedValue | ||||
|      * @ORM\Column(type="integer") | ||||
|      * @Serializer\Groups({"read"}) | ||||
|      */ | ||||
|     private ?int $id = null; | ||||
|  | ||||
|     /** | ||||
|      * @ORM\ManyToOne( | ||||
|      *     targetEntity=AccompanyingPeriodWork::class, | ||||
|      *     inversedBy="accompanyingPeriodWorkEvaluations" | ||||
|      * ) | ||||
|      */ | ||||
|     private ?AccompanyingPeriodWork $accompanyingPeriodWork = null; | ||||
|  | ||||
|     /** | ||||
|      * @ORM\ManyToOne( | ||||
|      *     targetEntity=Evaluation::class | ||||
|      * ) | ||||
|      * @Serializer\Groups({"read"}) | ||||
|      * @Serializer\Groups({"accompanying_period_work_evaluation:create"}) | ||||
|      */ | ||||
|     private ?Evaluation $evaluation = null; | ||||
|  | ||||
|     /** | ||||
|      * @ORM\Column(type="date_immutable", nullable=true, options={"default": null}) | ||||
|      * @Serializer\Groups({"read"}) | ||||
|      * @Serializer\Groups({"write"}) | ||||
|      * @Serializer\Groups({"accompanying_period_work_evaluation:create"}) | ||||
|      */ | ||||
|     private ?DateTimeImmutable $startDate = null; | ||||
|  | ||||
|     /** | ||||
|      * @ORM\Column(type="date_immutable", nullable=true, options={"default": null}) | ||||
|      * @Serializer\Groups({"read"}) | ||||
|      * @Serializer\Groups({"write"}) | ||||
|      * @Serializer\Groups({"accompanying_period_work_evaluation:create"}) | ||||
|      */ | ||||
|     private ?DateTimeImmutable $endDate = null; | ||||
|  | ||||
|     /** | ||||
|      * @ORM\Column(type="date_immutable", nullable=true, options={"default": null}) | ||||
|      * @Serializer\Groups({"read"}) | ||||
|      * @Serializer\Groups({"accompanying_period_work_evaluation:create"}) | ||||
|      */ | ||||
|     private ?DateTimeImmutable $maxDate = null; | ||||
|  | ||||
|     /** | ||||
|      * @ORM\Column(type="dateinterval", nullable=true, options={"default": null}) | ||||
|      * @Serializer\Groups({"read"}) | ||||
|      * @Serializer\Groups({"accompanying_period_work_evaluation:create"}) | ||||
|      */ | ||||
|     private ?DateInterval $warningInterval = null; | ||||
|  | ||||
|     /** | ||||
|      * @var string | ||||
|      * @ORM\Column(type="text", nullable=false, options={"default": ""}) | ||||
|      * @Serializer\Groups({"read"}) | ||||
|      * @Serializer\Groups({"write"}) | ||||
|      * @Serializer\Groups({"accompanying_period_work_evaluation:create"}) | ||||
|      */ | ||||
|     private string $comment = ''; | ||||
|  | ||||
|    /** | ||||
|      * @ORM\ManyToOne( | ||||
|      *     targetEntity=User::class | ||||
|      * ) | ||||
|     * @Serializer\Groups({"read"}) | ||||
|     */ | ||||
|     private ?User $createdBy = null; | ||||
|  | ||||
|     /** | ||||
|      * @ORM\Column(type="date_immutable", nullable=true, options={"default": null}) | ||||
|      * @Serializer\Groups({"read"}) | ||||
|      */ | ||||
|     private ?DateTimeImmutable $createdAt = null; | ||||
|  | ||||
|     /** | ||||
|      * @ORM\ManyToOne( | ||||
|      *     targetEntity=User::class | ||||
|      * ) | ||||
|      * @Serializer\Groups({"read"}) | ||||
|      */ | ||||
|     private ?User $updatedBy = null; | ||||
|  | ||||
|     /** | ||||
|      * @ORM\Column(type="date_immutable", nullable=true, options={"default": null}) | ||||
|      * @Serializer\Groups({"read"}) | ||||
|      */ | ||||
|     private ?DateTimeImmutable $updatedAt = null; | ||||
|  | ||||
|     /** | ||||
|      * @var Collection | ||||
|      * @ORM\OneToMany( | ||||
|      *     targetEntity=AccompanyingPeriodWorkEvaluationDocument::class, | ||||
|      *     mappedBy="accompanyingPeriodWorkEvaluation" | ||||
|      *     ) | ||||
|      * @Serializer\Groups({"read"}) | ||||
|      */ | ||||
|     private Collection $documents; | ||||
|  | ||||
|     public function __construct() | ||||
|     { | ||||
|         $this->documents = new ArrayCollection(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return int|null | ||||
|      */ | ||||
|     public function getId(): ?int | ||||
|     { | ||||
|         return $this->id; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return AccompanyingPeriodWork|null | ||||
|      */ | ||||
|     public function getAccompanyingPeriodWork(): ?AccompanyingPeriodWork | ||||
|     { | ||||
|         return $this->accompanyingPeriodWork; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param AccompanyingPeriodWork|null $accompanyingPeriodWork | ||||
|      * @return AccompanyingPeriodWorkEvaluation | ||||
|      */ | ||||
|     public function setAccompanyingPeriodWork(?AccompanyingPeriodWork $accompanyingPeriodWork): AccompanyingPeriodWorkEvaluation | ||||
|     { | ||||
|         if ( | ||||
|             $accompanyingPeriodWork instanceof AccompanyingPeriodWork | ||||
|             && $this->accompanyingPeriodWork instanceof AccompanyingPeriodWork | ||||
|             && $this->accompanyingPeriodWork->getId() !== $accompanyingPeriodWork->getId()) { | ||||
|             throw new \RuntimeException("Changing the ". | ||||
|             "accompanyingPeriodWork is not allowed"); | ||||
|         } | ||||
|  | ||||
|         $this->accompanyingPeriodWork = $accompanyingPeriodWork; | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return Evaluation|null | ||||
|      */ | ||||
|     public function getEvaluation(): ?Evaluation | ||||
|     { | ||||
|         return $this->evaluation; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param Evaluation|null $evaluation | ||||
|      * @return AccompanyingPeriodWorkEvaluation | ||||
|      */ | ||||
|     public function setEvaluation(?Evaluation $evaluation): AccompanyingPeriodWorkEvaluation | ||||
|     { | ||||
|         if ( | ||||
|             ($evaluation instanceof Evaluation | ||||
|                 && $this->evaluation instanceof Evaluation | ||||
|                 && $evaluation->getId() !== $this->evaluation->getId()) | ||||
|             || | ||||
|             ($this->evaluation instanceof Evaluation | ||||
|                 && null === $evaluation) | ||||
|         ) { | ||||
|             throw new \LogicException("once set, an ${self::class} cannot | ||||
|                 change or remove the linked Evaluation::class"); | ||||
|         } | ||||
|  | ||||
|         $this->evaluation = $evaluation; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return DateTimeImmutable|null | ||||
|      */ | ||||
|     public function getStartDate(): ?DateTimeImmutable | ||||
|     { | ||||
|         return $this->startDate; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param DateTimeImmutable|null $startDate | ||||
|      * @return AccompanyingPeriodWorkEvaluation | ||||
|      */ | ||||
|     public function setStartDate(?DateTimeImmutable $startDate): AccompanyingPeriodWorkEvaluation | ||||
|     { | ||||
|         $this->startDate = $startDate; | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return DateTimeImmutable|null | ||||
|      */ | ||||
|     public function getEndDate(): ?DateTimeImmutable | ||||
|     { | ||||
|         return $this->endDate; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param DateTimeImmutable|null $endDate | ||||
|      * @return AccompanyingPeriodWorkEvaluation | ||||
|      */ | ||||
|     public function setEndDate(?DateTimeImmutable $endDate): AccompanyingPeriodWorkEvaluation | ||||
|     { | ||||
|         $this->endDate = $endDate; | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return DateTimeImmutable|null | ||||
|      */ | ||||
|     public function getMaxDate(): ?DateTimeImmutable | ||||
|     { | ||||
|         return $this->maxDate; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param DateTimeImmutable|null $maxDate | ||||
|      * @return AccompanyingPeriodWorkEvaluation | ||||
|      */ | ||||
|     public function setMaxDate(?DateTimeImmutable $maxDate): AccompanyingPeriodWorkEvaluation | ||||
|     { | ||||
|         $this->maxDate = $maxDate; | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return DateInterval|null | ||||
|      */ | ||||
|     public function getWarningInterval(): ?DateInterval | ||||
|     { | ||||
|         return $this->warningInterval; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param DateInterval|null $warningInterval | ||||
|      * @return AccompanyingPeriodWorkEvaluation | ||||
|      */ | ||||
|     public function setWarningInterval(?DateInterval $warningInterval): AccompanyingPeriodWorkEvaluation | ||||
|     { | ||||
|         $this->warningInterval = $warningInterval; | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return string | ||||
|      */ | ||||
|     public function getComment(): string | ||||
|     { | ||||
|         return $this->comment; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param string $comment | ||||
|      * @return AccompanyingPeriodWorkEvaluation | ||||
|      */ | ||||
|     public function setComment(string $comment): AccompanyingPeriodWorkEvaluation | ||||
|     { | ||||
|         $this->comment = $comment; | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return User|null | ||||
|      */ | ||||
|     public function getCreatedBy(): ?User | ||||
|     { | ||||
|         return $this->createdBy; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param User|null $createdBy | ||||
|      * @return AccompanyingPeriodWorkEvaluation | ||||
|      */ | ||||
|     public function setCreatedBy(?User $createdBy): AccompanyingPeriodWorkEvaluation | ||||
|     { | ||||
|         $this->createdBy = $createdBy; | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return DateTimeImmutable|null | ||||
|      */ | ||||
|     public function getCreatedAt(): ?DateTimeImmutable | ||||
|     { | ||||
|         return $this->createdAt; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param DateTimeImmutable|null $createdAt | ||||
|      * @return AccompanyingPeriodWorkEvaluation | ||||
|      */ | ||||
|     public function setCreatedAt(\DateTimeInterface $createdAt): self | ||||
|     { | ||||
|         $this->createdAt = $createdAt; | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return User|null | ||||
|      */ | ||||
|     public function getUpdatedBy(): ?User | ||||
|     { | ||||
|         return $this->updatedBy; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param User|null $updatedBy | ||||
|      * @return AccompanyingPeriodWorkEvaluation | ||||
|      */ | ||||
|     public function setUpdatedBy(?User $updatedBy): AccompanyingPeriodWorkEvaluation | ||||
|     { | ||||
|         $this->updatedBy = $updatedBy; | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return DateTimeImmutable|null | ||||
|      */ | ||||
|     public function getUpdatedAt(): ?DateTimeImmutable | ||||
|     { | ||||
|         return $this->updatedAt; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param DateTimeImmutable|null $updatedAt | ||||
|      * @return AccompanyingPeriodWorkEvaluation | ||||
|      */ | ||||
|     public function setUpdatedAt(\DateTimeInterface $updatedAt): self | ||||
|     { | ||||
|         $this->updatedAt = $updatedAt; | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return Collection | ||||
|      */ | ||||
|     public function getDocuments() | ||||
|     { | ||||
|         return $this->documents; | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -0,0 +1,175 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Chill\PersonBundle\Entity\AccompanyingPeriod; | ||||
|  | ||||
| use Chill\DocStoreBundle\Entity\StoredObject; | ||||
| use Chill\MainBundle\Doctrine\Model\TrackCreationInterface; | ||||
| use Chill\MainBundle\Doctrine\Model\TrackUpdateInterface; | ||||
| use Chill\MainBundle\Entity\User; | ||||
| use Doctrine\ORM\Mapping as ORM; | ||||
| use Symfony\Component\Serializer\Annotation as Serializer; | ||||
|  | ||||
| /** | ||||
|  * @ORM\Entity | ||||
|  * @ORM\Table("chill_person_accompanying_period_work_evaluation_document") | ||||
|  * @Serializer\DiscriminatorMap(typeProperty="type", mapping={ | ||||
|  *     "accompanying_period_work_evaluation_document"=AccompanyingPeriodWorkEvaluationDocument::class | ||||
|  *     }) | ||||
|  */ | ||||
| class AccompanyingPeriodWorkEvaluationDocument implements \Chill\MainBundle\Doctrine\Model\TrackCreationInterface, \Chill\MainBundle\Doctrine\Model\TrackUpdateInterface | ||||
| { | ||||
|     /** | ||||
|      * @var int|null | ||||
|      * @ORM\Id | ||||
|      * @ORM\GeneratedValue | ||||
|      * @ORM\Column(type="integer") | ||||
|      * | ||||
|      * @internal the default name exceeds 64 characters, we must set manually: | ||||
|      * @ORM\SequenceGenerator(sequenceName="chill_person_social_work_eval_doc_id_seq", allocationSize=1, initialValue=1000) | ||||
|      * @Serializer\Groups({"read"}) | ||||
|      */ | ||||
|     private ?int $id; | ||||
|  | ||||
|     /** | ||||
|      * @var AccompanyingPeriodWorkEvaluation|null | ||||
|      * @ORM\ManyToOne( | ||||
|      *     targetEntity=AccompanyingPeriodWorkEvaluation::class, | ||||
|      *     inversedBy="documents" | ||||
|      * ) | ||||
|      */ | ||||
|     private ?AccompanyingPeriodWorkEvaluation $accompanyingPeriodWorkEvaluation; | ||||
|  | ||||
|     /** | ||||
|      * @ORM\ManyToOne( | ||||
|      *     targetEntity=User::class | ||||
|      * ) | ||||
|      * @Serializer\Groups({"read"}) | ||||
|      */ | ||||
|     private ?User $createdBy; | ||||
|  | ||||
|     /** | ||||
|      * @ORM\Column(type="date_immutable", nullable=true, options={"default": null}) | ||||
|      * @Serializer\Groups({"read"}) | ||||
|      */ | ||||
|     private ?\DateTimeImmutable $createdAt; | ||||
|  | ||||
|     /** | ||||
|      * @ORM\ManyToOne( | ||||
|      *     targetEntity=User::class | ||||
|      * ) | ||||
|      * @Serializer\Groups({"read"}) | ||||
|      */ | ||||
|     private ?User $updatedBy; | ||||
|  | ||||
|     /** | ||||
|      * @ORM\Column(type="date_immutable", nullable=true, options={"default": null}) | ||||
|      * @Serializer\Groups({"read"}) | ||||
|      */ | ||||
|     private ?DateTimeImmutable $updatedAt; | ||||
|  | ||||
|     // TODO: indiquer le document généré par le module "document" | ||||
|     private ?StoredObject $storedObject; | ||||
|  | ||||
|     // TODO: ajouter gabarit | ||||
|  | ||||
|     /** | ||||
|      * @return AccompanyingPeriodWorkEvaluation|null | ||||
|      */ | ||||
|     public function getAccompanyingPeriodWorkEvaluation(): ?AccompanyingPeriodWorkEvaluation | ||||
|     { | ||||
|         return $this->accompanyingPeriodWorkEvaluation; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param AccompanyingPeriodWorkEvaluation|null $accompanyingPeriodWorkEvaluation | ||||
|      * @return AccompanyingPeriodWorkEvaluationDocument | ||||
|      */ | ||||
|     public function setAccompanyingPeriodWorkEvaluation(?AccompanyingPeriodWorkEvaluation $accompanyingPeriodWorkEvaluation): AccompanyingPeriodWorkEvaluationDocument | ||||
|     { | ||||
|         $this->accompanyingPeriodWorkEvaluation = $accompanyingPeriodWorkEvaluation; | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return StoredObject|null | ||||
|      */ | ||||
|     public function getStoredObject(): ?StoredObject | ||||
|     { | ||||
|         return $this->storedObject; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param StoredObject|null $storedObject | ||||
|      * @return AccompanyingPeriodWorkEvaluationDocument | ||||
|      */ | ||||
|     public function setStoredObject(?StoredObject $storedObject): AccompanyingPeriodWorkEvaluationDocument | ||||
|     { | ||||
|         $this->storedObject = $storedObject; | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function setCreatedBy(User $user): \Chill\MainBundle\Doctrine\Model\TrackCreationInterface | ||||
|     { | ||||
|         $this->createdBy = $user; | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function setCreatedAt(\DateTimeInterface $datetime): \Chill\MainBundle\Doctrine\Model\TrackCreationInterface | ||||
|     { | ||||
|         $this->createdAt = $datetime; | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function setUpdatedBy(User $user): \Chill\MainBundle\Doctrine\Model\TrackUpdateInterface | ||||
|     { | ||||
|         $this->updatedBy = $user; | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function setUpdatedAt(\DateTimeInterface $datetime): \Chill\MainBundle\Doctrine\Model\TrackUpdateInterface | ||||
|     { | ||||
|         $this->updatedAt = $datetime; | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return int|null | ||||
|      */ | ||||
|     public function getId(): ?int | ||||
|     { | ||||
|         return $this->id; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return User|null | ||||
|      */ | ||||
|     public function getCreatedBy(): ?User | ||||
|     { | ||||
|         return $this->createdBy; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return \DateTimeImmutable|null | ||||
|      */ | ||||
|     public function getCreatedAt(): ?\DateTimeInterface | ||||
|     { | ||||
|         return $this->createdAt; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return User|null | ||||
|      */ | ||||
|     public function getUpdatedBy(): ?User | ||||
|     { | ||||
|         return $this->updatedBy; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return DateTimeImmutable|null | ||||
|      */ | ||||
|     public function getUpdatedAt(): ?DateTimeInterface | ||||
|     { | ||||
|         return $this->updatedAt; | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -30,6 +30,7 @@ use Chill\MainBundle\Entity\Country; | ||||
| use Chill\MainBundle\Entity\User; | ||||
| use Chill\PersonBundle\Entity\Household\Household; | ||||
| use Chill\PersonBundle\Entity\MaritalStatus; | ||||
| use Chill\PersonBundle\Entity\AccompanyingPeriod; | ||||
| use Chill\PersonBundle\Entity\Household\HouseholdMember; | ||||
| use Chill\MainBundle\Entity\HasCenterInterface; | ||||
| use Chill\MainBundle\Entity\Address; | ||||
| @@ -379,6 +380,19 @@ class Person implements HasCenterInterface, TrackCreationInterface, TrackUpdateI | ||||
|      */ | ||||
|     private Collection $householdAddresses; | ||||
|  | ||||
|     /** | ||||
|      * @ORM\OneToMany( | ||||
|      *  targetEntity=AccompanyingPeriod::class, | ||||
|      *  mappedBy="personLocation" | ||||
|      * ) | ||||
|      */ | ||||
|     private Collection $periodLocatedOn; | ||||
|  | ||||
|     /** | ||||
|      * Person constructor. | ||||
|      * | ||||
|      * @param \DateTime|null $opening | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
|         $this->accompanyingPeriodParticipations = new ArrayCollection(); | ||||
|   | ||||
| @@ -3,10 +3,14 @@ | ||||
| namespace Chill\PersonBundle\Entity\SocialWork; | ||||
|  | ||||
| use Doctrine\ORM\Mapping as ORM; | ||||
| use Symfony\Component\Serializer\Annotation as Serializer; | ||||
|  | ||||
| /** | ||||
|  * @ORM\Entity | ||||
|  * @ORM\Table(name="chill_person_social_work_evaluation") | ||||
|  * @Serializer\DiscriminatorMap(typeProperty="type", mapping={ | ||||
|  *     "social_work_evaluation"=Evaluation::class | ||||
|  *     }) | ||||
|  */ | ||||
| class Evaluation | ||||
| { | ||||
| @@ -14,26 +18,33 @@ class Evaluation | ||||
|      * @ORM\Id | ||||
|      * @ORM\GeneratedValue | ||||
|      * @ORM\Column(type="integer") | ||||
|      * @Serializer\Groups({"read"}) | ||||
|      */ | ||||
|     private $id; | ||||
|  | ||||
|     /** | ||||
|      * @ORM\Column(type="json") | ||||
|      * @Serializer\Groups({"read"}) | ||||
|      */ | ||||
|     private $title = []; | ||||
|  | ||||
|     /** | ||||
|      * @ORM\Column(type="dateinterval", nullable=true) | ||||
|      * @ORM\Column(type="dateinterval", nullable=true, options={"default": null}) | ||||
|      * @Serializer\Groups({"read"}) | ||||
|      */ | ||||
|     private $delay; | ||||
|  | ||||
|     /** | ||||
|      * @ORM\Column(type="dateinterval") | ||||
|      * @ORM\Column(type="dateinterval", nullable=true, options={"default": null}) | ||||
|      * @Serializer\Groups({"read"}) | ||||
|      */ | ||||
|     private $notificationDelay; | ||||
|  | ||||
|     /** | ||||
|      * @ORM\ManyToOne(targetEntity=SocialAction::class) | ||||
|      * @ORM\ManyToOne( | ||||
|      *     targetEntity=SocialAction::class, | ||||
|      *     inversedBy="evaluations" | ||||
|      * ) | ||||
|      */ | ||||
|     private $socialAction; | ||||
|  | ||||
|   | ||||
| @@ -68,6 +68,15 @@ class SocialAction | ||||
|      */ | ||||
|     private $results; | ||||
|  | ||||
|     /** | ||||
|      * @var Collection | ||||
|      * @ORM\OneToMany( | ||||
|      *     targetEntity=Evaluation::class, | ||||
|      *     mappedBy="socialAction" | ||||
|      * ) | ||||
|      */ | ||||
|     private Collection $evaluations; | ||||
|  | ||||
|     public function __construct() | ||||
|     { | ||||
|         $this->children = new ArrayCollection(); | ||||
| @@ -257,4 +266,12 @@ class SocialAction | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return Collection | ||||
|      */ | ||||
|     public function getEvaluations(): Collection | ||||
|     { | ||||
|         return $this->evaluations; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -25,6 +25,7 @@ namespace Chill\PersonBundle\Repository; | ||||
| use Chill\PersonBundle\Entity\AccompanyingPeriod; | ||||
| use Doctrine\ORM\EntityManagerInterface; | ||||
| use Doctrine\ORM\EntityRepository; | ||||
| use Doctrine\ORM\QueryBuilder; | ||||
| use Doctrine\Persistence\ObjectRepository; | ||||
|  | ||||
| final class AccompanyingPeriodRepository implements ObjectRepository | ||||
| @@ -48,7 +49,7 @@ final class AccompanyingPeriodRepository implements ObjectRepository | ||||
|         return $this->repository->findAll(); | ||||
|     } | ||||
|  | ||||
|     public function findBy(array $criteria, ?array $orderBy = null, $limit = null, $offset = null): ?AccompanyingPeriod | ||||
|     public function findBy(array $criteria, ?array $orderBy = null, $limit = null, $offset = null): array | ||||
|     { | ||||
|         return $this->repository->findBy($criteria, $orderBy, $limit, $offset); | ||||
|     } | ||||
| @@ -62,5 +63,4 @@ final class AccompanyingPeriodRepository implements ObjectRepository | ||||
|     { | ||||
|         return AccompanyingPeriod::class; | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -59,6 +59,19 @@ | ||||
|           </form> | ||||
|         </div> | ||||
|  | ||||
|     {% endif %} | ||||
|  | ||||
|     {% if accompanyingCourse.step != 'DRAFT' and  | ||||
|       (accompanyingCourse.locationStatus == 'address' or accompanyingCourse.locationStatus == 'none') | ||||
|       %} | ||||
|        <div class="alert alert-danger"> | ||||
|          <div class="message"> | ||||
|            {{ 'This course is located at a temporarily address. You should locate this course to an user'|trans }} | ||||
|          </div> | ||||
|        </div> | ||||
|        | ||||
|  | ||||
|  | ||||
|     {% endif %} | ||||
|  | ||||
|     <h2>{{ 'Associated peoples'|trans }}</h2> | ||||
|   | ||||
| @@ -0,0 +1,132 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Chill\PersonBundle\Serializer\Normalizer; | ||||
|  | ||||
| use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWork; | ||||
| use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWorkEvaluation; | ||||
| use Chill\PersonBundle\Entity\Person; | ||||
| use Chill\PersonBundle\Entity\SocialWork\Goal; | ||||
| use Chill\PersonBundle\Entity\SocialWork\Result; | ||||
| use Chill\PersonBundle\Entity\SocialWork\SocialAction; | ||||
| use Chill\PersonBundle\Repository\AccompanyingPeriod\AccompanyingPeriodWorkRepository; | ||||
| use Chill\ThirdPartyBundle\Entity\ThirdParty; | ||||
| use Doctrine\ORM\EntityManagerInterface; | ||||
| use Symfony\Component\Serializer\Exception\BadMethodCallException; | ||||
| use Symfony\Component\Serializer\Exception\ExceptionInterface; | ||||
| use Symfony\Component\Serializer\Exception\ExtraAttributesException; | ||||
| use Symfony\Component\Serializer\Exception\InvalidArgumentException; | ||||
| use Symfony\Component\Serializer\Exception\LogicException; | ||||
| use Symfony\Component\Serializer\Exception\RuntimeException; | ||||
| use Symfony\Component\Serializer\Exception\UnexpectedValueException; | ||||
| use Symfony\Component\Serializer\Normalizer\AbstractNormalizer; | ||||
| use Symfony\Component\Serializer\Normalizer\ContextAwareDenormalizerInterface; | ||||
| use Symfony\Component\Serializer\Normalizer\DenormalizerAwareInterface; | ||||
| use Symfony\Component\Serializer\Normalizer\DenormalizerAwareTrait; | ||||
| use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; | ||||
| use Symfony\Component\Serializer\Normalizer\ObjectToPopulateTrait; | ||||
|  | ||||
| /** | ||||
|  * This denormalizer rely on AbstractNormalizer for most of the job, and | ||||
|  * add some logic for synchronizing collection. | ||||
|  */ | ||||
| class AccompanyingPeriodWorkDenormalizer implements DenormalizerAwareInterface, ContextAwareDenormalizerInterface | ||||
| { | ||||
|     use DenormalizerAwareTrait; | ||||
|     use ObjectToPopulateTrait; | ||||
|  | ||||
|     private AccompanyingPeriodWorkRepository $workRepository; | ||||
|     private EntityManagerInterface $em; | ||||
|  | ||||
|     public const GROUP_CREATE = 'accompanying_period_work:create'; | ||||
|     public const GROUP_EDIT   = 'accompanying_period_work:edit'; | ||||
|  | ||||
|     /** | ||||
|      * @param AccompanyingPeriodWorkRepository $workRepository | ||||
|      */ | ||||
|     public function __construct( | ||||
|         AccompanyingPeriodWorkRepository $workRepository, | ||||
|         EntityManagerInterface $em | ||||
|     ) { | ||||
|         $this->workRepository = $workRepository; | ||||
|         $this->em = $em; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @inheritDoc | ||||
|      */ | ||||
|     public function denormalize($data, string $type, string $format = null, array $context = []) | ||||
|     { | ||||
|         $work = $this->denormalizer->denormalize($data, $type, $format, \array_merge($context, | ||||
|             ['skip' => self::class])); | ||||
|  | ||||
|         if (\in_array('accompanying_period_work:edit', $context['groups'] ?? [])) { | ||||
|             $this->handleEvaluationCollection($data, $work, $format, $context); | ||||
|         } | ||||
|  | ||||
|         return $work; | ||||
|     } | ||||
|  | ||||
|     private function handleEvaluationCollection(array $data, AccompanyingPeriodWork $work, string $format, array $context) | ||||
|     { | ||||
|         $dataById = []; | ||||
|         $dataWithoutId = []; | ||||
|         foreach ($data['accompanyingPeriodWorkEvaluations'] as $e) { | ||||
|            if (\array_key_exists('id', $e)) { | ||||
|                $dataById[$e['id']] = $e; | ||||
|            } else { | ||||
|                $dataWithoutId[] = $e; | ||||
|            } | ||||
|         } | ||||
|  | ||||
|         // partition the separate kept evaluations and removed one | ||||
|         list($kept, $removed) = $work->getAccompanyingPeriodWorkEvaluations() | ||||
|             ->partition( | ||||
|                 fn(int $key, AccompanyingPeriodWorkEvaluation $a) => \array_key_exists($a->getId(), $dataById) | ||||
|             ); | ||||
|  | ||||
|         // remove the evaluations from work | ||||
|         foreach ($removed as $r) { | ||||
|             $work->removeAccompanyingPeriodWorkEvaluation($r); | ||||
|         } | ||||
|         // handle the evaluation kept | ||||
|         foreach ($kept as $k) { | ||||
|             $this->denormalizer->denormalize( | ||||
|                 $dataById[$k->getId()], | ||||
|                AccompanyingPeriodWorkEvaluation::class, | ||||
|                 $format, | ||||
|                 \array_merge( | ||||
|                     $context, | ||||
|                     [ | ||||
|                         'groups' => [ 'write' ], | ||||
|                         AbstractNormalizer::OBJECT_TO_POPULATE => $k | ||||
|                     ] | ||||
|                 ) | ||||
|             ); | ||||
|         } | ||||
|         // create new evaluation | ||||
|         foreach ($dataWithoutId as $newData) { | ||||
|             $evaluation = $this->denormalizer->denormalize( | ||||
|                 $newData, | ||||
|                 AccompanyingPeriodWorkEvaluation::class, | ||||
|                 $format, | ||||
|                 \array_merge($context, ['groups' => [ 'accompanying_period_work_evaluation:create']] | ||||
|                 ) | ||||
|             ); | ||||
|             $work->addAccompanyingPeriodWorkEvaluation($evaluation); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @inheritDoc | ||||
|      */ | ||||
|     public function supportsDenormalization($data, string $type, string $format = null, array $context = []): bool | ||||
|     { | ||||
|         return $type === AccompanyingPeriodWork::class | ||||
|             && ($context['skip'] ?? null) !== self::class | ||||
|             && \is_array($data) | ||||
|             && \array_key_exists("type", $data) | ||||
|             && $data["type"] === 'accompanying_period_work'; | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -4,6 +4,7 @@ namespace Chill\PersonBundle\Tests\Controller; | ||||
|  | ||||
| use Chill\PersonBundle\Entity\AccompanyingPeriod; | ||||
| use Chill\MainBundle\Test\PrepareClientTrait; | ||||
| use Chill\PersonBundle\Entity\Household\Household; | ||||
| use Symfony\Component\HttpFoundation\Request; | ||||
| use Doctrine\ORM\EntityManagerInterface; | ||||
| use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; | ||||
| @@ -29,6 +30,21 @@ class HouseholdApiControllerTest extends WebTestCase | ||||
|         $this->assertResponseIsSuccessful(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @dataProvider generateHouseholdId | ||||
|      */ | ||||
|     public function testSuggestAddressByHousehold(int $householdId) | ||||
|     { | ||||
|         $client = $this->getClientAuthenticated(); | ||||
|  | ||||
|         $client->request( | ||||
|             Request::METHOD_GET, | ||||
|             "/api/1.0/person/address/suggest/by-household/{$householdId}.json" | ||||
|         ); | ||||
|  | ||||
|         $this->assertResponseIsSuccessful(); | ||||
|     } | ||||
|  | ||||
|     public function generatePersonId() | ||||
|     { | ||||
|         self::bootKernel(); | ||||
| @@ -51,5 +67,33 @@ class HouseholdApiControllerTest extends WebTestCase | ||||
|             ->first()->getPerson();  | ||||
|  | ||||
|         yield [ $person->getId() ]; | ||||
|     }  | ||||
|     } | ||||
|  | ||||
|     public function generateHouseholdId() | ||||
|     { | ||||
|         self::bootKernel(); | ||||
|  | ||||
|         $qb = self::$container->get(EntityManagerInterface::class) | ||||
|             ->createQueryBuilder(); | ||||
|  | ||||
|         $householdIds = $qb | ||||
|             ->select('DISTINCT household.id') | ||||
|             ->from(Household::class, 'household') | ||||
|             ->join('household.members', 'members') | ||||
|             ->join('members.person', 'person') | ||||
|             ->join('person.center', 'center') | ||||
|             ->where($qb->expr()->eq('center.name', ':center_name')) | ||||
|             ->andWhere($qb->expr()->gt('SIZE(person.accompanyingPeriodParticipations)', 0)) | ||||
|             ->setParameter('center_name', 'Center A') | ||||
|             ->setMaxResults(100) | ||||
|             ->getQuery() | ||||
|             ->getResult() | ||||
|         ; | ||||
|  | ||||
|         \shuffle($householdIds); | ||||
|  | ||||
|         yield [ \array_pop($householdIds)['id'] ]; | ||||
|         yield [ \array_pop($householdIds)['id'] ]; | ||||
|         yield [ \array_pop($householdIds)['id'] ]; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -45,6 +45,31 @@ class PersonApiControllerTest extends WebTestCase | ||||
|         $this->assertEquals($personId, $data['id']); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @dataProvider dataGetPersonFromCenterA | ||||
|      */ | ||||
|     public function testPersonAddressSuggestion($personId): void | ||||
|     { | ||||
|         $client = $this->getClientAuthenticated(); | ||||
|  | ||||
|         $client->request(Request::METHOD_GET, "/api/1.0/person/address/suggest/by-person/{$personId}.json"); | ||||
|  | ||||
|         $this->assertResponseIsSuccessful(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @dataProvider dataGetPersonFromCenterB | ||||
|      */ | ||||
|     public function testPersonAddressSuggestionUnauthorized($personId): void | ||||
|     { | ||||
|         $client = $this->getClientAuthenticated(); | ||||
|  | ||||
|         $client->request(Request::METHOD_GET, "/api/1.0/person/address/suggest/by-person/{$personId}.json"); | ||||
|         $response = $client->getResponse(); | ||||
|  | ||||
|         $this->assertEquals(403, $response->getStatusCode()); | ||||
|     } | ||||
|  | ||||
|     public function dataGetPersonFromCenterA(): \Iterator | ||||
|     { | ||||
|         self::bootKernel(); | ||||
| @@ -61,6 +86,8 @@ class PersonApiControllerTest extends WebTestCase | ||||
|  | ||||
|         yield \array_pop($personIds); | ||||
|         yield \array_pop($personIds); | ||||
|         yield \array_pop($personIds); | ||||
|         yield \array_pop($personIds); | ||||
|     }  | ||||
|  | ||||
|     public function dataGetPersonFromCenterB(): \Iterator | ||||
|   | ||||
| @@ -38,7 +38,7 @@ class PersonSearchTest extends WebTestCase | ||||
|            'q' => '@person Depardieu' | ||||
|         )); | ||||
|          | ||||
|         $this->assertRegExp('/Depardieu/', $crawler->text()); | ||||
|         $this->assertRegExp('/Depardieu/', $crawler->filter('.list-with-period')->text()); | ||||
|     } | ||||
|      | ||||
|     public function testExpectedNamed() | ||||
| @@ -49,82 +49,82 @@ class PersonSearchTest extends WebTestCase | ||||
|            'q' => '@person Depardieu', 'name' => 'person_regular' | ||||
|         )); | ||||
|          | ||||
|         $this->assertRegExp('/Depardieu/', $crawler->text()); | ||||
|         $this->assertRegExp('/Depardieu/', $crawler->filter('.list-with-period')->text()); | ||||
|     } | ||||
|      | ||||
|     public function testSearchByLastName() | ||||
|     { | ||||
|         $crawler = $this->generateCrawlerForSearch('@person lastname:Depardieu'); | ||||
|          | ||||
|         $this->assertRegExp('/Depardieu/', $crawler->text()); | ||||
|         $this->assertRegExp('/Depardieu/', $crawler->filter('.list-with-period')->text()); | ||||
|     } | ||||
|      | ||||
|     public function testSearchByFirstNameLower() | ||||
|     { | ||||
|         $crawler = $this->generateCrawlerForSearch('@person firstname:Gérard'); | ||||
|          | ||||
|         $this->assertRegExp('/Depardieu/', $crawler->text()); | ||||
|         $this->assertRegExp('/Depardieu/', $crawler->filter('.list-with-period')->text()); | ||||
|     } | ||||
|      | ||||
|     public function testSearchByFirstNamePartim() | ||||
|     { | ||||
|         $crawler = $this->generateCrawlerForSearch('@person firstname:Ger'); | ||||
|          | ||||
|         $this->assertRegExp('/Depardieu/', $crawler->text()); | ||||
|         $this->assertRegExp('/Depardieu/', $crawler->filter('.list-with-period')->text()); | ||||
|     } | ||||
|      | ||||
|     public function testLastNameAccentued() | ||||
|     { | ||||
|         $crawlerSpecial = $this->generateCrawlerForSearch('@person lastname:manço'); | ||||
|          | ||||
|         $this->assertRegExp('/Manço/', $crawlerSpecial->text()); | ||||
|         $this->assertRegExp('/Manço/', $crawlerSpecial->filter('.list-with-period')->text()); | ||||
|          | ||||
|          | ||||
|         $crawlerNoSpecial = $this->generateCrawlerForSearch('@person lastname:manco'); | ||||
|          | ||||
|         $this->assertRegExp('/Manço/', $crawlerNoSpecial->text()); | ||||
|         $this->assertRegExp('/Manço/', $crawlerNoSpecial->filter('.list-with-period')->text()); | ||||
|     } | ||||
|     | ||||
|     public function testSearchByFirstName() | ||||
|     { | ||||
|         $crawler = $this->generateCrawlerForSearch('@person firstname:Jean'); | ||||
|          | ||||
|         $this->assertRegExp('/Depardieu/', $crawler->text()); | ||||
|         $this->assertRegExp('/Depardieu/', $crawler->filter('.list-with-period')->text()); | ||||
|     } | ||||
|      | ||||
|     public function testSearchByFirstNameLower2() | ||||
|     { | ||||
|         $crawler = $this->generateCrawlerForSearch('@person firstname:jean'); | ||||
|          | ||||
|         $this->assertRegExp('/Depardieu/', $crawler->text()); | ||||
|         $this->assertRegExp('/Depardieu/', $crawler->filter('.list-with-period')->text()); | ||||
|     } | ||||
|      | ||||
|     public function testSearchByFirstNamePartim2() | ||||
|     { | ||||
|         $crawler = $this->generateCrawlerForSearch('@person firstname:ean'); | ||||
|          | ||||
|         $this->assertRegExp('/Depardieu/', $crawler->text()); | ||||
|         $this->assertRegExp('/Depardieu/', $crawler->filter('.list-with-period')->text()); | ||||
|     } | ||||
|      | ||||
|     public function testSearchByFirstNameAccented() | ||||
|     { | ||||
|         $crawlerSpecial = $this->generateCrawlerForSearch('@person firstname:Gérard'); | ||||
|          | ||||
|         $this->assertRegExp('/Gérard/', $crawlerSpecial->text()); | ||||
|         $this->assertRegExp('/Gérard/', $crawlerSpecial->filter('.list-with-period')->text()); | ||||
|          | ||||
|          | ||||
|         $crawlerNoSpecial = $this->generateCrawlerForSearch('@person firstname:Gerard'); | ||||
|          | ||||
|         $this->assertRegExp('/Gérard/', $crawlerNoSpecial->text()); | ||||
|         $this->assertRegExp('/Gérard/', $crawlerNoSpecial->filter('.list-with-period')->text()); | ||||
|     } | ||||
|      | ||||
|     public function testSearchCombineLastnameAndNationality() | ||||
|     { | ||||
|         $crawler = $this->generateCrawlerForSearch('@person lastname:Depardieu nationality:RU'); | ||||
|          | ||||
|         $this->assertRegExp('/Gérard/', $crawler->text()); | ||||
|         $this->assertRegExp('/Gérard/', $crawler->filter('.list-with-period')->text()); | ||||
|         //if this is a AND clause, Jean Depardieu should not appears | ||||
|         $this->assertNotRegExp('/Jean/', $crawler->text(), | ||||
|         $this->assertNotRegExp('/Jean/', $crawler->filter('.list-with-period')->text(), | ||||
|               "assert clause firstname and nationality are AND"); | ||||
|     } | ||||
|      | ||||
| @@ -132,9 +132,9 @@ class PersonSearchTest extends WebTestCase | ||||
|     { | ||||
|         $crawler = $this->generateCrawlerForSearch('@person lastname:Depardieu firstname:Jean'); | ||||
|          | ||||
|         $this->assertRegExp('/Depardieu/', $crawler->text()); | ||||
|         $this->assertRegExp('/Depardieu/', $crawler->filter('.list-with-period')->text()); | ||||
|         //if this is a AND clause, Jean Depardieu should not appears | ||||
|         $this->assertNotRegExp('/Gérard/', $crawler->text(), | ||||
|         $this->assertNotRegExp('/Gérard/', $crawler->filter('.list-with-period')->text(), | ||||
|               "assert clause firstname and nationality are AND"); | ||||
|     } | ||||
|      | ||||
| @@ -142,54 +142,54 @@ class PersonSearchTest extends WebTestCase | ||||
|     { | ||||
|         $crawler = $this->generateCrawlerForSearch('@person birthdate:1948-12-27'); | ||||
|          | ||||
|         $this->assertRegExp('/Gérard/', $crawler->text()); | ||||
|         $this->assertRegExp('/Bart/', $crawler->text()); | ||||
|         $this->assertRegExp('/Gérard/', $crawler->filter('.list-with-period')->text()); | ||||
|         $this->assertRegExp('/Bart/', $crawler->filter('.list-with-period')->text()); | ||||
|     } | ||||
|      | ||||
|     public function testSearchCombineBirthdateAndLastName() | ||||
|     { | ||||
|         $crawler = $this->generateCrawlerForSearch('@person birthdate:1948-12-27 lastname:(Van Snick)'); | ||||
|          | ||||
|         $this->assertRegExp('/Bart/', $crawler->text()); | ||||
|         $this->assertNotRegExp('/Depardieu/', $crawler->text()); | ||||
|         $this->assertRegExp('/Bart/', $crawler->filter('.list-with-period')->text()); | ||||
|         $this->assertNotRegExp('/Depardieu/', $crawler->filter('.list-with-period')->text()); | ||||
|     } | ||||
|      | ||||
|     public function testSearchCombineGenderAndLastName() | ||||
|     { | ||||
|         $crawler = $this->generateCrawlerForSearch('@person gender:woman lastname:(Depardieu)'); | ||||
|          | ||||
|         $this->assertRegExp('/Charline/', $crawler->text()); | ||||
|         $this->assertNotRegExp('/Gérard/', $crawler->text()); | ||||
|         $this->assertRegExp('/Charline/', $crawler->filter('.list-with-period')->text()); | ||||
|         $this->assertNotRegExp('/Gérard/', $crawler->filter('.list-with-period')->text()); | ||||
|     } | ||||
|      | ||||
|     public function testSearchMultipleTrigramUseAndClauseInDefault() | ||||
|     { | ||||
|         $crawler = $this->generateCrawlerForSearch('@person cha dep'); | ||||
|          | ||||
|         $this->assertRegExp('/Charline/', $crawler->text()); | ||||
|         $this->assertNotRegExp('/Gérard/', $crawler->text()); | ||||
|         $this->assertNotRegExp('/Jean/', $crawler->text()); | ||||
|         $this->assertRegExp('/Charline/', $crawler->filter('.list-with-period')->text()); | ||||
|         $this->assertNotRegExp('/Gérard/', $crawler->filter('.list-with-period')->text()); | ||||
|         $this->assertNotRegExp('/Jean/', $crawler->filter('.list-with-period')->text()); | ||||
|     } | ||||
|      | ||||
|     public function testDefaultAccented() | ||||
|     { | ||||
|         $crawlerSpecial = $this->generateCrawlerForSearch('@person manço'); | ||||
|          | ||||
|         $this->assertRegExp('/Manço/', $crawlerSpecial->text()); | ||||
|         $this->assertRegExp('/Manço/', $crawlerSpecial->filter('.list-with-period')->text()); | ||||
|          | ||||
|          | ||||
|         $crawlerNoSpecial = $this->generateCrawlerForSearch('@person manco'); | ||||
|          | ||||
|         $this->assertRegExp('/Manço/', $crawlerNoSpecial->text()); | ||||
|         $this->assertRegExp('/Manço/', $crawlerNoSpecial->filter('.list-with-period')->text()); | ||||
|          | ||||
|         $crawlerSpecial = $this->generateCrawlerForSearch('@person Étienne'); | ||||
|          | ||||
|         $this->assertRegExp('/Étienne/', $crawlerSpecial->text()); | ||||
|         $this->assertRegExp('/Étienne/', $crawlerSpecial->filter('.list-with-period')->text()); | ||||
|          | ||||
|          | ||||
|         $crawlerNoSpecial = $this->generateCrawlerForSearch('@person etienne'); | ||||
|          | ||||
|         $this->assertRegExp('/Étienne/', $crawlerNoSpecial->text()); | ||||
|         $this->assertRegExp('/Étienne/', $crawlerNoSpecial->filter('.list-with-period')->text()); | ||||
|     } | ||||
|      | ||||
|     /** | ||||
|   | ||||
| @@ -0,0 +1,122 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Chill\PersonBundle\Tests\Validator\AccompanyingPeriod; | ||||
|  | ||||
| use Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\LocationValidityValidator; | ||||
| use Chill\PersonBundle\Templating\Entity\PersonRender; | ||||
| use Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\LocationValidity; | ||||
| use Chill\PersonBundle\Entity\Person; | ||||
| use Chill\PersonBundle\Entity\AccompanyingPeriod; | ||||
| use Symfony\Component\Validator\Test\ConstraintValidatorTestCase; | ||||
|  | ||||
| class LocationValidityValidatorTest extends ConstraintValidatorTestCase | ||||
| { | ||||
|     public function testValidAddress() | ||||
|     { | ||||
|         $constraint = $this->getConstraint(); | ||||
|  | ||||
|         $period = new AccompanyingPeriod(); | ||||
|         $person = new Person(); | ||||
|         $period->addPerson($person); | ||||
|  | ||||
|         $period->setPersonLocation($person); | ||||
|  | ||||
|         $this->validator->validate($period, $constraint); | ||||
|  | ||||
|         $this->assertNoViolation(); | ||||
|     } | ||||
|  | ||||
|     public function testPeriodDoesNotContainsPersonOnRemovedPerson() | ||||
|     { | ||||
|         $constraint = $this->getConstraint(); | ||||
|  | ||||
|         $period = new AccompanyingPeriod(); | ||||
|         $person1 = new Person(); | ||||
|         $period->addPerson($person1); | ||||
|  | ||||
|         $period->setPersonLocation($person1); | ||||
|  | ||||
|         $period->removePerson($person1); | ||||
|  | ||||
|         $this->validator->validate($period, $constraint); | ||||
|  | ||||
|         $this->buildViolation('messagePersonLocatedMustBeAssociated') | ||||
|              ->setParameters([ | ||||
|                  '{{ person_name }}' => 'name' | ||||
|              ]) | ||||
|              ->assertRaised() | ||||
|          ; | ||||
|     } | ||||
|  | ||||
|     public function testPeriodDoesNotContainsPersonOnOtherPerson() | ||||
|     { | ||||
|         $constraint = $this->getConstraint(); | ||||
|  | ||||
|         $period = new AccompanyingPeriod(); | ||||
|         $person1 = new Person(); | ||||
|         $person2 = new Person(); | ||||
|         $period->addPerson($person1); | ||||
|  | ||||
|         $period->setPersonLocation($person2); | ||||
|  | ||||
|         $this->validator->validate($period, $constraint); | ||||
|  | ||||
|         $this->buildViolation('messagePersonLocatedMustBeAssociated') | ||||
|              ->setParameters([ | ||||
|                  '{{ person_name }}' => 'name' | ||||
|              ]) | ||||
|              ->assertRaised() | ||||
|          ; | ||||
|     } | ||||
|  | ||||
|     public function testPeriodDoesNotContainsPersonOnAnyPerson() | ||||
|     { | ||||
|         $constraint = $this->getConstraint(); | ||||
|  | ||||
|         $period = new AccompanyingPeriod(); | ||||
|         $person1 = new Person(); | ||||
|         $period->setPersonLocation($person1); | ||||
|  | ||||
|         $this->validator->validate($period, $constraint); | ||||
|  | ||||
|         $this->buildViolation('messagePersonLocatedMustBeAssociated') | ||||
|              ->setParameters([ | ||||
|                  '{{ person_name }}' => 'name' | ||||
|              ]) | ||||
|              ->assertRaised() | ||||
|          ; | ||||
|     } | ||||
|  | ||||
|     public function testRemoveLocationOnPeriodValidated() | ||||
|     { | ||||
|         $constraint = $this->getConstraint(); | ||||
|  | ||||
|         $period = new AccompanyingPeriod(); | ||||
|         $period->setStep('not draft'); | ||||
|  | ||||
|         $this->validator->validate($period, $constraint); | ||||
|  | ||||
|         $this->buildViolation('messagePeriodMustRemainsLocated') | ||||
|              ->assertRaised() | ||||
|          ; | ||||
|     } | ||||
|  | ||||
|     protected function getConstraint() | ||||
|     { | ||||
|         return new LocationValidity([ | ||||
|             'messagePersonLocatedMustBeAssociated' => 'messagePersonLocatedMustBeAssociated', | ||||
|             'messagePeriodMustRemainsLocated' => 'messagePeriodMustRemainsLocated' | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     protected function createValidator() | ||||
|     { | ||||
|         $render= $this->createMock(PersonRender::class); | ||||
|         $render->method('renderString') | ||||
|             ->willReturn('name') | ||||
|         ; | ||||
|  | ||||
|         return new LocationValidityValidator($render);  | ||||
|     } | ||||
|      | ||||
| } | ||||
| @@ -0,0 +1,20 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod; | ||||
|  | ||||
| use Symfony\Component\Validator\Constraint; | ||||
|  | ||||
| /** | ||||
|  * @Annotation | ||||
|  */ | ||||
| class LocationValidity extends Constraint | ||||
| { | ||||
|     public $messagePersonLocatedMustBeAssociated = "The person where the course is located must be associated to the course. Change course's location before removing the person."; | ||||
|  | ||||
|     public $messagePeriodMustRemainsLocated = "The period must remains located"; | ||||
|  | ||||
|     public function getTargets() | ||||
|     { | ||||
|         return self::CLASS_CONSTRAINT; | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,54 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod; | ||||
|  | ||||
| use Symfony\Component\Validator\Constraint; | ||||
| use Symfony\Component\Validator\ConstraintValidator; | ||||
| use Symfony\Component\Validator\Exception\UnexpectedTypeException; | ||||
| use Symfony\Component\Validator\Exception\UnexpectedValueException; | ||||
| use Chill\PersonBundle\Entity\AccompanyingPeriod; | ||||
| use Chill\PersonBundle\Templating\Entity\PersonRender; | ||||
|  | ||||
| class LocationValidityValidator extends ConstraintValidator | ||||
| { | ||||
|     private PersonRender $render; | ||||
|  | ||||
|     public function __construct(PersonRender $render) | ||||
|     { | ||||
|         $this->render = $render; | ||||
|     } | ||||
|  | ||||
|     public function validate($period, Constraint $constraint) | ||||
|     { | ||||
|         if (!$constraint instanceof LocationValidity) { | ||||
|             throw new UnexpectedTypeException($constraint, LocationValidity::class); | ||||
|         } | ||||
|  | ||||
|         if (!$period instanceof AccompanyingPeriod) { | ||||
|             throw new UnexpectedValueException($value, AccompanyingPeriod::class); | ||||
|         } | ||||
|  | ||||
|         if ($period->getLocationStatus() === 'person') { | ||||
|             if (null === $period->getOpenParticipationContainsPerson( | ||||
|                 $period->getPersonLocation())) { | ||||
|                 $this->context->buildViolation($constraint->messagePersonLocatedMustBeAssociated) | ||||
|                               ->setParameter('{{ person_name }}', $this->render->renderString( | ||||
|                                   $period->getPersonLocation(), [] | ||||
|                               )) | ||||
|                               ->addViolation() | ||||
|                           ; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         if ($period->getStep() !== AccompanyingPeriod::STEP_DRAFT | ||||
|             && $period->getLocationStatus() === 'none') { | ||||
|             $this->context | ||||
|                  ->buildViolation( | ||||
|                      $constraint->messagePeriodMustRemainsLocated | ||||
|                  ) | ||||
|                  ->addViolation() | ||||
|                  ; | ||||
|         } | ||||
|  | ||||
|     } | ||||
| } | ||||
| @@ -217,7 +217,7 @@ components: | ||||
|           type: integer | ||||
|         type: | ||||
|           type: string | ||||
|           enum:  | ||||
|           enum: | ||||
|             - 'accompanying_period_work' | ||||
|         note: | ||||
|           type: string | ||||
| @@ -296,7 +296,7 @@ paths: | ||||
|                 $ref: "#/components/schemas/Person" | ||||
|         403: | ||||
|           description: "Unauthorized" | ||||
|    | ||||
|  | ||||
|   /1.0/person/person.json: | ||||
|     post: | ||||
|       tags: | ||||
| @@ -354,10 +354,63 @@ paths: | ||||
|           description: "OK" | ||||
|         422: | ||||
|           description: "Unprocessable entity (validation errors)" | ||||
|         400: | ||||
|           description: "transition cannot be applyed" | ||||
|  | ||||
|  | ||||
|   /1.0/person/address/suggest/by-person/{id}.json: | ||||
|     get: | ||||
|       tags: | ||||
|         - address | ||||
|       summary: get a list of suggested address for a person | ||||
|       description: > | ||||
|           The address are computed from various source. Currently: | ||||
|  | ||||
|           - the address of course to which the person is participating | ||||
|  | ||||
|           The current person's address is always ignored. | ||||
|       parameters: | ||||
|         - name: id | ||||
|           in: path | ||||
|           required: true | ||||
|           description: The person id | ||||
|           schema: | ||||
|             type: integer | ||||
|             format: integer | ||||
|             minimum: 1 | ||||
|       responses: | ||||
|         401: | ||||
|           description: "Unauthorized" | ||||
|         404: | ||||
|           description: "Not found" | ||||
|         200: | ||||
|           description: "OK" | ||||
|  | ||||
|   /1.0/person/address/suggest/by-household/{id}.json: | ||||
|     get: | ||||
|       tags: | ||||
|         - address | ||||
|       summary: get a list of suggested address for a household | ||||
|       description: > | ||||
|           The address are computed from various source. Currently: | ||||
|  | ||||
|           - the address of course to which the members is participating | ||||
|  | ||||
|           The current household address is always ignored. | ||||
|       parameters: | ||||
|         - name: id | ||||
|           in: path | ||||
|           required: true | ||||
|           description: The household id | ||||
|           schema: | ||||
|             type: integer | ||||
|             format: integer | ||||
|             minimum: 1 | ||||
|       responses: | ||||
|         401: | ||||
|           description: "Unauthorized" | ||||
|         404: | ||||
|           description: "Not found" | ||||
|         200: | ||||
|           description: "OK" | ||||
|  | ||||
|   /1.0/person/accompanying-course/{id}.json: | ||||
|     get: | ||||
| @@ -416,6 +469,26 @@ paths: | ||||
|                       This is my an initial comment. | ||||
|  | ||||
|                       Say hello to the new "parcours"! | ||||
|               Setting person with id 8405 as locator: | ||||
|                 value: | ||||
|                   type: accompanying_period | ||||
|                   id: 0 | ||||
|                   personLocation: | ||||
|                     type: person | ||||
|                     id: 8405 | ||||
|               Removing person location for both person and address: | ||||
|                 value: | ||||
|                   type: accompanying_period | ||||
|                   id: 0 | ||||
|                   personLocation: null | ||||
|                   addressLocation: null | ||||
|               Adding address with id 7960 as temporarily address: | ||||
|                 value: | ||||
|                   type: accompanying_period | ||||
|                   id: 0 | ||||
|                   personLocation: null | ||||
|                   addressLocation: | ||||
|                       id: 7960 | ||||
|       responses: | ||||
|         401: | ||||
|           description: "Unauthorized" | ||||
| @@ -962,7 +1035,7 @@ paths: | ||||
|     get: | ||||
|       tags: | ||||
|         - person | ||||
|       summary: Return a list of all origins  | ||||
|       summary: Return a list of all origins | ||||
|       responses: | ||||
|         200: | ||||
|           description: "ok" | ||||
| @@ -970,7 +1043,7 @@ paths: | ||||
|   /1.0/person/accompanying-period/origin/{id}.json: | ||||
|     get: | ||||
|       tags: | ||||
|         - person  | ||||
|         - person | ||||
|       summary: Return an origin by id | ||||
|       parameters: | ||||
|         - name: id | ||||
| @@ -1184,7 +1257,7 @@ paths: | ||||
|   /1.0/person/social/social-action.json: | ||||
|     get: | ||||
|       tags: | ||||
|         - accompanying-course-work | ||||
|         - social-work-social-action | ||||
|       summary: get a list of social action | ||||
|       responses: | ||||
|         401: | ||||
| @@ -1195,7 +1268,7 @@ paths: | ||||
|   /1.0/person/social/social-action/{id}.json: | ||||
|     get: | ||||
|       tags: | ||||
|         - accompanying-course-work | ||||
|         - social-work-social-action | ||||
|       parameters: | ||||
|         - name: id | ||||
|           in: path | ||||
| @@ -1218,7 +1291,7 @@ paths: | ||||
|   /1.0/person/social/social-action/by-social-issue/{id}.json: | ||||
|     get: | ||||
|       tags: | ||||
|         - accompanying-course-work | ||||
|         - social-work-social-action | ||||
|       parameters: | ||||
|         - name: id | ||||
|           in: path | ||||
| @@ -1238,6 +1311,25 @@ paths: | ||||
|         400: | ||||
|           description: "Bad Request" | ||||
|  | ||||
|   /1.0/person/social-work/evaluation/by-social-action/{social_action_id}.json: | ||||
|     get: | ||||
|       tags: | ||||
|         - social-work-evaluation | ||||
|       summary: return a list of evaluation which are available for a given social action | ||||
|       parameters: | ||||
|         - name: social_action_id | ||||
|           in: path | ||||
|           required: true | ||||
|           description: The social action's id | ||||
|           schema: | ||||
|             type: integer | ||||
|             format: integer | ||||
|             minimum: 1 | ||||
|       responses: | ||||
|         200: | ||||
|           description: ok | ||||
|         404: | ||||
|           description: not found | ||||
|  | ||||
|  | ||||
|   /1.0/person/social-work/social-issue.json: | ||||
| @@ -1248,7 +1340,7 @@ paths: | ||||
|       responses: | ||||
|         200: | ||||
|           description: "ok" | ||||
|    | ||||
|  | ||||
|   /1.0/person/social-work/social-issue/{id}.json: | ||||
|     get: | ||||
|       tags: | ||||
| @@ -1274,7 +1366,7 @@ paths: | ||||
|           description: "not found" | ||||
|         401: | ||||
|           description: "Unauthorized" | ||||
|    | ||||
|  | ||||
|   /1.0/person/social-work/result.json: | ||||
|     get: | ||||
|       tags: | ||||
|   | ||||
| @@ -97,3 +97,8 @@ services: | ||||
|         resource: '../Templating/Entity' | ||||
|         tags: | ||||
|             - 'chill.render_entity' | ||||
|  | ||||
|     Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\: | ||||
|         autowire: true | ||||
|         autoconfigure: true | ||||
|         resource: '../Validator/Constraints/AccompanyingPeriod' | ||||
|   | ||||
| @@ -81,6 +81,7 @@ Chill\PersonBundle\Entity\AccompanyingPeriod: | ||||
|     constraints: | ||||
|           - Callback: | ||||
|               callback: isDateConsistent | ||||
|           - 'Chill\PersonBundle\Validator\Constraints\AccompanyingPeriod\LocationValidity': ~ | ||||
|  | ||||
| Chill\PersonBundle\Entity\PersonPhone: | ||||
|     properties: | ||||
|   | ||||
| @@ -0,0 +1,39 @@ | ||||
| <?php | ||||
|  | ||||
| declare(strict_types=1); | ||||
|  | ||||
| namespace Chill\Migrations\Person; | ||||
|  | ||||
| use Doctrine\DBAL\Schema\Schema; | ||||
| use Doctrine\Migrations\AbstractMigration; | ||||
|  | ||||
| /** | ||||
|  * Add location to accompanying period | ||||
|  */ | ||||
| final class Version20210727152826 extends AbstractMigration | ||||
| { | ||||
|     public function getDescription(): string | ||||
|     { | ||||
|         return 'Add location to accompanying period'; | ||||
|     } | ||||
|  | ||||
|     public function up(Schema $schema): void | ||||
|     { | ||||
|         $this->addSql('ALTER TABLE chill_person_accompanying_period ADD personLocation_id INT DEFAULT NULL'); | ||||
|         $this->addSql('ALTER TABLE chill_person_accompanying_period ADD addressLocation_id INT DEFAULT NULL'); | ||||
|         $this->addSql('ALTER TABLE chill_person_accompanying_period ADD CONSTRAINT FK_E260A868D5213D34 FOREIGN KEY (personLocation_id) REFERENCES chill_person_person (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); | ||||
|         $this->addSql('ALTER TABLE chill_person_accompanying_period ADD CONSTRAINT FK_E260A8689B07D6BF FOREIGN KEY (addressLocation_id) REFERENCES chill_main_address (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); | ||||
|         $this->addSql('CREATE INDEX IDX_E260A868D5213D34 ON chill_person_accompanying_period (personLocation_id)'); | ||||
|         $this->addSql('CREATE INDEX IDX_E260A8689B07D6BF ON chill_person_accompanying_period (addressLocation_id)'); | ||||
|     } | ||||
|  | ||||
|     public function down(Schema $schema): void | ||||
|     { | ||||
|         $this->addSql('ALTER TABLE chill_person_accompanying_period DROP CONSTRAINT FK_E260A868D5213D34'); | ||||
|         $this->addSql('ALTER TABLE chill_person_accompanying_period DROP CONSTRAINT FK_E260A8689B07D6BF'); | ||||
|         $this->addSql('DROP INDEX IDX_E260A868D5213D34'); | ||||
|         $this->addSql('DROP INDEX IDX_E260A8689B07D6BF'); | ||||
|         $this->addSql('ALTER TABLE chill_person_accompanying_period DROP personLocation_id'); | ||||
|         $this->addSql('ALTER TABLE chill_person_accompanying_period DROP addressLocation_id'); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,45 @@ | ||||
| <?php | ||||
|  | ||||
| declare(strict_types=1); | ||||
|  | ||||
| namespace Chill\Migrations\Person; | ||||
|  | ||||
| use Doctrine\DBAL\Schema\Schema; | ||||
| use Doctrine\Migrations\AbstractMigration; | ||||
|  | ||||
| /** | ||||
|  * Create class AccompanyingPeriodWorkEvaluation | ||||
|  */ | ||||
| final class Version20210729163023 extends AbstractMigration | ||||
| { | ||||
|     public function getDescription(): string | ||||
|     { | ||||
|         return 'create class and tables for AccompanyingPeriodWorkEvaluation'; | ||||
|     } | ||||
|  | ||||
|     public function up(Schema $schema): void | ||||
|     { | ||||
|         $this->addSql('CREATE SEQUENCE chill_person_accompanying_period_work_evaluation_id_seq INCREMENT BY 1 MINVALUE 1 START 1'); | ||||
|         $this->addSql('CREATE TABLE chill_person_accompanying_period_work_evaluation (id INT NOT NULL, evaluation_id INT DEFAULT NULL, startDate DATE DEFAULT NULL, endDate DATE DEFAULT NULL, maxDate DATE DEFAULT NULL, warningInterval INTERVAL DEFAULT NULL, createdAt DATE DEFAULT NULL, updatedAt DATE DEFAULT NULL, accompanyingPeriodWork_id INT DEFAULT NULL, createdBy_id INT DEFAULT NULL, updatedBy_id INT DEFAULT NULL, PRIMARY KEY(id))'); | ||||
|         $this->addSql('CREATE INDEX IDX_741A3A0BC55C1209 ON chill_person_accompanying_period_work_evaluation (accompanyingPeriodWork_id)'); | ||||
|         $this->addSql('CREATE INDEX IDX_741A3A0B456C5646 ON chill_person_accompanying_period_work_evaluation (evaluation_id)'); | ||||
|         $this->addSql('CREATE INDEX IDX_741A3A0B3174800F ON chill_person_accompanying_period_work_evaluation (createdBy_id)'); | ||||
|         $this->addSql('CREATE INDEX IDX_741A3A0B65FF1AEC ON chill_person_accompanying_period_work_evaluation (updatedBy_id)'); | ||||
|         $this->addSql('COMMENT ON COLUMN chill_person_accompanying_period_work_evaluation.startDate IS \'(DC2Type:date_immutable)\''); | ||||
|         $this->addSql('COMMENT ON COLUMN chill_person_accompanying_period_work_evaluation.endDate IS \'(DC2Type:date_immutable)\''); | ||||
|         $this->addSql('COMMENT ON COLUMN chill_person_accompanying_period_work_evaluation.maxDate IS \'(DC2Type:date_immutable)\''); | ||||
|         $this->addSql('COMMENT ON COLUMN chill_person_accompanying_period_work_evaluation.warningInterval IS \'(DC2Type:dateinterval)\''); | ||||
|         $this->addSql('COMMENT ON COLUMN chill_person_accompanying_period_work_evaluation.createdAt IS \'(DC2Type:date_immutable)\''); | ||||
|         $this->addSql('COMMENT ON COLUMN chill_person_accompanying_period_work_evaluation.updatedAt IS \'(DC2Type:date_immutable)\''); | ||||
|         $this->addSql('ALTER TABLE chill_person_accompanying_period_work_evaluation ADD CONSTRAINT FK_741A3A0BC55C1209 FOREIGN KEY (accompanyingPeriodWork_id) REFERENCES chill_person_accompanying_period_work (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); | ||||
|         $this->addSql('ALTER TABLE chill_person_accompanying_period_work_evaluation ADD CONSTRAINT FK_741A3A0B456C5646 FOREIGN KEY (evaluation_id) REFERENCES chill_person_social_work_evaluation (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); | ||||
|         $this->addSql('ALTER TABLE chill_person_accompanying_period_work_evaluation ADD CONSTRAINT FK_741A3A0B3174800F FOREIGN KEY (createdBy_id) REFERENCES users (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); | ||||
|         $this->addSql('ALTER TABLE chill_person_accompanying_period_work_evaluation ADD CONSTRAINT FK_741A3A0B65FF1AEC FOREIGN KEY (updatedBy_id) REFERENCES users (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); | ||||
|     } | ||||
|  | ||||
|     public function down(Schema $schema): void | ||||
|     { | ||||
|         $this->addSql('DROP SEQUENCE chill_person_accompanying_period_work_evaluation_id_seq CASCADE'); | ||||
|         $this->addSql('DROP TABLE chill_person_accompanying_period_work_evaluation'); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,47 @@ | ||||
| <?php | ||||
|  | ||||
| declare(strict_types=1); | ||||
|  | ||||
| namespace Chill\Migrations\Person; | ||||
|  | ||||
| use Doctrine\DBAL\Schema\Schema; | ||||
| use Doctrine\Migrations\AbstractMigration; | ||||
|  | ||||
| /** | ||||
|  * Add document to AccompanyingPeriodWorkEvaluation | ||||
|  */ | ||||
| final class Version20210730094514 extends AbstractMigration | ||||
| { | ||||
|     public function getDescription(): string | ||||
|     { | ||||
|         return 'add documents to AccompanyingPeriodWorkEvaluation'; | ||||
|     } | ||||
|  | ||||
|     public function up(Schema $schema): void | ||||
|     { | ||||
|         $this->addSql('CREATE SEQUENCE chill_person_accompanying_period_work_eval_doc_id_seq INCREMENT BY 1 MINVALUE 1 START 1000'); | ||||
|         $this->addSql('CREATE TABLE chill_person_accompanying_period_work_evaluation_document (id INT NOT NULL, createdAt DATE DEFAULT NULL, updatedAt DATE DEFAULT NULL, accompanyingPeriodWorkEvaluation_id INT DEFAULT NULL, createdBy_id INT DEFAULT NULL, updatedBy_id INT DEFAULT NULL, PRIMARY KEY(id))'); | ||||
|         $this->addSql('CREATE INDEX IDX_33EC9229836F75B8 ON chill_person_accompanying_period_work_evaluation_document (accompanyingPeriodWorkEvaluation_id)'); | ||||
|         $this->addSql('CREATE INDEX IDX_33EC92293174800F ON chill_person_accompanying_period_work_evaluation_document (createdBy_id)'); | ||||
|         $this->addSql('CREATE INDEX IDX_33EC922965FF1AEC ON chill_person_accompanying_period_work_evaluation_document (updatedBy_id)'); | ||||
|         $this->addSql('COMMENT ON COLUMN chill_person_accompanying_period_work_evaluation_document.createdAt IS \'(DC2Type:date_immutable)\''); | ||||
|         $this->addSql('COMMENT ON COLUMN chill_person_accompanying_period_work_evaluation_document.updatedAt IS \'(DC2Type:date_immutable)\''); | ||||
|         $this->addSql('ALTER TABLE chill_person_accompanying_period_work_evaluation_document ADD CONSTRAINT FK_33EC9229836F75B8 FOREIGN KEY (accompanyingPeriodWorkEvaluation_id) REFERENCES chill_person_accompanying_period_work_evaluation (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); | ||||
|         $this->addSql('ALTER TABLE chill_person_accompanying_period_work_evaluation_document ADD CONSTRAINT FK_33EC92293174800F FOREIGN KEY (createdBy_id) REFERENCES users (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); | ||||
|         $this->addSql('ALTER TABLE chill_person_accompanying_period_work_evaluation_document ADD CONSTRAINT FK_33EC922965FF1AEC FOREIGN KEY (updatedBy_id) REFERENCES users (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); | ||||
|         $this->addSql('COMMENT ON COLUMN chill_person_accompanying_period_work.startDate IS \'(DC2Type:date_immutable)\''); | ||||
|         $this->addSql('COMMENT ON COLUMN chill_person_accompanying_period_work.endDate IS \'(DC2Type:date_immutable)\''); | ||||
|         $this->addSql('ALTER TABLE chill_person_accompanying_period_work ADD CONSTRAINT FK_B694FB365FF1AEC FOREIGN KEY (updatedBy_id) REFERENCES users (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); | ||||
|         $this->addSql('CREATE INDEX IDX_B694FB365FF1AEC ON chill_person_accompanying_period_work (updatedBy_id)'); | ||||
|     } | ||||
|  | ||||
|     public function down(Schema $schema): void | ||||
|     { | ||||
|         $this->addSql('COMMENT ON COLUMN chill_calendar.calendar_range.startdate IS \'(DC2Type:datetimetz_immutable)\''); | ||||
|         $this->addSql('COMMENT ON COLUMN chill_calendar.calendar_range.enddate IS \'(DC2Type:datetimetz_immutable)\''); | ||||
|         $this->addSql('DROP TABLE chill_person_accompanying_period_work_evaluation_document'); | ||||
|         $this->addSql('DROP SEQUENCE chill_person_accompanying_period_work_eval_doc_id_seq'); | ||||
|         $this->addSql('ALTER TABLE chill_person_accompanying_period_work DROP CONSTRAINT FK_B694FB365FF1AEC'); | ||||
|         $this->addSql('DROP INDEX IDX_B694FB365FF1AEC'); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,31 @@ | ||||
| <?php | ||||
|  | ||||
| declare(strict_types=1); | ||||
|  | ||||
| namespace Chill\Migrations\Person; | ||||
|  | ||||
| use Doctrine\DBAL\Schema\Schema; | ||||
| use Doctrine\Migrations\AbstractMigration; | ||||
|  | ||||
| /** | ||||
|  * add nullable fields to social work evaluation | ||||
|  */ | ||||
| final class Version20210730205407 extends AbstractMigration | ||||
| { | ||||
|     public function getDescription(): string | ||||
|     { | ||||
|         return 'add nullable fields to social work evaluation'; | ||||
|     } | ||||
|  | ||||
|     public function up(Schema $schema): void | ||||
|     { | ||||
|         $this->addSql('ALTER TABLE chill_person_social_work_evaluation ALTER delay DROP NOT NULL'); | ||||
|         $this->addSql('ALTER TABLE chill_person_social_work_evaluation ALTER notificationdelay DROP NOT NULL'); | ||||
|     } | ||||
|  | ||||
|     public function down(Schema $schema): void | ||||
|     { | ||||
|         $this->addSql('ALTER TABLE chill_person_social_work_evaluation ALTER delay SET NOT NULL'); | ||||
|         $this->addSql('ALTER TABLE chill_person_social_work_evaluation ALTER notificationDelay SET NOT NULL'); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,29 @@ | ||||
| <?php | ||||
|  | ||||
| declare(strict_types=1); | ||||
|  | ||||
| namespace Chill\Migrations\Person; | ||||
|  | ||||
| use Doctrine\DBAL\Schema\Schema; | ||||
| use Doctrine\Migrations\AbstractMigration; | ||||
|  | ||||
| /** | ||||
|  * Add comment to accompanying period work evaluation d | ||||
|  */ | ||||
| final class Version20210802202838 extends AbstractMigration | ||||
| { | ||||
|     public function getDescription(): string | ||||
|     { | ||||
|         return 'Add comment to accompanying period work evaluation'; | ||||
|     } | ||||
|  | ||||
|     public function up(Schema $schema): void | ||||
|     { | ||||
|         $this->addSql('ALTER TABLE chill_person_accompanying_period_work_evaluation ADD comment TEXT DEFAULT \'\' NOT NULL'); | ||||
|     } | ||||
|  | ||||
|     public function down(Schema $schema): void | ||||
|     { | ||||
|         $this->addSql('ALTER TABLE chill_person_accompanying_period_work_evaluation DROP comment'); | ||||
|     } | ||||
| } | ||||
| @@ -339,6 +339,7 @@ Show Accompanying Course: Voir le parcours | ||||
| Edit Accompanying Course: Modifier le parcours | ||||
| Create Accompanying Course: Créer un nouveau parcours | ||||
| Drop Accompanying Course: Supprimer le parcours | ||||
| This course is located at a temporarily address. You should locate this course to an user: Ce parcours est localisé à une adresse temporaire. Il devrait être localisé auprès d'un usager concerné. | ||||
|  | ||||
| # Household | ||||
| Household: Ménage | ||||
|   | ||||
		Reference in New Issue
	
	Block a user