diff --git a/.gitignore b/.gitignore index af5b221e..ed45ed34 100644 --- a/.gitignore +++ b/.gitignore @@ -54,4 +54,6 @@ assets/js/params.json ### docker .docker/data docker-compose.yml -/public/.htaccess \ No newline at end of file +/public/.htaccess + +/metabase_questions/ diff --git a/src/Controller/NavPro/DefaultController.php b/src/Controller/NavPro/DefaultController.php index 48897101..30ea7327 100644 --- a/src/Controller/NavPro/DefaultController.php +++ b/src/Controller/NavPro/DefaultController.php @@ -2,6 +2,7 @@ namespace App\Controller\NavPro; +use App\Entity\Navire; use App\Entity\NavPro\ControleLot; use App\Entity\NavPro\ControleUnitaire; use App\Form\NavPro\ControleLotType; @@ -86,7 +87,28 @@ public function ajoutControleUnitaire(Request $request, EntityManagerInterface $ $controleUnitaire->setType($type); $form = $this->createForm(ControleUnitaireType::class, $controleUnitaire); $form->handleRequest($request); + + // dd($form->has('nouveauNavire')); if($form->isSubmitted() && $form->isValid()) { + if($form->has('nouveauNavire')) { + $nouveauNavireForm = $form->get('nouveauNavire'); + $data = $nouveauNavireForm->getData(); + $navire = $em->getRepository(Navire::class)->findOneBy(['immatriculation' => $data->getImmatriculation()]); + if(!$navire) { + $navire = new Navire(); + $navire->setNom($data->getNom()) + ->setImmatriculation($data->getImmatriculation()) + ->setPavillon($data->getPavillon()) + ->setEtranger($data->getEtranger()); + } + $em->persist($navire); + $em->flush(); + } + + + + $controleUnitaire->setNavire($navire); + if($request->query->get('brouillon')) { $controleUnitaire->setBrouillon(true); } else { diff --git a/src/Form/NavPro/ControleUnitaireType.php b/src/Form/NavPro/ControleUnitaireType.php index a831b5ae..d1323043 100644 --- a/src/Form/NavPro/ControleUnitaireType.php +++ b/src/Form/NavPro/ControleUnitaireType.php @@ -7,6 +7,8 @@ use App\Entity\Navire; use App\Entity\NavPro\ControleUnitaire; use App\Form\DocumentType; +use App\Form\NavireNavProType; +use App\Form\NavireType; use Doctrine\ORM\EntityRepository; use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Component\Form\AbstractType; @@ -96,6 +98,10 @@ public function buildForm(FormBuilderInterface $builder, array $options): void 'allow_add' => true, 'prototype' => true ]) + ->add('nouveauNavire', NavireNavProType::class, [ + 'mapped' => false, + 'label' => false, + ]) ; } diff --git a/src/Form/NavireNavProType.php b/src/Form/NavireNavProType.php new file mode 100644 index 00000000..07cc52b1 --- /dev/null +++ b/src/Form/NavireNavProType.php @@ -0,0 +1,56 @@ +add('immatriculation', TextType::class, [ + 'attr' => ['class' => "immatriculation fr-input fr-mb-2w"], + 'label' => "Immatriculation du navire" + ]) + ->add('pavillon', TextType::class, [ + 'required' => true, + 'label' => "Pavillon du navire", + 'attr' => [ + 'class' => 'fr-input fr-mb-2w' + ] + ]) + ->add('nom', TextType::class, [ + 'required' => true, + 'label' => "Nom du navire", + 'attr' => [ + 'class' => 'fr-input fr-mb-2w' + ] + ] + ) + ->add('categorieUsageNavire', EntityType::class, [ + 'required' => true, + 'class' => CategorieUsageNavire::class, + 'multiple' => false, + 'expanded' => false, + 'placeholder' => "Sélectionnez une catégorie", + 'choice_label' => "nom", + 'label' => "Catégorie du navire contrôlé", + 'attr' => [ + 'class' => 'fr-select fr-mb-2w' + ] + ]); + } + + public function configureOptions(OptionsResolver $resolver) { + $resolver->setDefaults([ + 'data_class' => Navire::class, + ]); + } + +} diff --git a/templates/navPro/base.html.twig b/templates/navPro/base.html.twig index a83038ba..df9c5a8f 100644 --- a/templates/navPro/base.html.twig +++ b/templates/navPro/base.html.twig @@ -1,5 +1,5 @@ - + @@ -28,8 +28,12 @@
@@ -78,10 +82,14 @@
-
+
-
+
{{ form_label(form.navire) }} Si le navire est sans immatriculation, cochez "Navire étrangers" {{ form_widget(form.navire) }}
+
+
+
+
+
+ +
+
+
+
+
+
+
+ {{ form_widget(form.nouveauNavire) }} +
+
-
+
@@ -194,87 +210,135 @@ {% block javascripts %}