<?php
namespace App\Controller;
use App\ClassTheatre\asides;
use App\ClassTheatre\TheatreController;
use App\Service\Functions;
use App\Validator\Relations;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Form\Extension\Core\Type\FormType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use TheatreCore\Form\Type\RelationsType;
class AjoutDocumentsController extends TheatreController
{
public function __construct(EntityManagerInterface $em, TranslatorInterface $translator, TokenStorageInterface $tokenStorage, Functions $func)
{
// surbrillance du menu principal (thnet)
$GLOBALS['rub_courante'] = 'spectacles';
parent::__construct($translator, $tokenStorage);
$this->em = $em;
$this->func = $func;
$this->asides = new asides();
}
/**
* @Route("/spectacles/documents/documents-ajout", name="ajout_documents_spectacles")
*/
public function action_spectacles_documents_ajout(Request $request)
{
$formFactory = $this->get('form.factory')->createBuilder(FormType::class, null, [
'attr' => [
'id' => 'masterform'
]
]);
// ajax relation pour les spectacles
$formFactory->add('idspectacle', RelationsType::class, [
'label' => 'Choisissez un spectacle',
'type_dbdo' => 'spectacles',
'type_object' => 'form',
'dbdo' => 'idspectacle',
'relat' => 'simple',
'constraints' => [
new Relations(['message' => 'Spectacle : veuillez choisir un spectacle'])
]
]);
$formFactory->add('validation', SubmitType::class, [
'label' => 'Continuer',
'attr' => [
'class'=>'boutform boutbig'
]
]);
$form = $formFactory->getForm();
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid())
{
// id de spectacle ?
$idspectacle = $form->get('idspectacle')->getViewData();
if(!empty($idspectacle)) {
$infos_spectacle = $form->get('idspectacle')->getData();
// direction le spectacle
if(!empty($infos_spectacle->getUrlClean())) {
return $this->redirectToRoute('spectacle_documents_edit', ['slug' => $infos_spectacle->getUrlClean()]);
} else {
$this->context['error']['spectacle_inconnu'] = 'Impossible de trouver le spectacle';
}
} else {
$this->context['error']['spectacle_inconnu'] = 'Impossible de trouver le spectacle';
}
}
$asides = new asides();
$asides->load('common_participer_contacts');
$this->context['view']->aside = $asides->view();
$this->locate = array(0 => 'Spectacles');
$this->title_page = 'Ajouter un document numérisé lié à un spectacle';
$this->view->locate = 'spectacles';
$this->view->js_more[] = 'ajax.relation.js';
return $this->view('spectacles/documents-ajout.html.twig', [
'form' => $form->createView()
]);
}
/**
* @Route("/contacts/documents/documents-ajout", name="ajout_documents_contacts")
*/
public function action_contacts_documents_ajout(Request $request)
{
$formFactory = $this->get('form.factory')->createBuilder(FormType::class, null, [
'attr' => [
'id' => 'masterform'
]
]);
// ajax relation pour les contacts
$formFactory->add('idcontact', RelationsType::class, [
'label' => 'Choisissez un contact',
'type_dbdo' => 'contacts',
'type_object' => 'form',
'dbdo' => 'idcontact',
'relat' => 'simple',
'constraints' => [
new Relations(['message' => 'Contact : veuillez choisir un contact'])
]
]);
$formFactory->add('validation', SubmitType::class, [
'label' => 'Continuer',
'attr' => [
'class'=>'boutform boutbig'
]
]);
$form = $formFactory->getForm();
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid())
{
// id de contact ?
$idcontact = $form->get('idcontact')->getViewData();
if(!empty($idcontact)) {
$infos_contact = $form->get('idcontact')->getData();
// direction le contact
if(!empty($infos_contact->getUrlClean())) {
return $this->redirectToRoute('contact_documents_edit', ['slug' => $infos_contact->getUrlClean()]);
} else {
$this->context['error']['contact_inconnu'] = 'Impossible de trouver le contact';
}
} else {
$this->context['error']['contact_inconnu'] = 'Impossible de trouver le contact';
}
}
$asides = new asides();
$asides->load('common_participer_contacts');
$this->context['view']->aside = $asides->view();
$this->locate = array(0 => 'Spectacles');
$this->title_page = 'Ajouter un document numérisé lié à un spectacle';
$this->view->locate = 'spectacles';
$this->view->js_more[] = 'ajax.relation.js';
return $this->view('contacts/documents-ajout.html.twig', [
'form' => $form->createView()
]);
}
}