<?php


namespace HVCSiteBundle\Controller;

use HVCSiteBundle\Entity\Comptes;
use HVCSiteBundle\Entity\Fichefrais;
use HVCSiteBundle\Entity\Fraisforfait;
use HVCSiteBundle\Entity\Lignefraisforfait;
use HVCSiteBundle\Entity\Lignefraishorsfrais;
use HVCSiteBundle\Form\ComptesType;
use HVCSiteBundle\Form\FichefraisRechercheType;
use HVCSiteBundle\Form\FraisforfaitType;
use HVCSiteBundle\Form\LignefraisforfaitType;
use HVCSiteBundle\Form\LignefraishorsfraisType;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Validator\Constraints\Date;


class VisiteurController extends Controller
{


    //--------------------------------------PAGE SAISIRV-----------------------------------------

    function saisirVAction(Request $request)
    {

        $visiteur = $this->getUser();
        $em = $this->getDoctrine()->getManager();
        $uneLignefraisforfait = new Lignefraisforfait();

        $date = new \DateTime();
        $jour = $date->format('d');
        $jour = $jour + 0;
        $mois = $date->format('m');
        $mois = $mois + 0; //conversion int

        $annee = $date->format('Y');
        $annee = $annee + 0; //conversion int
        if ($jour > 10) {
            $mois = $mois + 1;
            if ($mois > 12) {
                $annee = $annee + 1;
                $mois = 1;
            }
        }


        $ficheFrais = $em->getRepository('HVCSiteBundle:Fichefrais')->findOneBy((array('compte' => $visiteur, 'mois' => $mois, 'annee' => $annee)));
        if (!$ficheFrais) {
            $ficheFrais = new Fichefrais();
        }


        $formLignefraisforfait = $this->createForm(new LignefraisforfaitType(), $uneLignefraisforfait);
        $formLignefraisforfait->add('Ajouter', 'submit');
        $formLignefraisforfait->handleRequest($request);
        if ($formLignefraisforfait->isValid()) {

            $uneLignefraisforfait->setDatemodification(new \DateTime());
            $uneLignefraisforfait->setDate(new \DateTime());
            $uneLignefraisforfait->setIdfichefrais($ficheFrais);
            $uneLignefraisforfait->setIdfraisforfait();
            $uneLignefraisforfait->setIdetat($em->getRepository('HVCSiteBundle:Etat')->findOneByid(1));

            $ficheFrais->addLignefraisforfait($uneLignefraisforfait);

            $ficheFrais->setAnnee($annee);
            $ficheFrais->setMois($mois);
            $ficheFrais->setCompte($visiteur);
            $ficheFrais->setMontantvalide(0); // a changer
            $ficheFrais->setNbjustificatifs(0);
            $ficheFrais->setIdetat($em->getRepository('HVCSiteBundle:Etat')->findOneByid(1));


            $em->persist($ficheFrais);
            $em->flush();
            return $this->redirectToRoute('hvc_site_saisirV');
        }


        return $this->render("HVCSiteBundle:Public:saisirV.html.twig", array(

                'listeLignefraisforfait' => $ficheFrais->getLignefraisforfait(),
                'formLignefraisforfait' => $formLignefraisforfait->createView()
            )
        );
    }


// -----------------------------------------PAGE SUIVIC----------------------------------------------------
    function SuiviCAction(Request $request)
    {
        $visiteur = $this->getUser();

        $em = $this->getDoctrine()->getManager();


        $mois = $request->get('mois');
        $annee = $request->get('annee');
        $lesVisiteurs = $em->getRepository('HVCSiteBundle:Comptes')->findAll();
        $leVisiteur = $em->getRepository('HVCSiteBundle:Comptes')->find($visiteur);

        $ficheVisiteur = $em->getRepository('HVCSiteBundle:Fichefrais')->findOneBy(array(
            "compte" => $leVisiteur,
            "mois" => $mois,
            "annee" => $annee,
        ));

        $listeLignefraisforfait = ($ficheVisiteur == null) ? null : $ficheVisiteur->getLignefraisforfait();
        $listeLignefraishorsfrais = ($ficheVisiteur == null) ? null : $ficheVisiteur->getLignefraishorsfrais();


        return $this->render('HVCSiteBundle:Public:SuiviC.html.twig', array(
                'listeLignefraisforfait' => $listeLignefraisforfait,
                'listeLignefraishorsfrais' => $listeLignefraishorsfrais,
                'fiche' => $ficheVisiteur,

            )
        );
    }


