Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace Chris\TestBundle\Controller;
- use Chris\TestBundle\Entity\Zusatzstoff;
- use Symfony\Component\DomCrawler\Form;
- use Symfony\Component\HttpFoundation\Request;
- use Symfony\Bundle\FrameworkBundle\Controller\Controller;
- use Chris\TestBundle\Entity\KW;
- use Chris\TestBundle\Form\KWType;
- use Symfony\Component\HttpFoundation\Session\Session;
- use Doctrine\ORM\Query;
- /**
- * Admin controller.
- *
- */
- class AdminController extends Controller
- {
- public $year;
- public $kw;
- public function __construct(){
- }
- /**
- * Lists all KW entities.
- *
- */
- public function adminAction(Request $request)
- {
- $session = $request->getSession();
- if(isset($_SERVER['HTTP_REFERER'])) {
- if (strpos($_SERVER["HTTP_REFERER"], 'speiseplanAdmin') == false) {
- $session->set('year', date("Y"));
- $session->set('kw', date("W"));
- }
- }
- // $_GET parameters
- $jahrwechsel = false;
- $vor = false;
- $query = [];
- // Änderung
- // Fülle das Array mit Zusatzstoffen und gebe es an die Form weiter
- $zusaetze = $this->zusatzstoffe();
- // Array mit allen Zusatzstoffen: Zuordnung ID => Name WICHTIG!
- $zusaetzeArray = array();
- $alleZusaetzeName = array();
- for ($i = 0; $i < count($zusaetze); $i++) {
- $zusaetzeArray += array($zusaetze[$i]["id"] => $zusaetze[$i]['name']);
- //$alleZusaetzeName[] = $zusaetze[$i]['name'];
- }
- // @TODO
- // Checken ob ein Datensatz mit Jahr und KW schon existiert in DB (Query)
- $repo = $this->getDoctrine()->getRepository('ChrisTestBundle:KW');
- $qb = $repo->createQueryBuilder('kw');
- var_dump($session->get('kw'));
- /***
- * DB Querys
- * Finde die Speisen einer KW Heraus
- ***/
- $qb->add('select', 'kw')
- ->where('kw.kw = :kw')
- ->andWhere('kw.jahr = :jahr')
- ->setParameter('kw', $session->get('kw'))
- ->setParameter('jahr', date("Y"));
- $query = $qb->getQuery();
- $query = $query->getArrayResult();
- var_dump($query);
- $form = $form = $this->getEmptyForm(date("Y"), $session->get('kw'), $session);
- if (count($query) > 0){
- $form = $this->getNormalForm(date("Y"), $session->get('kw'), $query, $session);
- }
- $form->handleRequest($request);
- if ($form->get('Eintragen')->isClicked()) {
- $result = $this->eintragen($form, $query, $session);
- $form = $result[0];
- $query = $result[1];
- }
- else if ($form->get('vor')->isClicked()) {
- $result = $this->get_vor($form, $session);
- $form = $result[0];
- $query = $result[1];
- //return $this->redirect($this->generateUrl('admin'));
- }
- else if ($form->get('zurueck')->isClicked()) {
- $result = $this->get_back($session);
- $form = $result[0];
- $query = $result[1];
- //return $this->redirect($this->generateUrl('admin'));
- }
- else if ($form->get('edit')->isClicked()) {
- $result = $this->get_edit($form, $session);
- $form = $result[0];
- $query = $result[1];
- }
- else {
- $this->getEmptyForm(date("Y"), $session->get('kw'), $session);
- }
- $this->kw = $session->get('kw');
- $this->year = $session->get('year');
- echo $this->kw;
- echo $this->year;
- //$zusaetze = $this->zusatzstoffe();
- //var_dump($query);
- return $this->render('ChrisTestBundle:KW:admin.html.twig', array(
- 'form' => $form->createView(), 'kw' => $session->get('kw'), 'zusaetze' => $zusaetze, 'alleZusaetze' => $zusaetzeArray, 'query' => $query
- ));
- }
- public function eintragen ($form, $query, $session){
- /**
- * Datensatz soll eingetragen werden
- */
- // Alten Datensatz löschen
- if (count($query) > 0) {
- echo '<div class="bg-danger">Speiseplan für diese KW im Jahr bereits vorhanden!</div>';
- $em = $this->getDoctrine()->getManager();
- $deleteThis = $this->getDoctrine()
- ->getRepository('ChrisTestBundle:KW')->find($query[0]['id']);
- $em->remove($deleteThis);
- $em->flush();
- }
- // zusMontagHauptgericht
- $tage = array("Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag");
- $gerichte = array("Hauptgericht", "Nachtisch");
- $eingetragendeZusatzstoffeArray = array();
- $hg = new KW();
- // Adde die Zusatzstoffe
- /***
- * DIESER Abschnitt überprüft die vom Formular erhaltenden eingegebenden Zusatzsoffe, ob sie bereits in der
- * DB existieren. Sie werden dann eingetragen.
- */
- foreach ($tage as $tag) {
- foreach ($gerichte as $gericht) {
- $idsDieEingetragenWerden = array();
- $data = $form->getData()["zus" . $tag . $gericht];
- $data = explode(",", $data);
- foreach ($data as $d) {
- // Zusatzstoff existiert schon und kann so übernommen werden
- // ist kein vorhandener Zusatzstoff (also noch nicht mit ID in der DB)
- if (!is_numeric($d)) {
- if ($d != ""){
- // Ist der Zusatzstoff schon in der DB?
- $alleZ = $this->getDoctrine()->getRepository('ChrisTestBundle:Zusatzstoff');
- // Der Zusatzstoff wurde noch nicht eingetragen also trag ihn ein
- if ($alleZ->findZusatzstoffByName($d) == NULL){
- $z = new Zusatzstoff();
- $z->setName($d);
- $em = $this->getDoctrine()->getManager();
- $em->persist($z);
- $em->flush();
- $idsDieEingetragenWerden[] = $z->getId();
- }
- // Zusatzstoff ist eingetragen, schreibe die ID rein
- else {
- $ddd = $alleZ->findZusatzstoffByName($d);
- $idsDieEingetragenWerden[] = $ddd->getId();
- }
- }
- }
- // ZusatzstoffID schon bekannt (durch Javascript)
- else {
- $idsDieEingetragenWerden[] = $d;
- }
- }
- $eingetragendeZusatzstoffeArray[] = implode(",", $idsDieEingetragenWerden);
- }
- }
- //var_dump($eingetragendeZusatzstoffeArray);
- $hg->setMontagHauptgericht($form->getData()['montagHauptgericht']);
- $hg->setDienstagHauptgericht($form->getData()['dienstagHauptgericht']);
- $hg->setMittwochHauptgericht($form->getData()['mittwochHauptgericht']);
- $hg->setDonnerstagHauptgericht($form->getData()['donnerstagHauptgericht']);
- $hg->setFreitagHauptgericht($form->getData()['freitagHauptgericht']);
- $hg->setMontagNachtisch($form->getData()['montagNachtisch']);
- $hg->setDienstagNachtisch($form->getData()['dienstagNachtisch']);
- $hg->setMittwochNachtisch($form->getData()['mittwochNachtisch']);
- $hg->setDonnerstagNachtisch($form->getData()['donnerstagNachtisch']);
- $hg->setFreitagNachtisch($form->getData()['freitagNachtisch']);
- $hg->setJahr($session->get('year'));
- $hg->setKW($session->get('kw'));
- $hg->setMontagHauptgerichtZusatz($eingetragendeZusatzstoffeArray[0]);
- $hg->setMontagNachtischZusatz($eingetragendeZusatzstoffeArray[1]);
- $hg->setDienstagHauptgerichtZusatz($eingetragendeZusatzstoffeArray[2]);
- $hg->setDienstagNachtischZusatz($eingetragendeZusatzstoffeArray[3]);
- $hg->setMittwochHauptgerichtZusatz($eingetragendeZusatzstoffeArray[4]);
- $hg->setMittwochNachtischZusatz($eingetragendeZusatzstoffeArray[5]);
- $hg->setDonnerstagHauptgerichtZusatz($eingetragendeZusatzstoffeArray[6]);
- $hg->setDonnerstagNachtischZusatz($eingetragendeZusatzstoffeArray[7]);
- $hg->setFreitagHauptgerichtZusatz($eingetragendeZusatzstoffeArray[8]);
- $hg->setFreitagNachtischZusatz($eingetragendeZusatzstoffeArray[9]);
- //$hg->setMontagHauptgerichtZusatz(implode(",", $form->getData()['zusMontagHauptgericht']));
- $em = $this->getDoctrine()->getManager();
- $em->persist($hg);
- $em->flush();
- echo '<div class="bg-success">Datensatz eingetragen</div>';
- //$this->kw = $form->getData()['kw'];
- //$this->year = $form->getData()['jahr'];
- // ... further modify the response or return it directly
- return array($form, $query);
- }
- public function getNormalForm($year, $kw, $query, $session){
- //ladybug_dump($query);
- $form = $this->createFormBuilder()
- ->add('jahr', 'text', array('data' => $session->get('year')))
- ->add('kw', 'text', array('data' => $session->get('kw')))
- ->add('montagHauptgericht', 'text', array(
- 'data' => $query[0]['montagHauptgericht']))
- ->add('montagNachtisch', 'text', array(
- 'data' => $query[0]['montagNachtisch']))
- ->add('dienstagHauptgericht', 'text', array(
- 'data' => $query[0]['dienstagHauptgericht']))
- ->add('dienstagNachtisch', 'text', array(
- 'data' => $query[0]['dienstagNachtisch']))
- ->add('mittwochHauptgericht', 'text', array(
- 'data' => $query[0]['mittwochHauptgericht']))
- ->add('mittwochNachtisch', 'text', array(
- 'data' => $query[0]['mittwochNachtisch']))
- ->add('donnerstagHauptgericht', 'text', array(
- 'data' => $query[0]['donnerstagHauptgericht']))
- ->add('donnerstagNachtisch', 'text', array(
- 'data' => $query[0]['donnerstagNachtisch']))
- ->add('freitagHauptgericht', 'text', array(
- 'data' => $query[0]['freitagHauptgericht']))
- ->add('freitagNachtisch', 'text', array(
- 'data' => $query[0]['freitagNachtisch']))
- ->add('zusMontagHauptgericht', 'text', array('required' => false))
- ->add('zusDienstagHauptgericht', 'text', array('required' => false))
- ->add('zusMittwochHauptgericht', 'text', array('required' => false))
- ->add('zusDonnerstagHauptgericht', 'text', array('required' => false))
- ->add('zusFreitagHauptgericht', 'text', array('required' => false))
- ->add('zusMontagNachtisch', 'text', array('required' => false))
- ->add('zusDienstagNachtisch', 'text', array('required' => false))
- ->add('zusMittwochNachtisch', 'text', array('required' => false))
- ->add('zusDonnerstagNachtisch', 'text', array('required' => false))
- ->add('zusFreitagNachtisch', 'text', array('required' => false))
- ->add('Eintragen', 'submit')
- ->add('edit', 'submit')
- ->add('vor', 'submit')
- ->add('zurueck', 'submit')
- ->getForm();
- return $form;
- }
- public function getEmptyForm($year, $kw, $session){
- $form = $this->createFormBuilder()
- ->add('jahr', 'text', array('data' => $session->get('year')))
- ->add('kw', 'text', array('data' => $session->get('kw')))
- ->add('montagHauptgericht', 'text', array(
- 'data' => ""))
- ->add('montagNachtisch', 'text', array(
- 'data' => ""))
- ->add('dienstagHauptgericht', 'text', array(
- 'data' =>""))
- ->add('dienstagNachtisch', 'text', array(
- 'data' =>""))
- ->add('mittwochHauptgericht', 'text', array(
- 'data' => ""))
- ->add('mittwochNachtisch', 'text', array(
- 'data' => ""))
- ->add('donnerstagHauptgericht', 'text', array(
- 'data' => ""))
- ->add('donnerstagNachtisch', 'text', array(
- 'data' => ""))
- ->add('freitagHauptgericht', 'text', array(
- 'data' => ""))
- ->add('freitagNachtisch', 'text', array(
- 'data' => ""))
- ->add('zusMontagHauptgericht', 'text', array('required' => false))
- ->add('zusDienstagHauptgericht', 'text', array('required' => false))
- ->add('zusMittwochHauptgericht', 'text', array('required' => false))
- ->add('zusDonnerstagHauptgericht', 'text', array('required' => false))
- ->add('zusFreitagHauptgericht', 'text', array('required' => false))
- ->add('zusMontagNachtisch', 'text', array('required' => false))
- ->add('zusDienstagNachtisch', 'text', array('required' => false))
- ->add('zusMittwochNachtisch', 'text', array('required' => false))
- ->add('zusDonnerstagNachtisch', 'text', array('required' => false))
- ->add('zusFreitagNachtisch', 'text', array('required' => false))
- ->add('Eintragen', 'submit')
- ->add('edit', 'submit')
- ->add('vor', 'submit')
- ->add('zurueck', 'submit')
- ->getForm();
- return $form;
- }
- public function get_vor($form, $session){
- $repo = $this->getDoctrine()->getRepository('ChrisTestBundle:KW');
- $qb = $repo->createQueryBuilder('kw');
- // Erhöhe aktuelle KW
- $session->set('kw', $session->get('kw')+1);
- $qb->add('select', 'kw')
- ->where('kw.kw = :kw')
- ->andWhere('kw.jahr = :jahr')
- ->setParameter('kw', $session->get('kw'))
- ->setParameter('jahr', $session->get('year'));
- $query = $qb->getQuery();
- $query = $query->getArrayResult();
- if (count($query) > 0){
- $form = $this->getNormalForm($session->get('year'),$session->get('kw'), $query, $session);
- }
- else {
- $form = $this->getEmptyForm($session->get('year'), $session->get('kw'), $session);
- }
- // Es wurde so weit geklickt, dass das Jahr wechselt (nach vorne)
- if ($session->get('kw') >= $this->anzahlKalenderWochen($session->get('year'))){
- $session->set('year', $session->get('year')+1 );
- $session->set('kw', 1);
- $qb->add('select', 'kw')
- ->where('kw.kw = :kw')
- ->andWhere('kw.jahr = :jahr')
- ->setParameter('kw', $session->get('kw'))
- ->setParameter('jahr', $session->get('year'));
- $query = $qb->getQuery();
- $query = $query->getArrayResult();
- if (count($query) > 0){
- $form = $this->getNormalForm($session->get('year'), $session->get('kw'), $query, $session);
- }
- else {
- $form = $this->getEmptyForm($session->get('year'), $session->get('kw'), $session);
- }
- }
- return array ($form,$query);
- }
- public function get_back ($session){
- // Erniedrige aktuelle KW
- $session->set('kw', $session->get('kw')-1);
- $repo = $this->getDoctrine()->getRepository('ChrisTestBundle:KW');
- $qb = $repo->createQueryBuilder('kw');
- $qb->add('select', 'kw')
- ->where('kw.kw = :kw')
- ->andWhere('kw.jahr = :jahr')
- ->setParameter('kw', $session->get('kw'))
- ->setParameter('jahr',$session->get('year'));
- $query = $qb->getQuery();
- $query = $query->getArrayResult();
- if (count($query) > 0){
- $form = $this->getNormalForm($session->get('year'),$session->get('kw'), $query, $session);
- }
- else {
- $form = $this->getEmptyForm($session->get('year'), $session->get('kw'), $session);
- }
- // Es wurde soweit geklickt, dass das Jahr wechselt
- if (intval($session->get('kw')) == 0){
- $session->set('year', $session->get('year')-1);
- $session->set('kw', 52);
- $qb->add('select', 'kw')
- ->where('kw.kw = :kw')
- ->andWhere('kw.jahr = :jahr')
- ->setParameter('kw', $session->get('kw'))
- ->setParameter('jahr', $session->get('year'));
- $query = $qb->getQuery();
- $query = $query->getArrayResult();
- if (count($query) > 0){
- $form = $this->getNormalForm($session->get('year'), $session->get('kw'), $query, $session);
- }
- else {
- $form = $this->getEmptyForm($session->get('year'), $session->get('kw'), $session);
- }
- }
- return array ($form, $query);
- }
- public function get_edit ($form, $session){
- $this->kw = $form->getData()['kw'];
- $session->set('kw', $form->getData()['kw']);
- $session->set('year', $form->getData()['jahr']);
- // Lade aktuelle KW und Jahr aus Form und suche den Datensatz in der DB und stelle ihn dar
- // @TODO
- // Checken ob ein Datensatz mit Jahr und KW schon existiert in DB (Query)
- $repo = $this->getDoctrine()->getRepository('ChrisTestBundle:KW');
- $qb = $repo->createQueryBuilder('kw');
- /***
- * DB Querys
- * Finde die Speisen einer KW Heraus
- ***/
- $qb->add('select', 'kw')
- ->where('kw.kw = :kw')
- ->andWhere('kw.jahr = :jahr')
- ->setParameter('kw', $session->get('kw'))
- ->setParameter('jahr', $session->get('year'));
- $query = $qb->getQuery();
- $query = $query->getArrayResult();
- //var_dump($query);
- // Datensatz schon vorhanden, also Felder füllen zum editieren
- if (count($query) > 0) {
- $form = $this->getNormalForm($session->get('year'),$session->get('kw'), $query, $session);
- /**
- * ->add('zusMontagHauptgericht', 'choice', array(
- * 'choices' => $zusaetzeArray,
- * 'required' => false,
- * 'multiple' => true
- * ))
- */
- } // Kein Datensatz vorhanden, abspeichern
- else {
- echo '<div class="bg-danger">Keinen Speiseplan in diesen Jahr mit KW gefunden!</div>';
- $form = $this->getEmptyForm($session->get('year'),$session->get('kw'), $session);
- }
- return array($form,$query);
- }
- public function zusatzstoffe()
- {
- // 1. Array mit ID=>Zusatzstoff an die Renderform
- $repo = $this->getDoctrine()->getRepository('ChrisTestBundle:Zusatzstoff');
- $qb = $repo->createQueryBuilder('z');
- $qb->add('select', 'z')
- ->where('z.name IS NOT null')
- ->orderBy('z.name', 'ASC');
- $result = $qb->getQuery()->getArrayResult();
- //$res = $qb->getQuery()->getResult(Query::HYDRATE_ARRAY);
- return $result;
- // 2. Form mit Zusatztoff zurück und eintragen
- }
- function anzahlKalenderWochen($jahr) // Gibt die Anzahl der Kalenderwochen eines gegebenen Jahrs (Format YYYY) zurück
- {
- $letzteKW = date("W",strtotime("31.12.".$jahr));
- $anzahlKW = ($letzteKW == 1) ? 52 : $letzteKW;
- return $anzahlKW;
- } // function anzahlKalenderWochen($jahr)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement