<?php
declare(strict_types=1);
/**
* @author Mehrez Labidi
*/
namespace App\Form\Type\ProfilRepreneur;
use Symfony\Component\Validator\Context\ExecutionContextInterface;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Constraints\NotBlank;
use App\Form\Type\ProfilRepreneur\ProfilRepreneurType;
use Symfony\Component\Form\Extension\Core\Type\{
ChoiceType,
DateType,
TextType,
HiddenType,
TextareaType,
SubmitType
};
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use App\Form\Type\FormChoices;
class CiblesRechercheesType extends ProfilRepreneurType { // form3_cibles_recherchees.html
public function buildForm(FormBuilderInterface $builder, array $options): void {
parent::buildForm($builder, $options);
// Section: Votre projet en quelques mots
$builder
->add('idee', ChoiceType::class, [
'label' => 'Avez-vous déjà une idée claire de l\'entreprise que vous recherchez ?',
'choices' => [
'Non' => 'non',
'Oui' => 'oui',
],
'expanded' => true,
'multiple' => false,
'required' => true,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez indiquer si vous avez une idée claire de l\'entreprise recherchée.',
'groups' => ['publier'],
]),
],
'attr' => [
'id' => 'idee'
]
])
->add('titre', TextType::class, [
'label' => 'Si vous deviez donner un titre à l\'activité ciblée, lequel serait-il ?',
'required' => false,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez donner un titre à l\'activité ciblée.',
'groups' => ['publier'],
]),
],
'attr' => [
'class' => 'form-control',
'maxlength' => self::MAXLENGTH_MEDIUM,
'id' => 'titre'
],
])
->add('description_entreprise', TextareaType::class, [
'label' => 'Comment décririez-vous plus précisément l\'entreprise que vous souhaitez reprendre ?',
'required' => false,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez décrire l\'entreprise que vous souhaitez reprendre.',
'groups' => ['publier'],
]),
],
'attr' => [
'class' => 'form-control',
'rows' => self::ROWS_SMALL,
'maxlength' => self::MAXLENGTH_SHORT,
'id' => 'description_entreprise',
'onfocus' => 'this.rows = 10',
'onblur' => 'this.rows = 3'
],
])
->add('cibles', ChoiceType::class, [
'label' => 'Avez-vous déjà identifié des cibles potentielles ?',
'choices' => [
'Non' => 'non',
'Oui' => 'oui',
],
'expanded' => true,
'multiple' => false,
'required' => true,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez indiquer si vous avez identifié des cibles potentielles.',
'groups' => ['publier'],
]),
],
'attr' => [
'id' => 'cibles'
]
])
->add('precisions_cibles', TextareaType::class, [
'label' => 'Si oui, pouvez-vous nous en dire plus ?',
'required' => false,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez préciser les cibles potentielles identifiées.',
'groups' => ['publier'],
]),
],
'attr' => [
'class' => 'form-control',
'rows' => self::ROWS_SMALL,
'maxlength' => self::MAXLENGTH_SHORT,
'id' => 'precisions_cibles',
'onfocus' => 'this.rows = 10',
'onblur' => 'this.rows = 3'
],
])
// Section: Secteurs d'activité & environnement métier
->add('secteurs_activite_recherchees', HiddenType::class, [
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez sélectionner au moins un secteur d\'activité recherché.',
'groups' => ['publier'],
]),
],
'attr' => [
'id' => 'secteurs_activite_recherchees',
]
])
->add('precisions_secteurs_activite', TextareaType::class, [
'label' => 'Précisez',
'required' => false,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez préciser les secteurs d\'activité recherchés.',
'groups' => ['publier'],
]),
],
'attr' => [
'class' => 'form-control',
'rows' => self::ROWS_SMALL,
'maxlength' => self::MAXLENGTH_SHORT,
'id' => 'precisions_secteurs_activite',
'onfocus' => 'this.rows = 10',
'onblur' => 'this.rows = 3'
],
])
->add('exclusion_secteurs', HiddenType::class, [
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez sélectionner les secteurs d\'activité à exclure.',
'groups' => ['publier'],
]),
],
'attr' => [
'id' => 'exclusion_secteurs'
]
])
->add('precisions_exclusion_secteurs', TextareaType::class, [
'label' => 'Précisez',
'required' => false,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez préciser les raisons d\'exclusion des secteurs.',
'groups' => ['publier'],
]),
],
'attr' => [
'class' => 'form-control',
'rows' => self::ROWS_SMALL,
'maxlength' => self::MAXLENGTH_SHORT,
'id' => 'precisions_raison',
'onfocus' => 'this.rows = 10',
'onblur' => 'this.rows = 3'
],
])
->add('ouvert', ChoiceType::class, [
'label' => 'Êtes-vous ouvert à explorer un secteur que vous ne maîtrisez pas encore ?',
'choices' => [
'Non, je préfère rester sur des secteurs connus' => 'non',
'Oui, je suis curieux et adaptable' => 'oui',
],
'expanded' => true,
'multiple' => false,
'required' => true,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez indiquer si vous êtes ouvert à explorer un nouveau secteur.',
'groups' => ['publier'],
]),
],
'attr' => [
'id' => 'ouvert'
]
])
// Section: Modèle économique et nature d'activité
->add('preference_clientele', ChoiceType::class, [
'label' => 'Préférence de clientèle',
'choices' => [
'B2B' => 'b2b',
'B2C' => 'b2c',
'Peu importe' => 'peu_importe',
],
'expanded' => true,
'multiple' => false,
'required' => true,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez indiquer votre préférence de clientèle.',
'groups' => ['publier'],
]),
],
'attr' => [
'id' => 'preference_clientele'
]
])
->add('technicite', ChoiceType::class, [
'label' => 'Quel niveau de technicité souhaitez-vous dans l\'activité à reprendre ?',
'choices' => [
'Faible (commerce, services courants)' => 'faible',
'Modéré (services techniques, fabrication standard)' => 'modere',
'Elevé (ingénierie, produits complexes, expertise poussée)' => 'eleve',
],
'expanded' => true,
'multiple' => false,
'required' => true,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez indiquer le niveau de technicité souhaité.',
'groups' => ['publier'],
]),
],
'attr' => [
'id' => 'technicite'
]
])
->add('type_revenus', ChoiceType::class, [
'label' => 'Avez-vous une préférence sur le type de revenus ?',
'choices' => [
'Récurrents (abonnements, contrats de maintenance…)' => 'recurrents',
'Ponctuels (ventes unitaires, projets…)' => 'ponctuels',
'Peu importe, cela dépend du projet' => 'peu_importe',
],
'expanded' => true,
'multiple' => false,
'required' => true,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez indiquer votre préférence sur le type de revenus.',
'groups' => ['publier'],
]),
],
'attr' => [
'id' => 'type_revenus'
]
])
->add('profil_entreprise', ChoiceType::class, [
'label' => 'Quel profil d\'entreprise vous attire le plus ?',
'choices' => [
'Une entreprise déjà structurée, avec une équipe en place à piloter' => 'structuree',
'Une entreprise plus modeste, à structurer et faire croître progressivement' => 'modeste',
'Peu importe, selon le projet' => 'peu_importe',
],
'expanded' => true,
'multiple' => false,
'required' => true,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez indiquer le profil d\'entreprise qui vous attire.',
'groups' => ['publier'],
]),
],
'attr' => [
'id' => 'profil_entreprise'
]
])
->add('precisions_taille_entreprise', TextareaType::class, [
'label' => 'Précisez',
'required' => false,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez préciser la taille d\'entreprise souhaitée.',
'groups' => ['publier'],
]),
],
'attr' => [
'class' => 'form-control',
'rows' => self::ROWS_SMALL,
'maxlength' => self::MAXLENGTH_SHORT,
'id' => 'precisions_taille_entreprise',
'onfocus' => 'this.rows = 10',
'onblur' => 'this.rows = 3'
],
])
// Section: Zone géographique
->add('localisations_recherchees', HiddenType::class, [
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez sélectionner au moins une localisation recherchée.',
'groups' => ['publier'],
]),
],
'attr' => [
'id' => 'localisations_recherchees',
]
])
->add('precisions_localisations_recherchees', TextareaType::class, [
'label' => 'Précisez',
'required' => false,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez préciser les localisations recherchées.',
'groups' => ['publier'],
]),
],
'attr' => [
'class' => 'form-control',
'rows' => self::ROWS_SMALL,
'maxlength' => self::MAXLENGTH_SHORT,
'id' => 'precisions_localisations_recherchees',
'onfocus' => 'this.rows = 10',
'onblur' => 'this.rows = 3'
],
])
->add('exclusion_localisation', HiddenType::class, [
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez sélectionner les localisations à exclure.',
'groups' => ['publier'],
]),
],
'attr' => [
'id' => 'exclusion_localisation'
]
])
->add('precisions_exclusion_localisation', TextareaType::class, [
'label' => 'Précisez',
'required' => false,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez préciser les raisons d\'exclusion des localisations.',
'groups' => ['publier'],
]),
],
'attr' => [
'class' => 'form-control',
'rows' => self::ROWS_SMALL,
'maxlength' => self::MAXLENGTH_SHORT,
'id' => 'precisions_exclusion_localisation',
'onfocus' => 'this.rows = 10',
'onblur' => 'this.rows = 3'
],
])
->add('international', ChoiceType::class, [
'label' => 'Seriez-vous prêt à étudier une opportunité à l\'international ?',
'choices' => [
'Non' => 'non',
'Oui' => 'oui',
],
'expanded' => true,
'multiple' => false,
'required' => true,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez indiquer si vous seriez prêt à étudier une opportunité à l\'international.',
'groups' => ['publier'],
]),
],
'attr' => [
'id' => 'international'
]
])
->add('precisions_international', TextareaType::class, [
'label' => 'Précisez',
'required' => false,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez préciser votre intérêt pour l\'international.',
'groups' => ['publier'],
]),
],
'attr' => [
'class' => 'form-control',
'rows' => self::ROWS_SMALL,
'maxlength' => self::MAXLENGTH_SHORT,
'id' => 'precisions_international',
'onfocus' => 'this.rows = 10',
'onblur' => 'this.rows = 3'
],
]);
// extra field // secteurs_activite , HiddenType::class
$builder->add('id_secteur_activite1', ChoiceType::class, [
"label" => "Secteur prédefini",
'required' => false,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez sélectionner un premier secteur d\'activité.',
'groups' => ['publier'],
]),
],
"choices" => FormChoices::selectionnerChoisir() + self::listIdSecteurs(),
"attr" => [
"autocomplete" => "off",
'id' => 'id_secteur_activite1',
"class" => "form-control"
]
]);
$builder->add('id_secteur_activite2', ChoiceType::class, [
'required' => false,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez sélectionner un deuxième secteur d\'activité.',
'groups' => ['publier'],
]),
],
"choices" => FormChoices::selectionnerChoisir(),
"attr" => [
"autocomplete" => "off",
'id' => 'id_secteur_activite2',
"class" => "form-control"
]
]);
$builder->add('id_secteur_activite3', ChoiceType::class, [
'required' => false,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez sélectionner un troisième secteur d\'activité.',
'groups' => ['publier'],
]),
],
"choices" => FormChoices::selectionnerChoisir(),
"attr" => [
"autocomplete" => "off",
'id' => 'id_secteur_activite3',
"class" => "form-control"
]
]);
$builder->add('exclusion_id_secteur_activite1', ChoiceType::class, [
"label" => "Secteur prédefini",
'required' => false,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez sélectionner un premier secteur d\'activité à exclure.',
'groups' => ['publier'],
]),
],
"choices" => FormChoices::selectionnerChoisir() + self::listIdSecteurs(),
"attr" => [
"autocomplete" => "off",
'id' => 'exclusion_id_secteur_activite1',
"class" => "form-control"
]
]);
$builder->add('exclusion_id_secteur_activite2', ChoiceType::class, [
'required' => false,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez sélectionner un deuxième secteur d\'activité à exclure.',
'groups' => ['publier'],
]),
],
"choices" => FormChoices::selectionnerChoisir(),
"attr" => [
"autocomplete" => "off",
'id' => 'exclusion_id_secteur_activite2',
"class" => "form-control"
]
]);
$builder->add('exclusion_id_secteur_activite3', ChoiceType::class, [
'required' => false,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez sélectionner un troisième secteur d\'activité à exclure.',
'groups' => ['publier'],
]),
],
"choices" => FormChoices::selectionnerChoisir(),
"attr" => [
"autocomplete" => "off",
'id' => 'exclusion_id_secteur_activite3',
"class" => "form-control"
]
]);
// extra field // ->add('zones', HiddenType::class
$builder->add('id_pays', ChoiceType::class, [
"label" => "Pays",
"required" => false,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez sélectionner un pays.',
'groups' => ['publier'],
]),
],
"choices" => FormChoices::selectionnerChoisir() + self::listIdPays(),
"attr" => [
'id' => 'id_pays',
"class" => "form-control"
]
]);
$builder->add('id_region', ChoiceType::class, [
"required" => false,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez sélectionner une région.',
'groups' => ['publier'],
]),
],
"choices" => FormChoices::selectionnerChoisir(),
"attr" => [
'id' => 'id_region',
"class" => "form-control"
],
]);
$builder->add('id_departement', ChoiceType::class, [
"required" => false,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez sélectionner un département.',
'groups' => ['publier'],
]),
],
"choices" => FormChoices::selectionnerChoisir(),
"attr" => [
'id' => 'id_departement',
"class" => "form-control"
],
]);
$builder->add('exclusion_id_pays', ChoiceType::class, [
"label" => "Pays",
"required" => false,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez sélectionner un pays à exclure.',
'groups' => ['publier'],
]),
],
"choices" => FormChoices::selectionnerChoisir() + self::listIdPays(),
"attr" => [
'id' => 'exclusion_id_pays',
"class" => "form-control"
]
]);
$builder->add('exclusion_id_region', ChoiceType::class, [
"required" => false,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez sélectionner une région à exclure.',
'groups' => ['publier'],
]),
],
"choices" => FormChoices::selectionnerChoisir(),
"attr" => [
'id' => 'exclusion_id_region',
"class" => "form-control"
],
]);
$builder->add('exclusion_id_departement', ChoiceType::class, [
"required" => false,
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez sélectionner un département à exclure.',
'groups' => ['publier'],
]),
],
"choices" => FormChoices::selectionnerChoisir(),
"attr" => [
'id' => 'exclusion_id_departement',
"class" => "form-control"
],
]);
// taille_entreprise
/* * *************************************************************** Situation financière *************************************************** */
$builder->add('prix_cession_min', HiddenType::class, [
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez indiquer le prix de cession minimum.',
'groups' => ['publier'],
]),
],
"attr" => ["autocomplete" => "off", "class" => "form-control", "id" => "prix_cession_min"]
]);
$builder->add('prix_cession_max', HiddenType::class, [
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez indiquer le prix de cession maximum.',
'groups' => ['publier'],
]),
],
"attr" => ["autocomplete" => "off", "class" => "form-control", "id" => "prix_cession_max"]
]);
$builder->add('ca_n_min', HiddenType::class, [
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez indiquer le chiffre d\'affaires minimum.',
'groups' => ['publier'],
]),
],
"attr" => ["autocomplete" => "off", "class" => "form-control", "id" => "ca_n_min"]
]);
$builder->add('ca_n_max', HiddenType::class, [
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez indiquer le chiffre d\'affaires maximum.',
'groups' => ['publier'],
]),
],
"attr" => ["autocomplete" => "off", "class" => "form-control", "id" => "ca_n_max"]
]);
$builder->add('nb_personnes_min', HiddenType::class, [
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez indiquer le nombre minimum de personnes.',
'groups' => ['publier'],
]),
],
"attr" => ["autocomplete" => "off", "class" => "form-control", "id" => "nb_personnes_min"]
]);
$builder->add('nb_personnes_max', HiddenType::class, [
'constraints' => [
new Assert\NotBlank([
'message' => 'Veuillez indiquer le nombre maximum de personnes.',
'groups' => ['publier'],
]),
],
"attr" => ["autocomplete" => "off", "class" => "form-control", "id" => "nb_personnes_max"]
]);
/* * *************************************************************** Situation financière *************************************************** */
// prix_cession
// ca_n
// nb_personnes
}
}