    function supprimerLigneAction($idLigne)
    {

        $em = $this->getDoctrine()->getManager();

        $laLignefraisforfait = $em->getRepository('HVCSiteBundle:Lignefraisforfait')->find($idLigne);
        $ficheFrais = $laLignefraisforfait->getIdfichefrais();
        $em->remove($laLignefraisforfait);
        $em->persist($ficheFrais);
        $em->flush();

        return $this->redirectToRoute('hvc_site_saisirV');
    }

    function modifierLigneAction(Request $request, $idLigne)
    {
        $visiteur = $this->getUser();

        $em = $this->getDoctrine()->getManager();


        $uneLignefraisforfait = new Lignefraisforfait();

        $date = new \DateTime();
        $jour = $date->format('d');
        $jour = $jour + 0;
        $mois = $date->format('m');
        $mois = $mois + 0; //conversion int

        $annee = $date->format('Y');
        $annee = $annee + 0; //conversion int
        if ($jour > 10) {
            $mois = $mois + 1;
            if ($mois > 12) {
                $annee = $annee + 1;
                $mois = 1;
            }
        }

        $ficheFrais = $em->getRepository('HVCSiteBundle:Fichefrais')->findOneBy((array('compte' => $visiteur, 'mois' => $mois, 'annee' => $annee)));
        $listeLignefraisforfait = $em->getRepository('HVCSiteBundle:Lignefraisforfait')->findBy(array('idfichefrais' => $ficheFrais));
        $uneLignefraisforfait = $em->getRepository('HVCSiteBundle:Lignefraisforfait')->find($idLigne);
        $formLignefraisforfait = $this->createForm(new LignefraisforfaitType(), $uneLignefraisforfait);
        $formLignefraisforfait->add('Modifier', 'submit');
        $formLignefraisforfait->handleRequest($request);


        if ($formLignefraisforfait->isValid()) {

            $uneLignefraisforfait->setDatecreation(new \DateTime());
            $uneLignefraisforfait->setDatemodification(new \DateTime());
            $uneLignefraisforfait->setDate(new \DateTime());
            $uneLignefraisforfait->setIdfichefrais($ficheFrais);
            $uneLignefraisforfait->setIdfraisforfait();
            $uneLignefraisforfait->setIdetat($em->getRepository('HVCSiteBundle:Etat')->findOneByid(1));


            $em->persist($uneLignefraisforfait);
            $em->flush();

            return $this->redirectToRoute('hvc_site_saisirV');
        }

        return $this->render("HVCSiteBundle:Public:saisirV.html.twig", array(

                'listeLignefraisforfait' => $listeLignefraisforfait,
                'formLignefraisforfait' => $formLignefraisforfait->createView()
            )
        );

    }

    function supprimerLignehorsAction($idLigne)
    {

        $em = $this->getDoctrine()->getManager();

        $laLignefraishorsfrais = $em->getRepository('HVCSiteBundle:Lignefraishorsfrais')->find($idLigne);

        $em->remove($laLignefraishorsfrais);
        $em->flush();

        return $this->redirectToRoute('hvc_site_saisirhorsfrais');
    }

