<?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 ComptableController extends Controller
{

    function consulterCAction(Request $request)
    {
        $em = $this->getDoctrine()->getManager();

        $lesfiches = $em->getRepository('HVCSiteBundle:Fichefrais')->findAll();


        return $this->render('HVCSiteBundle:Public:consulterC.html.twig', array(
                'lesfiches' => $lesfiches,
            )
        );
    }
    function  miseEnPaiementAction(Request $request, $idfichefrais)
    {
        $em = $this->getDoctrine()->getManager();
        $lesfiches = $em->getRepository('HVCSiteBundle:Fichefrais')->findAll();
        $etat = $em->getRepository('HVCSiteBundle:Etat')->findOneByid(2);
        $lafichefrais = $em->getRepository('HVCSiteBundle:Fichefrais')->find($idfichefrais);
        $leslignesfraisforfais = $em->getRepository('HVCSiteBundle:Lignefraisforfait')->findBy(array('idfichefrais' => $idfichefrais));;
        $lesligneshorsfrais = $em->getRepository('HVCSiteBundle:lignefraishorsfrais')->findBy(array('idfichefrais' => $idfichefrais));;
        $miseEnPaiement = true;

        foreach( $leslignesfraisforfais as $uneLignefraisforfait  )
        {
            if ($uneLignefraisforfait->getIdetat() != $etat )
            {
                $miseEnPaiement = false ;
                break;

            }
        }
        foreach ($lesligneshorsfrais as $unelignefraishorsfrais)
        {
            if($unelignefraishorsfrais->getIdetat() != $etat )
            {
                $miseEnPaiement = false ;
                break;

            }
        }
        if ($miseEnPaiement == true)
        {
            $lafichefrais->setIdetat($em->getRepository('HVCSiteBundle:Etat')->findOneByid(5));
            $em = $this->getDoctrine()->getManager();
            $em->persist($lafichefrais);
            $em->flush();
        }
        return $this->render('HVCSiteBundle:Public:consulterC.html.twig', array(

                'lesfiches' => $lesfiches,
        ));

    }
    function consulterFicheAction(Request $request, $idfichefrais)
    {

        $em = $this->getDoctrine()->getManager();
        $lafichefrais = $em->getRepository('HVCSiteBundle:Fichefrais')->find($idfichefrais);

        return $this->render('HVCSiteBundle:Public:consulterfichefrais.html.twig', array(
                'lafichefrais' => $lafichefrais,
            )
        );
    }
    function rechercheFicheAction(Request $request)
    {


        $form = $this->createForm(new FichefraisRechercheType());

        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {

            $leVisiteur = $form->get('Visiteur')->getData();
            $mois = $form->get('DateFiche')->getData()->format('m');
            $annee = $form->get('DateFiche')->getData()->format('Y');

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


            ));

            //dump($fichefrais);die();
            return $this->render('HVCSiteBundle:Public:rechercher_fiche.html.twig', array(
                'form' => $form->createView(),
                'lafichefrais' => $fichefrais,

            ));

        }

        return $this->render('HVCSiteBundle:Public:rechercher_fiche.html.twig', array(
            'form' => $form->createView(),
            'lafichefrais' => null,
        ));
    }


    function tableAction()
    {
        return $this->render("HVCSiteBundle:Public:table.html.twig");
    }


    function gererFraisForfaitAction(Request $request)
    {

        $em = $this->getDoctrine()->getManager();
        $listeFraisForfait = $em->getRepository('HVCSiteBundle:Fraisforfait')->findAll();
        $unFraisforfait = new Fraisforfait();
        $form = $this->createForm(new FraisforfaitType(), $unFraisforfait);
        $form->handleRequest($request);

        if ($form->isValid()) {

            $unFraisforfait->setDatecreation(new \DateTime());
            $unFraisforfait->setDatemodification(new \DateTime());

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

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

        return $this->render("HVCSiteBundle:Public:gestionFraisForfait.html.twig", array(
                'listeFraisForfait' => $listeFraisForfait,
                'form' => $form->createView()
            )
        );
    }


    function validerLigneAction(Request $request, $idLigne)
    {
        $em = $this->getDoctrine()->getManager();
        $listeLignefraisforfait = $em->getRepository('HVCSiteBundle:Lignefraisforfait')->findAll();
        $uneLignefraisforfait = $em->getRepository('HVCSiteBundle:Lignefraisforfait')->find($idLigne);
        $uneLignefraisforfait->setIdetat($em->getRepository('HVCSiteBundle:Etat')->findOneByid(2));

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

        return $this->redirectToRoute('hvc_site_consulterC');

    }

    function validerLignehorsfraisAction(Request $request, $idLigne)
    {
        $em = $this->getDoctrine()->getManager();
        $listeLignefraishorsfrais = $em->getRepository('HVCSiteBundle:Lignefraishorsfrais')->findAll();
        $uneLignefraishorsfrais = $em->getRepository('HVCSiteBundle:Lignefraishorsfrais')->find($idLigne);
        $uneLignefraishorsfrais->setIdetat($em->getRepository('HVCSiteBundle:Etat')->findOneByid(2));

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

        return $this->redirectToRoute('hvc_site_consulterC');

    }

//-----------------------------------------------------------------------//
//---------------ACTION DE LA PAGE COMPTABLE REJETER---------------------//
//-----------------------------------------------------------------------//


    function rejeterLigneAction(Request $request, $idLigne)
    {
        $em = $this->getDoctrine()->getManager();
        $listeLignefraisforfait = $em->getRepository('HVCSiteBundle:Lignefraisforfait')->findAll();
        $uneLignefraisforfait = $em->getRepository('HVCSiteBundle:Lignefraisforfait')->find($idLigne);
        $uneLignefraisforfait->setIdetat($em->getRepository('HVCSiteBundle:Etat')->findOneByid(3));

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

        return $this->redirectToRoute('hvc_site_consulterC');

    }


    function rejeterLignehorsfraisAction(Request $request, $idLigne)
    {
        $em = $this->getDoctrine()->getManager();
        $listeLignefraishorsfrais = $em->getRepository('HVCSiteBundle:Lignefraishorsfrais')->findAll();
        $uneLignefraishorsfrais = $em->getRepository('HVCSiteBundle:Lignefraishorsfrais')->find($idLigne);
        $uneLignefraishorsfrais->setIdetat($em->getRepository('HVCSiteBundle:Etat')->findOneByid(3));

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

        return $this->redirectToRoute('hvc_site_consulterC');

    }

}