From 3730d8d5cc08279cb118c7372d141841722a27d4 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Fri, 15 Apr 2022 16:46:06 +0200 Subject: [PATCH] add conferences, debriefings, projects, theme types, establishment groups --- src/Controller/ConferenceAdminController.php | 145 +++++++++++++++ src/Controller/DebriefingAdminController.php | 148 +++++++++++++++ .../EstablishmentGroupAdminController.php | 137 ++++++++++++++ src/Controller/ProjectAdminController.php | 139 ++++++++++++++ src/Controller/ThemeTypeAdminController.php | 139 ++++++++++++++ src/Entity/Conference.php | 145 +++++++++++++++ src/Entity/Debriefing.php | 163 +++++++++++++++++ src/Entity/EstablishmentGroup.php | 104 +++++++++++ src/Entity/Project.php | 171 ++++++++++++++++++ src/Entity/ThemeType.php | 125 +++++++++++++ src/Factory/ConferenceFactory.php | 14 ++ src/Factory/DebriefingFactory.php | 14 ++ src/Factory/EstablishmentGroupFactory.php | 14 ++ src/Factory/ProjectFactory.php | 14 ++ src/Factory/ThemeTypeFactory.php | 14 ++ src/Form/ConferenceType.php | 40 ++++ src/Form/DebriefingType.php | 68 +++++++ src/Form/EstablishmentGroupType.php | 25 +++ src/Form/FileType.php | 57 ++++++ src/Form/ProjectType.php | 54 ++++++ src/Form/ThemeTypeType.php | 25 +++ src/Repository/ConferenceRepository.php | 76 ++++++++ src/Repository/ConferenceRepositoryQuery.php | 15 ++ src/Repository/DebriefingRepository.php | 76 ++++++++ src/Repository/DebriefingRepositoryQuery.php | 15 ++ .../EstablishmentGroupRepository.php | 76 ++++++++ .../EstablishmentGroupRepositoryQuery.php | 15 ++ src/Repository/ProjectRepository.php | 76 ++++++++ src/Repository/ProjectRepositoryQuery.php | 15 ++ src/Repository/ThemeTypeRepository.php | 76 ++++++++ src/Repository/ThemeTypeRepositoryQuery.php | 15 ++ templates/admin/conference/_form.html.twig | 13 ++ templates/admin/debriefing/_form.html.twig | 13 ++ templates/admin/establishment/_form.html.twig | 13 ++ 34 files changed, 2249 insertions(+) create mode 100644 src/Controller/ConferenceAdminController.php create mode 100644 src/Controller/DebriefingAdminController.php create mode 100644 src/Controller/EstablishmentGroupAdminController.php create mode 100644 src/Controller/ProjectAdminController.php create mode 100644 src/Controller/ThemeTypeAdminController.php create mode 100644 src/Entity/Conference.php create mode 100644 src/Entity/Debriefing.php create mode 100644 src/Entity/EstablishmentGroup.php create mode 100644 src/Entity/Project.php create mode 100644 src/Entity/ThemeType.php create mode 100644 src/Factory/ConferenceFactory.php create mode 100644 src/Factory/DebriefingFactory.php create mode 100644 src/Factory/EstablishmentGroupFactory.php create mode 100644 src/Factory/ProjectFactory.php create mode 100644 src/Factory/ThemeTypeFactory.php create mode 100644 src/Form/ConferenceType.php create mode 100644 src/Form/DebriefingType.php create mode 100644 src/Form/EstablishmentGroupType.php create mode 100644 src/Form/FileType.php create mode 100644 src/Form/ProjectType.php create mode 100644 src/Form/ThemeTypeType.php create mode 100644 src/Repository/ConferenceRepository.php create mode 100644 src/Repository/ConferenceRepositoryQuery.php create mode 100644 src/Repository/DebriefingRepository.php create mode 100644 src/Repository/DebriefingRepositoryQuery.php create mode 100644 src/Repository/EstablishmentGroupRepository.php create mode 100644 src/Repository/EstablishmentGroupRepositoryQuery.php create mode 100644 src/Repository/ProjectRepository.php create mode 100644 src/Repository/ProjectRepositoryQuery.php create mode 100644 src/Repository/ThemeTypeRepository.php create mode 100644 src/Repository/ThemeTypeRepositoryQuery.php create mode 100644 templates/admin/conference/_form.html.twig create mode 100644 templates/admin/debriefing/_form.html.twig create mode 100644 templates/admin/establishment/_form.html.twig diff --git a/src/Controller/ConferenceAdminController.php b/src/Controller/ConferenceAdminController.php new file mode 100644 index 0000000..80c8f07 --- /dev/null +++ b/src/Controller/ConferenceAdminController.php @@ -0,0 +1,145 @@ +doIndex($page, $query, $request, $session); + } + + /** + * @Route("/admin/conference/new", name="admin_conference_new", methods={"GET", "POST"}) + */ + public function new(Factory $factory, EntityManager $entityManager, Request $request): Response + { + return $this->doNew($factory->create(), $entityManager, $request); + } + + /** + * @Route("/admin/conference/show/{entity}", name="admin_conference_show", methods={"GET"}) + */ + public function show(Entity $entity): Response + { + return $this->doShow($entity); + } + + /** + * @Route("/admin/conference/filter", name="admin_conference_filter", methods={"GET"}) + */ + public function filter(Session $session): Response + { + return $this->doFilter($session); + } + + /** + * @Route("/admin/conference/edit/{entity}", name="admin_conference_edit", methods={"GET", "POST"}) + */ + public function edit(Entity $entity, EntityManager $entityManager, Request $request): Response + { + return $this->doEdit($entity, $entityManager, $request); + } + + /** + * @Route("/admin/conference/sort/{page}", name="admin_conference_sort", methods={"POST"}, requirements={"page":"\d+"}) + */ + public function sort(RepositoryQuery $query, EntityManager $entityManager, Request $request, Session $session, int $page = 1): Response + { + return $this->doSort($page, $query, $entityManager, $request, $session); + } + + /** + * @Route("/admin/conference/batch/{page}", name="admin_conference_batch", methods={"POST"}, requirements={"page":"\d+"}) + */ + public function batch(RepositoryQuery $query, EntityManager $entityManager, Request $request, Session $session, int $page = 1): Response + { + return $this->doBatch($page, $query, $entityManager, $request, $session); + } + + /** + * @Route("/admin/conference/delete/{entity}", name="admin_conference_delete", methods={"DELETE"}) + */ + public function delete(Entity $entity, EntityManager $entityManager, Request $request): Response + { + return $this->doDelete($entity, $entityManager, $request); + } + + protected function getConfiguration(): CrudConfiguration + { + return CrudConfiguration::create() + ->setPageTitle('index', 'Conférences') + ->setPageTitle('edit', 'Conférence {id}') + ->setPageTitle('new', 'Nouvelle conférence') + ->setPageTitle('show', 'Conférence {id}') + + ->setPageRoute('index', 'admin_conference_index') + ->setPageRoute('new', 'admin_conference_new') + ->setPageRoute('edit', 'admin_conference_edit') + ->setPageRoute('show', 'admin_conference_show') + ->setPageRoute('sort', 'admin_conference_sort') + ->setPageRoute('batch', 'admin_conference_batch') + ->setPageRoute('delete', 'admin_conference_delete') + ->setPageRoute('filter', 'admin_conference_filter') + + ->setForm('edit', Type::class, []) + ->setForm('new', Type::class) + // ->setForm('filter', Type::class) + + ->setView('form', 'admin/conference/_form.html.twig') + + // ->setMaxPerPage('index', 20) + + // ->setIsSortableCollection('index', false) + // ->setSortableCollectionProperty('sortOrder') + + // ->setAction('index', 'new', true) + ->setAction('index', 'show', false) + // ->setAction('index', 'edit', true) + // ->setAction('index', 'delete', true) + + // ->setAction('edit', 'back', true) + ->setAction('edit', 'show', false) + // ->setAction('edit', 'delete', true) + + // ->setAction('show', 'back', true) + // ->setAction('show', 'edit', true) + + ->setField('index', 'Label', Field\TextField::class, [ + 'property' => 'label', + ]) + ->setField('index', 'Date', Field\DateField::class, [ + 'property' => 'date', + 'format' => 'd/m/Y', + 'sort' => ['date', '.date'], + 'attr' => ['class' => 'col-3'], + ]) + + // ->setBatchAction('index', 'delete', 'Delete', function(EntityInterface $entity, EntityManager $manager) { + // $manager->delete($entity); + // }) + ; + } + + protected function getSection(): string + { + return 'conference'; + } +} diff --git a/src/Controller/DebriefingAdminController.php b/src/Controller/DebriefingAdminController.php new file mode 100644 index 0000000..993f00d --- /dev/null +++ b/src/Controller/DebriefingAdminController.php @@ -0,0 +1,148 @@ +doIndex($page, $query, $request, $session); + } + + /** + * @Route("/admin/debriefing/new", name="admin_debriefing_new", methods={"GET", "POST"}) + */ + public function new(Factory $factory, EntityManager $entityManager, Request $request): Response + { + return $this->doNew($factory->create(), $entityManager, $request); + } + + /** + * @Route("/admin/debriefing/show/{entity}", name="admin_debriefing_show", methods={"GET"}) + */ + public function show(Entity $entity): Response + { + return $this->doShow($entity); + } + + /** + * @Route("/admin/debriefing/filter", name="admin_debriefing_filter", methods={"GET"}) + */ + public function filter(Session $session): Response + { + return $this->doFilter($session); + } + + /** + * @Route("/admin/debriefing/edit/{entity}", name="admin_debriefing_edit", methods={"GET", "POST"}) + */ + public function edit(Entity $entity, EntityManager $entityManager, Request $request): Response + { + return $this->doEdit($entity, $entityManager, $request); + } + + /** + * @Route("/admin/debriefing/sort/{page}", name="admin_debriefing_sort", methods={"POST"}, requirements={"page":"\d+"}) + */ + public function sort(RepositoryQuery $query, EntityManager $entityManager, Request $request, Session $session, int $page = 1): Response + { + return $this->doSort($page, $query, $entityManager, $request, $session); + } + + /** + * @Route("/admin/debriefing/batch/{page}", name="admin_debriefing_batch", methods={"POST"}, requirements={"page":"\d+"}) + */ + public function batch(RepositoryQuery $query, EntityManager $entityManager, Request $request, Session $session, int $page = 1): Response + { + return $this->doBatch($page, $query, $entityManager, $request, $session); + } + + /** + * @Route("/admin/debriefing/delete/{entity}", name="admin_debriefing_delete", methods={"DELETE"}) + */ + public function delete(Entity $entity, EntityManager $entityManager, Request $request): Response + { + return $this->doDelete($entity, $entityManager, $request); + } + + protected function getConfiguration(): CrudConfiguration + { + return CrudConfiguration::create() + ->setPageTitle('index', 'Comptes-rendus') + ->setPageTitle('edit', 'Compte-rendu {id}') + ->setPageTitle('new', 'Nouveau compte-rendu') + ->setPageTitle('show', 'Compte-rendu {id}') + + ->setPageRoute('index', 'admin_debriefing_index') + ->setPageRoute('new', 'admin_debriefing_new') + ->setPageRoute('edit', 'admin_debriefing_edit') + ->setPageRoute('show', 'admin_debriefing_show') + ->setPageRoute('sort', 'admin_debriefing_sort') + ->setPageRoute('batch', 'admin_debriefing_batch') + ->setPageRoute('delete', 'admin_debriefing_delete') + ->setPageRoute('filter', 'admin_debriefing_filter') + + ->setForm('edit', Type::class, []) + ->setForm('new', Type::class) + // ->setForm('filter', Type::class) + + ->setView('form', 'admin/debriefing/_form.html.twig') + + // ->setMaxPerPage('index', 20) + + // ->setIsSortableCollection('index', false) + // ->setSortableCollectionProperty('sortOrder') + + // ->setAction('index', 'new', true) + // ->setAction('index', 'show', true) + // ->setAction('index', 'edit', true) + // ->setAction('index', 'delete', true) + + // ->setAction('edit', 'back', true) + // ->setAction('edit', 'show', true) + // ->setAction('edit', 'delete', true) + + // ->setAction('show', 'back', true) + // ->setAction('show', 'edit', true) + + ->setField('index', 'Topic', Field\TextField::class, [ + 'property' => 'topic', + 'sort' => ['topic', '.topic'], + 'attr' => ['class' => 'col-8'], + ]) + ->setField('index', 'Date', Field\DateField::class, [ + 'property' => 'date', + 'format' => 'd/m/Y', + 'sort' => ['date', '.date'], + 'attr' => ['class' => 'col-2'], + ]) + ->setDefaultSort('index', 'date', 'desc') + + // ->setBatchAction('index', 'delete', 'Delete', function(EntityInterface $entity, EntityManager $manager) { + // $manager->delete($entity); + // }) + ; + } + + protected function getSection(): string + { + return 'debriefing'; + } +} diff --git a/src/Controller/EstablishmentGroupAdminController.php b/src/Controller/EstablishmentGroupAdminController.php new file mode 100644 index 0000000..8a10416 --- /dev/null +++ b/src/Controller/EstablishmentGroupAdminController.php @@ -0,0 +1,137 @@ +doIndex($page, $query, $request, $session); + } + + /** + * @Route("/admin/establishment_group/new", name="admin_establishment_group_new", methods={"GET", "POST"}) + */ + public function new(Factory $factory, EntityManager $entityManager, Request $request): Response + { + return $this->doNew($factory->create(), $entityManager, $request); + } + + /** + * @Route("/admin/establishment_group/show/{entity}", name="admin_establishment_group_show", methods={"GET"}) + */ + public function show(Entity $entity): Response + { + return $this->doShow($entity); + } + + /** + * @Route("/admin/establishment_group/filter", name="admin_establishment_group_filter", methods={"GET"}) + */ + public function filter(Session $session): Response + { + return $this->doFilter($session); + } + + /** + * @Route("/admin/establishment_group/edit/{entity}", name="admin_establishment_group_edit", methods={"GET", "POST"}) + */ + public function edit(Entity $entity, EntityManager $entityManager, Request $request): Response + { + return $this->doEdit($entity, $entityManager, $request); + } + + /** + * @Route("/admin/establishment_group/sort/{page}", name="admin_establishment_group_sort", methods={"POST"}, requirements={"page":"\d+"}) + */ + public function sort(RepositoryQuery $query, EntityManager $entityManager, Request $request, Session $session, int $page = 1): Response + { + return $this->doSort($page, $query, $entityManager, $request, $session); + } + + /** + * @Route("/admin/establishment_group/batch/{page}", name="admin_establishment_group_batch", methods={"POST"}, requirements={"page":"\d+"}) + */ + public function batch(RepositoryQuery $query, EntityManager $entityManager, Request $request, Session $session, int $page = 1): Response + { + return $this->doBatch($page, $query, $entityManager, $request, $session); + } + + /** + * @Route("/admin/establishment_group/delete/{entity}", name="admin_establishment_group_delete", methods={"DELETE"}) + */ + public function delete(Entity $entity, EntityManager $entityManager, Request $request): Response + { + return $this->doDelete($entity, $entityManager, $request); + } + + protected function getConfiguration(): CrudConfiguration + { + return CrudConfiguration::create() + ->setPageTitle('index', 'List of App\Entity\EstablishmentGroup') + ->setPageTitle('edit', 'Edition of {id}') + ->setPageTitle('new', 'New App\Entity\EstablishmentGroup') + ->setPageTitle('show', 'View of {id}') + + ->setPageRoute('index', 'admin_establishment_group_index') + ->setPageRoute('new', 'admin_establishment_group_new') + ->setPageRoute('edit', 'admin_establishment_group_edit') + ->setPageRoute('show', 'admin_establishment_group_show') + ->setPageRoute('sort', 'admin_establishment_group_sort') + ->setPageRoute('batch', 'admin_establishment_group_batch') + ->setPageRoute('delete', 'admin_establishment_group_delete') + ->setPageRoute('filter', 'admin_establishment_group_filter') + + ->setForm('edit', Type::class, []) + ->setForm('new', Type::class) + // ->setForm('filter', Type::class) + + // ->setMaxPerPage('index', 20) + + // ->setIsSortableCollection('index', false) + // ->setSortableCollectionProperty('sortOrder') + + // ->setAction('index', 'new', true) + // ->setAction('index', 'show', true) + // ->setAction('index', 'edit', true) + // ->setAction('index', 'delete', true) + + // ->setAction('edit', 'back', true) + // ->setAction('edit', 'show', true) + // ->setAction('edit', 'delete', true) + + // ->setAction('show', 'back', true) + // ->setAction('show', 'edit', true) + + // ->setField('index', 'Label', Field\TextField::class, [ + // 'property' => 'label', + // ]) + + // ->setBatchAction('index', 'delete', 'Delete', function(EntityInterface $entity, EntityManager $manager) { + // $manager->delete($entity); + // }) + ; + } + + protected function getSection(): string + { + return 'establishment_group'; + } +} diff --git a/src/Controller/ProjectAdminController.php b/src/Controller/ProjectAdminController.php new file mode 100644 index 0000000..786c8d9 --- /dev/null +++ b/src/Controller/ProjectAdminController.php @@ -0,0 +1,139 @@ +doIndex($page, $query, $request, $session); + } + + /** + * @Route("/admin/project/new", name="admin_project_new", methods={"GET", "POST"}) + */ + public function new(Factory $factory, EntityManager $entityManager, Request $request): Response + { + return $this->doNew($factory->create(), $entityManager, $request); + } + + /** + * @Route("/admin/project/show/{entity}", name="admin_project_show", methods={"GET"}) + */ + public function show(Entity $entity): Response + { + return $this->doShow($entity); + } + + /** + * @Route("/admin/project/filter", name="admin_project_filter", methods={"GET"}) + */ + public function filter(Session $session): Response + { + return $this->doFilter($session); + } + + /** + * @Route("/admin/project/edit/{entity}", name="admin_project_edit", methods={"GET", "POST"}) + */ + public function edit(Entity $entity, EntityManager $entityManager, Request $request): Response + { + return $this->doEdit($entity, $entityManager, $request); + } + + /** + * @Route("/admin/project/sort/{page}", name="admin_project_sort", methods={"POST"}, requirements={"page":"\d+"}) + */ + public function sort(RepositoryQuery $query, EntityManager $entityManager, Request $request, Session $session, int $page = 1): Response + { + return $this->doSort($page, $query, $entityManager, $request, $session); + } + + /** + * @Route("/admin/project/batch/{page}", name="admin_project_batch", methods={"POST"}, requirements={"page":"\d+"}) + */ + public function batch(RepositoryQuery $query, EntityManager $entityManager, Request $request, Session $session, int $page = 1): Response + { + return $this->doBatch($page, $query, $entityManager, $request, $session); + } + + /** + * @Route("/admin/project/delete/{entity}", name="admin_project_delete", methods={"DELETE"}) + */ + public function delete(Entity $entity, EntityManager $entityManager, Request $request): Response + { + return $this->doDelete($entity, $entityManager, $request); + } + + protected function getConfiguration(): CrudConfiguration + { + return CrudConfiguration::create() + ->setPageTitle('index', 'Projets') + ->setPageTitle('edit', 'Projet {id}') + ->setPageTitle('new', 'Nouveau projet') + ->setPageTitle('show', 'Projet {id}') + + ->setPageRoute('index', 'admin_project_index') + ->setPageRoute('new', 'admin_project_new') + ->setPageRoute('edit', 'admin_project_edit') + ->setPageRoute('show', 'admin_project_show') + ->setPageRoute('sort', 'admin_project_sort') + ->setPageRoute('batch', 'admin_project_batch') + ->setPageRoute('delete', 'admin_project_delete') + ->setPageRoute('filter', 'admin_project_filter') + + ->setForm('edit', Type::class, []) + ->setForm('new', Type::class) + // ->setForm('filter', Type::class) + + // ->setMaxPerPage('index', 20) + + // ->setIsSortableCollection('index', false) + // ->setSortableCollectionProperty('sortOrder') + + // ->setAction('index', 'new', true) + // ->setAction('index', 'show', true) + // ->setAction('index', 'edit', true) + // ->setAction('index', 'delete', true) + + // ->setAction('edit', 'back', true) + // ->setAction('edit', 'show', true) + // ->setAction('edit', 'delete', true) + + // ->setAction('show', 'back', true) + // ->setAction('show', 'edit', true) + + ->setField('index', 'Label', Field\TextField::class, [ + 'property' => 'label', + 'sort' => ['label', '.label'], + ]) + ->setDefaultSort('index', 'label', 'asc') + + // ->setBatchAction('index', 'delete', 'Delete', function(EntityInterface $entity, EntityManager $manager) { + // $manager->delete($entity); + // }) + ; + } + + protected function getSection(): string + { + return 'project'; + } +} diff --git a/src/Controller/ThemeTypeAdminController.php b/src/Controller/ThemeTypeAdminController.php new file mode 100644 index 0000000..774d96a --- /dev/null +++ b/src/Controller/ThemeTypeAdminController.php @@ -0,0 +1,139 @@ +doIndex($page, $query, $request, $session); + } + + /** + * @Route("/admin/theme_type/new", name="admin_theme_type_new", methods={"GET", "POST"}) + */ + public function new(Factory $factory, EntityManager $entityManager, Request $request): Response + { + return $this->doNew($factory->create(), $entityManager, $request); + } + + /** + * @Route("/admin/theme_type/show/{entity}", name="admin_theme_type_show", methods={"GET"}) + */ + public function show(Entity $entity): Response + { + return $this->doShow($entity); + } + + /** + * @Route("/admin/theme_type/filter", name="admin_theme_type_filter", methods={"GET"}) + */ + public function filter(Session $session): Response + { + return $this->doFilter($session); + } + + /** + * @Route("/admin/theme_type/edit/{entity}", name="admin_theme_type_edit", methods={"GET", "POST"}) + */ + public function edit(Entity $entity, EntityManager $entityManager, Request $request): Response + { + return $this->doEdit($entity, $entityManager, $request); + } + + /** + * @Route("/admin/theme_type/sort/{page}", name="admin_theme_type_sort", methods={"POST"}, requirements={"page":"\d+"}) + */ + public function sort(RepositoryQuery $query, EntityManager $entityManager, Request $request, Session $session, int $page = 1): Response + { + return $this->doSort($page, $query, $entityManager, $request, $session); + } + + /** + * @Route("/admin/theme_type/batch/{page}", name="admin_theme_type_batch", methods={"POST"}, requirements={"page":"\d+"}) + */ + public function batch(RepositoryQuery $query, EntityManager $entityManager, Request $request, Session $session, int $page = 1): Response + { + return $this->doBatch($page, $query, $entityManager, $request, $session); + } + + /** + * @Route("/admin/theme_type/delete/{entity}", name="admin_theme_type_delete", methods={"DELETE"}) + */ + public function delete(Entity $entity, EntityManager $entityManager, Request $request): Response + { + return $this->doDelete($entity, $entityManager, $request); + } + + protected function getConfiguration(): CrudConfiguration + { + return CrudConfiguration::create() + ->setPageTitle('index', 'Types de thématiques') + ->setPageTitle('edit', 'Type de thématique {id}') + ->setPageTitle('new', 'Nouveau type de thématique') + ->setPageTitle('show', 'Type de thématique {id}') + + ->setPageRoute('index', 'admin_theme_type_index') + ->setPageRoute('new', 'admin_theme_type_new') + ->setPageRoute('edit', 'admin_theme_type_edit') + ->setPageRoute('show', 'admin_theme_type_show') + ->setPageRoute('sort', 'admin_theme_type_sort') + ->setPageRoute('batch', 'admin_theme_type_batch') + ->setPageRoute('delete', 'admin_theme_type_delete') + ->setPageRoute('filter', 'admin_theme_type_filter') + + ->setForm('edit', Type::class, []) + ->setForm('new', Type::class) + // ->setForm('filter', Type::class) + + // ->setMaxPerPage('index', 20) + + // ->setIsSortableCollection('index', false) + // ->setSortableCollectionProperty('sortOrder') + + // ->setAction('index', 'new', true) + ->setAction('index', 'show', false) + // ->setAction('index', 'edit', true) + // ->setAction('index', 'delete', true) + + // ->setAction('edit', 'back', true) + ->setAction('edit', 'show', false) + // ->setAction('edit', 'delete', true) + + // ->setAction('show', 'back', true) + // ->setAction('show', 'edit', true) + + ->setField('index', 'Label', Field\TextField::class, [ + 'property' => 'label', + 'sort' => ['label', '.label'], + ]) + ->setDefaultSort('index', 'label', 'asc') + + // ->setBatchAction('index', 'delete', 'Delete', function(EntityInterface $entity, EntityManager $manager) { + // $manager->delete($entity); + // }) + ; + } + + protected function getSection(): string + { + return 'theme_type'; + } +} diff --git a/src/Entity/Conference.php b/src/Entity/Conference.php new file mode 100644 index 0000000..cc3a72c --- /dev/null +++ b/src/Entity/Conference.php @@ -0,0 +1,145 @@ +id; + } + + public function getLabel(): ?string + { + return $this->label; + } + + public function setLabel(string $label): self + { + $this->label = $label; + + return $this; + } + + public function getPersons(): ?int + { + return $this->persons; + } + + public function setPersons(int $persons): self + { + $this->persons = abs($persons); + + return $this; + } + + public function getThemeType(): ?ThemeType + { + return $this->themeType; + } + + public function setThemeType(?ThemeType $themeType): self + { + $this->themeType = $themeType; + + return $this; + } + + public function getContent(): ?string + { + return $this->content; + } + + public function setContent(?string $content): self + { + $this->content = $content; + + return $this; + } + + public function getComment(): ?string + { + return $this->comment; + } + + public function setComment(?string $comment): self + { + $this->comment = $comment; + + return $this; + } + + public function getFeedback(): ?string + { + return $this->feedback; + } + + public function setFeedback(?string $feedback): self + { + $this->feedback = $feedback; + + return $this; + } + + public function getDate(): ?\DateTimeInterface + { + return $this->date; + } + + public function setDate(?\DateTimeInterface $date): self + { + $this->date = $date; + + return $this; + } +} diff --git a/src/Entity/Debriefing.php b/src/Entity/Debriefing.php new file mode 100644 index 0000000..d5cce00 --- /dev/null +++ b/src/Entity/Debriefing.php @@ -0,0 +1,163 @@ +project = new ArrayCollection(); + } + + public function getId(): ?int + { + return $this->id; + } + + public function getTopic(): ?string + { + return $this->topic; + } + + public function setTopic(string $topic): self + { + $this->topic = $topic; + + return $this; + } + + public function getDate(): ?\DateTimeInterface + { + return $this->date; + } + + public function setDate(\DateTimeInterface $date): self + { + $this->date = $date; + + return $this; + } + + /** + * @return Collection + */ + public function getProject(): Collection + { + return $this->project; + } + + public function addProject(Project $project): self + { + if (!$this->project->contains($project)) { + $this->project[] = $project; + } + + return $this; + } + + public function removeProject(Project $project): self + { + $this->project->removeElement($project); + + return $this; + } + + public function getInternalContributors(): ?string + { + return $this->internalContributors; + } + + public function setInternalContributors(?string $internalContributors): self + { + $this->internalContributors = $internalContributors; + + return $this; + } + + public function getExternalContributors(): ?string + { + return $this->externalContributors; + } + + public function setExternalContributors(?string $externalContributors): self + { + $this->externalContributors = $externalContributors; + + return $this; + } + + public function getContent(): ?string + { + return $this->content; + } + + public function setContent(?string $content): self + { + $this->content = $content; + + return $this; + } + + public function getFiles(): ?array + { + return $this->files; + } + + public function setFiles(array $files): self + { + $this->files = $files; + + return $this; + } +} diff --git a/src/Entity/EstablishmentGroup.php b/src/Entity/EstablishmentGroup.php new file mode 100644 index 0000000..1237c4b --- /dev/null +++ b/src/Entity/EstablishmentGroup.php @@ -0,0 +1,104 @@ +interventions = new ArrayCollection(); + } + + public function __toString() + { + return (string) $this->getLabel(); + } + + public function getId(): ?int + { + return $this->id; + } + + public function getLabel(): ?string + { + return $this->label; + } + + public function setLabel(string $label): self + { + $this->label = $label; + + return $this; + } + + public function getEstablishment(): ?Establishment + { + return $this->establishment; + } + + public function setEstablishment(?Establishment $establishment): self + { + $this->establishment = $establishment; + + return $this; + } + + /** + * @return Collection + */ + public function getInterventions(): Collection + { + return $this->interventions; + } + + public function addIntervention(Intervention $intervention): self + { + if (!$this->interventions->contains($intervention)) { + $this->interventions[] = $intervention; + $intervention->addEstablishmentGroup($this); + } + + return $this; + } + + public function removeIntervention(Intervention $intervention): self + { + if ($this->interventions->removeElement($intervention)) { + $intervention->removeEstablishmentGroup($this); + } + + return $this; + } +} diff --git a/src/Entity/Project.php b/src/Entity/Project.php new file mode 100644 index 0000000..8e12f5e --- /dev/null +++ b/src/Entity/Project.php @@ -0,0 +1,171 @@ +establishments = new ArrayCollection(); + $this->debriefings = new ArrayCollection(); + } + + public function __toString() + { + return (string) $this->getLabel(); + } + + public function getId(): ?int + { + return $this->id; + } + + public function getLabel(): ?string + { + return $this->label; + } + + public function setLabel(string $label): self + { + $this->label = $label; + + return $this; + } + + /** + * @return Collection + */ + public function getEstablishments(): Collection + { + return $this->establishments; + } + + public function addEstablishment(Establishment $establishment): self + { + if (!$this->establishments->contains($establishment)) { + $this->establishments[] = $establishment; + } + + return $this; + } + + public function removeEstablishment(Establishment $establishment): self + { + $this->establishments->removeElement($establishment); + + return $this; + } + + public function getDescription(): ?string + { + return $this->description; + } + + public function setDescription(?string $description): self + { + $this->description = $description; + + return $this; + } + + public function getClient(): ?string + { + return $this->client; + } + + public function setClient(?string $client): self + { + $this->client = $client; + + return $this; + } + + public function getFiles(): ?array + { + usort($this->files, function($a, $b) { + return $a['position'] <=> $b['position']; + }); + + return $this->files; + } + + public function setFiles(array $files): self + { + $this->files = $files; + + return $this; + } + + /** + * @return Collection + */ + public function getDebriefings(): Collection + { + return $this->debriefings; + } + + public function addDebriefing(Debriefing $debriefing): self + { + if (!$this->debriefings->contains($debriefing)) { + $this->debriefings[] = $debriefing; + $debriefing->addProject($this); + } + + return $this; + } + + public function removeDebriefing(Debriefing $debriefing): self + { + if ($this->debriefings->removeElement($debriefing)) { + $debriefing->removeProject($this); + } + + return $this; + } +} diff --git a/src/Entity/ThemeType.php b/src/Entity/ThemeType.php new file mode 100644 index 0000000..af1f5dc --- /dev/null +++ b/src/Entity/ThemeType.php @@ -0,0 +1,125 @@ +conferences = new ArrayCollection(); + $this->interventions = new ArrayCollection(); + } + + public function __toString() + { + return (string) $this->getLabel(); + } + + public function getId(): ?int + { + return $this->id; + } + + public function getLabel(): ?string + { + return $this->label; + } + + public function setLabel(string $label): self + { + $this->label = $label; + + return $this; + } + + /** + * @return Collection + */ + public function getConferences(): Collection + { + return $this->conferences; + } + + public function addConference(Conference $conference): self + { + if (!$this->conferences->contains($conference)) { + $this->conferences[] = $conference; + $conference->setThemeType($this); + } + + return $this; + } + + public function removeConference(Conference $conference): self + { + if ($this->conferences->removeElement($conference)) { + // set the owning side to null (unless already changed) + if ($conference->getThemeType() === $this) { + $conference->setThemeType(null); + } + } + + return $this; + } + + /** + * @return Collection + */ + public function getInterventions(): Collection + { + return $this->interventions; + } + + public function addIntervention(Intervention $intervention): self + { + if (!$this->interventions->contains($intervention)) { + $this->interventions[] = $intervention; + $intervention->setThemeType($this); + } + + return $this; + } + + public function removeIntervention(Intervention $intervention): self + { + if ($this->interventions->removeElement($intervention)) { + // set the owning side to null (unless already changed) + if ($intervention->getThemeType() === $this) { + $intervention->setThemeType(null); + } + } + + return $this; + } +} diff --git a/src/Factory/ConferenceFactory.php b/src/Factory/ConferenceFactory.php new file mode 100644 index 0000000..6031fc9 --- /dev/null +++ b/src/Factory/ConferenceFactory.php @@ -0,0 +1,14 @@ +add('label') + ->add('themeType') + ->add('date', null, [ + 'html5' => true, + 'widget' => 'single_text', + ]) + ->add('persons') + ->add('content', null, [ + 'attr' => ['rows' => 7], + ]) + ->add('comment', null, [ + 'attr' => ['rows' => 7], + ]) + ->add('feedback', null, [ + 'attr' => ['rows' => 7], + ]) + ; + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + 'data_class' => Conference::class, + ]); + } +} diff --git a/src/Form/DebriefingType.php b/src/Form/DebriefingType.php new file mode 100644 index 0000000..f42459c --- /dev/null +++ b/src/Form/DebriefingType.php @@ -0,0 +1,68 @@ +add('topic') + ->add('date', null, [ + 'html5' => true, + 'widget' => 'single_text', + ]) + ->add('project', null, [ + 'attr' => [ + 'data-jschoice' => '', + ], + ]) + ->add('internalContributors', null, [ + 'attr' => [ + 'rows' => 7, + ], + ]) + ->add('externalContributors', null, [ + 'attr' => [ + 'rows' => 7, + ], + ]) + ->add('content', TinymceTextareaType::class, [ + 'attr' => [ + 'rows' => 15, + ], + ]) + ->add('files', + CollectionType::class, + [ + 'entry_type' => FileType::class, + 'by_reference' => false, + 'allow_add' => true, + 'allow_delete' => true, + 'prototype' => true, + 'collection_name' => 'files', + 'row_attr' => [ + 'class' => 'mb-3', + ], + 'attr' => [ + 'class' => 'd-ib col-4 pr-2 pl-2', + ], + ] + ) + ; + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + 'data_class' => Debriefing::class, + ]); + } +} diff --git a/src/Form/EstablishmentGroupType.php b/src/Form/EstablishmentGroupType.php new file mode 100644 index 0000000..d597e36 --- /dev/null +++ b/src/Form/EstablishmentGroupType.php @@ -0,0 +1,25 @@ +add('label') + ; + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + 'data_class' => EstablishmentGroup::class, + ]); + } +} diff --git a/src/Form/FileType.php b/src/Form/FileType.php new file mode 100644 index 0000000..5021bc2 --- /dev/null +++ b/src/Form/FileType.php @@ -0,0 +1,57 @@ +add('position', HiddenType::class); + + $builder->add( + 'name', + TextType::class, + [ + 'label' => 'Nom', + 'required' => true, + 'attr' => [ + ], + 'attr' => [ + 'class' => 'col-md-8', + ], + 'constraints' => [ + new NotBlank(), + ], + ] + ); + + $builder->add( + 'file', + FilePickerType::class, + [ + 'label' => 'Fichier', + 'required' => true, + 'attr' => [ + 'class' => 'col-md-6', + ], + 'constraints' => [ + ], + ] + ); + } + + public function configureOptions(OptionsResolver $resolver) + { + $resolver->setDefaults([ + // Configure your form options here + ]); + } +} diff --git a/src/Form/ProjectType.php b/src/Form/ProjectType.php new file mode 100644 index 0000000..8180aa6 --- /dev/null +++ b/src/Form/ProjectType.php @@ -0,0 +1,54 @@ +add('label') + ->add('establishments', null, [ + 'multiple' => true, + 'attr' => [ + 'size' => 15, + 'data-jschoice' => '', + ], + 'query_builder' => function (EntityRepository $er) { + return $er->createQueryBuilder('e') + ->addOrderBy('e.name', 'ASC'); + }, + ]) + ->add('description') + ->add('client') + ->add('files', + CollectionType::class, + [ + 'entry_type' => FileType::class, + 'by_reference' => false, + 'allow_add' => true, + 'allow_delete' => true, + 'prototype' => true, + 'collection_name' => 'files', + 'attr' => [ + 'class' => 'd-ib col-4 pr-2 pl-2', + ], + ] + ) + ; + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + 'data_class' => Project::class, + ]); + } +} diff --git a/src/Form/ThemeTypeType.php b/src/Form/ThemeTypeType.php new file mode 100644 index 0000000..bdcdf2c --- /dev/null +++ b/src/Form/ThemeTypeType.php @@ -0,0 +1,25 @@ +add('label') + ; + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + 'data_class' => ThemeType::class, + ]); + } +} diff --git a/src/Repository/ConferenceRepository.php b/src/Repository/ConferenceRepository.php new file mode 100644 index 0000000..6f22f34 --- /dev/null +++ b/src/Repository/ConferenceRepository.php @@ -0,0 +1,76 @@ +_em->persist($entity); + if ($flush) { + $this->_em->flush(); + } + } + + /** + * @throws ORMException + * @throws OptimisticLockException + */ + public function remove(Conference $entity, bool $flush = true): void + { + $this->_em->remove($entity); + if ($flush) { + $this->_em->flush(); + } + } + + // /** + // * @return Conference[] Returns an array of Conference objects + // */ + /* + public function findByExampleField($value) + { + return $this->createQueryBuilder('c') + ->andWhere('c.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('c.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Conference + { + return $this->createQueryBuilder('c') + ->andWhere('c.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/ConferenceRepositoryQuery.php b/src/Repository/ConferenceRepositoryQuery.php new file mode 100644 index 0000000..c18c0ce --- /dev/null +++ b/src/Repository/ConferenceRepositoryQuery.php @@ -0,0 +1,15 @@ +_em->persist($entity); + if ($flush) { + $this->_em->flush(); + } + } + + /** + * @throws ORMException + * @throws OptimisticLockException + */ + public function remove(Debriefing $entity, bool $flush = true): void + { + $this->_em->remove($entity); + if ($flush) { + $this->_em->flush(); + } + } + + // /** + // * @return Debriefing[] Returns an array of Debriefing objects + // */ + /* + public function findByExampleField($value) + { + return $this->createQueryBuilder('d') + ->andWhere('d.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('d.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Debriefing + { + return $this->createQueryBuilder('d') + ->andWhere('d.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/DebriefingRepositoryQuery.php b/src/Repository/DebriefingRepositoryQuery.php new file mode 100644 index 0000000..4faefff --- /dev/null +++ b/src/Repository/DebriefingRepositoryQuery.php @@ -0,0 +1,15 @@ +_em->persist($entity); + if ($flush) { + $this->_em->flush(); + } + } + + /** + * @throws ORMException + * @throws OptimisticLockException + */ + public function remove(EstablishmentGroup $entity, bool $flush = true): void + { + $this->_em->remove($entity); + if ($flush) { + $this->_em->flush(); + } + } + + // /** + // * @return EstablishmentGroup[] Returns an array of EstablishmentGroup objects + // */ + /* + public function findByExampleField($value) + { + return $this->createQueryBuilder('e') + ->andWhere('e.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('e.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?EstablishmentGroup + { + return $this->createQueryBuilder('e') + ->andWhere('e.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/EstablishmentGroupRepositoryQuery.php b/src/Repository/EstablishmentGroupRepositoryQuery.php new file mode 100644 index 0000000..3fe1730 --- /dev/null +++ b/src/Repository/EstablishmentGroupRepositoryQuery.php @@ -0,0 +1,15 @@ +_em->persist($entity); + if ($flush) { + $this->_em->flush(); + } + } + + /** + * @throws ORMException + * @throws OptimisticLockException + */ + public function remove(Project $entity, bool $flush = true): void + { + $this->_em->remove($entity); + if ($flush) { + $this->_em->flush(); + } + } + + // /** + // * @return Project[] Returns an array of Project objects + // */ + /* + public function findByExampleField($value) + { + return $this->createQueryBuilder('p') + ->andWhere('p.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('p.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Project + { + return $this->createQueryBuilder('p') + ->andWhere('p.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/ProjectRepositoryQuery.php b/src/Repository/ProjectRepositoryQuery.php new file mode 100644 index 0000000..d660755 --- /dev/null +++ b/src/Repository/ProjectRepositoryQuery.php @@ -0,0 +1,15 @@ +_em->persist($entity); + if ($flush) { + $this->_em->flush(); + } + } + + /** + * @throws ORMException + * @throws OptimisticLockException + */ + public function remove(ThemeType $entity, bool $flush = true): void + { + $this->_em->remove($entity); + if ($flush) { + $this->_em->flush(); + } + } + + // /** + // * @return ThemeType[] Returns an array of ThemeType objects + // */ + /* + public function findByExampleField($value) + { + return $this->createQueryBuilder('t') + ->andWhere('t.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('t.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?ThemeType + { + return $this->createQueryBuilder('t') + ->andWhere('t.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/src/Repository/ThemeTypeRepositoryQuery.php b/src/Repository/ThemeTypeRepositoryQuery.php new file mode 100644 index 0000000..aabc4b2 --- /dev/null +++ b/src/Repository/ThemeTypeRepositoryQuery.php @@ -0,0 +1,15 @@ + +
+ {% for item in ['themeType', 'date', 'persons'] %} + {% include(configuration.view('form_widget', '@Core/admin/crud/_form_widget.html.twig')) with {form: form[item]} %} + {% endfor %} +
+
+ {% for item in ['label', 'content', 'comment', 'feedback'] %} + {% include(configuration.view('form_widget', '@Core/admin/crud/_form_widget.html.twig')) with {form: form[item]} %} + {% endfor %} +
+ + diff --git a/templates/admin/debriefing/_form.html.twig b/templates/admin/debriefing/_form.html.twig new file mode 100644 index 0000000..64773de --- /dev/null +++ b/templates/admin/debriefing/_form.html.twig @@ -0,0 +1,13 @@ +
+
+ {% for item in ['date', 'project', 'internalContributors', 'externalContributors'] %} + {% include(configuration.view('form_widget', '@Core/admin/crud/_form_widget.html.twig')) with {form: form[item]} %} + {% endfor %} +
+
+ {% for item in ['topic', 'content'] %} + {% include(configuration.view('form_widget', '@Core/admin/crud/_form_widget.html.twig')) with {form: form[item]} %} + {% endfor %} +
+
+ diff --git a/templates/admin/establishment/_form.html.twig b/templates/admin/establishment/_form.html.twig new file mode 100644 index 0000000..b998da2 --- /dev/null +++ b/templates/admin/establishment/_form.html.twig @@ -0,0 +1,13 @@ +
+
+ {% for item in ['establishmentGroups'] %} + {% include(configuration.view('form_widget', '@Core/admin/crud/_form_widget.html.twig')) with {form: form[item]} %} + {% endfor %} +
+
+ {% for item in ['name', 'address', 'zipCode', 'city'] %} + {% include(configuration.view('form_widget', '@Core/admin/crud/_form_widget.html.twig')) with {form: form[item]} %} + {% endfor %} +
+
+