    function modifierLignehorsAction(Request $request, $idLigne)
    {
        $visiteur = $this->getUser();

        $em = $this->getDoctrine()->getManager();


        $uneLignefraisforfait = new Lignefraisforfait();

        $date = new \DateTime();
        $jour = $date->format('d');
        $jour = $jour + 0;
        $mois = $date->format('m');
        $mois = $mois + 0; //conversion int

        $annee = $date->format('Y');
        $annee = $annee + 0; //conversion int
        if ($jour > 10) {
            $mois = $mois + 1;
            if ($mois > 12) {
                $annee = $annee + 1;
                $mois = 1;
            }
        }

        $ficheFrais = $em->getRepository('HVCSiteBundle:Fichefrais')->findOneBy((array('compte' => $visiteur, 'mois' => $mois, 'annee' => $annee)));
        $listeLignefraishorsfrais = $em->getRepository('HVCSiteBundle:Lignefraishorsfrais')->findBy(array('idfichefrais' => $ficheFrais));
        $uneLignefraishorsfrais = $em->getRepository('HVCSiteBundle:Lignefraishorsfrais')->find($idLigne);
        $formLignefraishorsfrais = $this->createForm(new LignefraishorsfraisType(), $uneLignefraishorsfrais);
        $formLignefraishorsfrais->add('Modifier', 'submit');
        $formLignefraishorsfrais->handleRequest($request);

        if ($formLignefraishorsfrais->isValid()) {
            //$uneLignefraishorsfrais->setDatecreation(new \DateTime());
            $uneLignefraishorsfrais->setDatemodification(new \DateTime());
            $uneLignefraishorsfrais->setDate(new \DateTime());
            $uneLignefraishorsfrais->setIdfichefrais($ficheFrais);
            $uneLignefraishorsfrais->setIdetat($em->getRepository('HVCSiteBundle:Etat')->findOneByid(1));

            $em->persist($uneLignefraishorsfrais);
            $em->flush();

            return $this->redirectToRoute('hvc_site_saisirhorsfrais');
        }

        return $this->render("HVCSiteBundle:Public:saisirhorsfrais.html.twig", array(

                'listeLignefraishorsfrais' => $listeLignefraishorsfrais,
                'formLignefraishorsfrais' => $formLignefraishorsfrais->createView()
            )
        );

    }

//  -----------------------------------------PAGE SAISIRHORSFRAIS-----------------------------------------------

    function saisirhorsfraisAction(Request $request)
    {

        $visiteur = $this->getUser();
        $em = $this->getDoctrine()->getManager();
        $uneLignefraishorsfrais = new Lignefraishorsfrais();

        $date = new \DateTime();
        $jour = $date->format('d');
        $jour = $jour + 0;
        $mois = $date->format('m');
        $mois = $mois + 0; //conversion int

        $annee = $date->format('Y');
        $annee = $annee + 0; //conversion int
        if ($jour > 10) {
            $mois = $mois + 1;
            if ($mois > 12) {
                $annee = $annee + 1;
                $mois = 1;
            }
        }

        $ficheFrais = $em->getRepository('HVCSiteBundle:Fichefrais')->findOneBy((array('compte' => $visiteur, 'mois' => $mois, 'annee' => $annee)));
        if (!$ficheFrais) {
            $ficheFrais = new Fichefrais();
        }


        $formLignefraishorsfrais = $this->createForm(new LignefraishorsfraisType(), $uneLignefraishorsfrais);
        $formLignefraishorsfrais->add('Ajouter', 'submit');
        $formLignefraishorsfrais->handleRequest($request);
        if ($formLignefraishorsfrais->isValid()) {

            $uneLignefraishorsfrais->setDatecreation(new \DateTime());
            $uneLignefraishorsfrais->setDatemodification(new \DateTime());
            $uneLignefraishorsfrais->setIdfichefrais($ficheFrais);

            $uneLignefraishorsfrais->setIdetat($em->getRepository('HVCSiteBundle:Etat')->findOneByid(1));

            $ficheFrais->addLignefraishorsfrais($uneLignefraishorsfrais);

            $ficheFrais->setAnnee($annee);
            $ficheFrais->setMois($mois);
            $ficheFrais->setCompte($visiteur);
            $ficheFrais->setMontantvalide(0); // a changer
            $ficheFrais->setNbjustificatifs(0);
            $ficheFrais->setIdetat($em->getRepository('HVCSiteBundle:Etat')->findOneByid(1));

            $em->persist($ficheFrais);
            $em->flush();
            return $this->redirectToRoute('hvc_site_saisirhorsfrais');

        }

        return $this->render("HVCSiteBundle:Public:saisirhorsfrais.html.twig", array(
                'listeLignefraishorsfrais' => $ficheFrais->getLignefraishorsfrais(),
                'formLignefraishorsfrais' => $formLignefraishorsfrais->createView()
            )
        );
    }


}