public function executeUGestio(sfWebRequest $request)
 {
     $this->setLayout('gestio');
     $this->accio = $request->getParameter('accio', 'C');
     $this->IDU = $this->getUser()->getSessionPar('idU');
     $this->IDS = $this->getUser()->getSessionPar('idS');
     $this->DEFAULT = false;
     $this->MISSATGE = "";
     $this->ERROR = "";
     //Consultem tota la info de l'usuari.
     $this->FDADES = UsuarisPeer::initialize($this->IDU, $this->IDS, false, true);
     $this->LRESERVES = ReservaespaisPeer::getReservesUsuaris($this->IDU, $this->IDS);
     $this->LMATRICULES = MatriculesPeer::getMatriculesUsuari($this->IDU, $this->IDS);
     $this->LENTITATS = new SitesSelectForm(null, array('idU' => $this->IDU));
     //Agafem el codi de facebook de l'usuari
     $this->FBI = UsuarisPeer::getUserFbCode($this->getUser()->getSessionPar('idU'));
     $this->PARS = array();
     $this->PARS = myUser::f_FbAuth(false, $this->getController()->genUrl('@fb_user_link', true));
     //Carreguem les dades del facebook.
     if ($request->hasParameter('BGESTIONAUSUARI')) {
         $this->accio = 'GESTIONA_USUARI';
     }
     if ($request->hasParameter('BGUARDAUSUARI')) {
         $this->accio = 'GUARDA_USUARI';
     }
     if ($request->hasParameter('BMATRICULA')) {
         $this->accio = 'MATRICULA';
     }
     if ($request->hasParameter('BGESTIONAMATRICULES')) {
         $this->accio = 'GESTIONA_MATRICULES';
     }
     if ($request->hasParameter('BGESTIONARESERVES')) {
         $this->accio = 'GESTIONA_RESERVES';
     }
     if ($request->hasParameter('BGUARDARESERVA')) {
         $this->accio = 'GUARDA_RESERVA';
     }
     if ($request->hasParameter('BACCEPTACONDICIONSRESERVA')) {
         $this->accio = 'ACCEPTA_CONDICIONS_RESERVA';
     }
     if ($request->hasParameter('BANULACONDICIONSRESERVA')) {
         $this->accio = 'ANULA_CONDICIONS_RESERVA';
     }
     if ($request->hasParameter('BGUARDACANVIENTITAT')) {
         $this->accio = 'GUARDA_CANVI_ENTITAT';
     }
     switch ($this->accio) {
         case 'GESTIONA_USUARI':
             $this->FUSUARI = UsuarisPeer::initialize($this->IDU, $this->IDS, false, true);
             break;
         case 'GUARDA_USUARI':
             $RP = $request->getParameter('usuaris');
             $this->FUSUARI = UsuarisPeer::initialize($RP['UsuariID'], $RP['site_id'], false, true);
             $this->FUSUARI->bind($RP);
             if ($this->FUSUARI->isValid()) {
                 $this->getUser()->addLogAction($this->accio, 'uGestio', $this->FUSUARI->getObject(), $RS);
                 $this->FUSUARI->save();
                 $OU = $this->FUSUARI->getObject();
                 UsuarisPeer::addSite($this->IDU, $this->IDS);
                 $this->MISSATGE = array('Usuari guardat correctament.');
             } else {
                 $this->MISSATGE = array('Hi ha algun error al formulari.<br />Revisa els camps, si us plau.');
             }
             break;
             //Pas 1: Mostrem els cursos als que es pot matricular
         //Pas 1: Mostrem els cursos als que es pot matricular
         case 'GESTIONA_MATRICULES':
             $this->getUser()->addLogAction($this->accio, 'uGestio');
             $this->LCURSOS = CursosPeer::getCursos(CursosPeer::CURSACTIU, 1, "", $this->IDS);
             //Retorna la data d'inici de matrícula segons si és antic alumne o no. '
             $this->DATA_INICI = UsuarisPeer::initialize($this->IDU, $this->IDS, false, false)->getObject()->getDataIniciMatricula();
             break;
             //Pas 2: Hem escollit un curs i passem la validació a TPV
         //Pas 2: Hem escollit un curs i passem la validació a TPV
         case 'MATRICULA':
             //Agafem el curs que s'ha seleccionat
             $D = $request->getParameter('D');
             //Si no s'ha seleccionat cap curs, tornem a la mateixa pàgina de GESTIONA_MATRICULES
             if (!isset($D['CURS']) || empty($D['CURS'])) {
                 $this->redirect('gestio/uGestio?accio=GESTIONA_MATRICULES');
             }
             //Passem els paràmetres a variables
             $idC = $D['CURS'];
             $idDescompte = $D['DESCOMPTE'];
             //Carreguem les dades de l'usuari que està fent la matrícula
             $USUARI = UsuarisPeer::retrieveByPK($this->getUser()->getSessionPar('idU'));
             //Carreguem els dades de la matrícula per guardar-la abans del pagament
             $this->DADES_MATRICULA = array();
             $this->DADES_MATRICULA['DNI'] = $USUARI->getDni();
             $this->DADES_MATRICULA['NOM'] = $USUARI->getNomComplet();
             $this->DADES_MATRICULA['IDU'] = $USUARI->getUsuariid();
             $this->DADES_MATRICULA['MODALITAT'] = MatriculesPeer::PAGAMENT_TARGETA;
             $this->DADES_MATRICULA['DESCOMPTE'] = $idDescompte;
             $this->DADES_MATRICULA['DATA'] = date('Y-m-d H:i', time());
             $this->DADES_MATRICULA['COMENTARI'] = "MATRÍCULA INTERNET";
             //Apliquem els descomptes i gratuït si ja està el grup ple
             $this->DADES_MATRICULA['PREU'] = CursosPeer::CalculaPreu($idC, $idDescompte, $this->IDS);
             $this->DADES_MATRICULA['CURS'] = $idC;
             $this->ISPLE = CursosPeer::isPle($idC, $this->IDS);
             //Retorna id de matrícula
             $matricules = $this->guardaMatricula($this->DADES_MATRICULA, 0, $this->IDS);
             //Si l'usuari no està vinculat, el vinculem amb el centre
             UsuarisPeer::addSite($this->IDU, $this->IDS);
             //Carreguem el TPV
             $this->TPV = MatriculesPeer::getTPV($this->DADES_MATRICULA['PREU'], $this->DADES_MATRICULA['NOM'], $matricules, $this->IDS);
             break;
             //Pas 3: Acabem la matrícula i guardem els canvis
         //Pas 3: Acabem la matrícula i guardem els canvis
         case 'FI_MATRICULA':
             //Hem vinculat l'usuari al pas anterior quan guardem la matrícula
             $this->MISS = "";
             $this->TITOL = "Matrícules";
             if ($request->hasParameter('OK')) {
                 $this->MISS = "Matrícula realitzada correctament.";
             } else {
                 $this->MISS = "Hi ha hagut algun problema realitzant la matrícula. <br />Si us plau posi's en contacte amb informatica@casadecultura.org o bé trucant al telèfon 972.20.20.13.";
             }
             break;
         case 'GESTIONA_RESERVES':
             $this->IDR = $request->getParameter('idR', 0);
             $this->FRESERVA = ReservaespaisPeer::initialize($this->IDR, $this->IDS, $this->IDU, true);
             break;
         case 'GUARDA_RESERVA':
             $PR = $request->getParameter('reservaespais');
             $this->FRESERVA = ReservaespaisPeer::initialize($PR['ReservaEspaiID'], $this->IDS, $this->IDU, true);
             $this->FRESERVA->bind($PR);
             if ($this->FRESERVA->isValid()) {
                 $this->FRESERVA->save();
                 $OO = $this->FRESERVA->getObject();
                 $FROM = OptionsPeer::getString('MAIL_FROM', $this->IDS);
                 $SEC = OptionsPeer::getString('MAIL_SECRETARIA', $this->IDS);
                 $this->sendMail($FROM, '*****@*****.**', 'HOSPICI :: NOVA RESERVA ESPAI', ReservaespaisPeer::sendMailNovaReserva($OO), array());
                 $this->sendMail($FROM, $SEC, 'HOSPICI :: NOVA RESERVA ESPAI', ReservaespaisPeer::sendMailNovaReserva($OO), array());
                 $this->MISSATGE = array(1);
             } else {
                 //                    $this->sendMail($FROM , '*****@*****.**','HOSPICI :: ERROR AL FORMULARI RESERVA D\'ESPAIS',print_r($this->FRESERVA));
                 $this->MISSATGE = array('Hi ha hagut algun problema enviant la sol·licitud.');
             }
             //Vinculem l'usuari que ha intentat fer una reserva
             UsuarisPeer::addSite($this->IDU, $this->IDS);
             break;
         case 'GESTIONA_CANVI_ENTITAT':
             $this->FENTITATS = new SitesSelectForm(null, array('idU' => $this->IDU));
             break;
         case 'GUARDA_CANVI_ENTITAT':
             $PR = $request->getParameter('sites');
             if ($PR['site_id_my'] > 0) {
                 $this->getUser()->setSessionPar('idS', $PR['site_id_my']);
                 $this->redirect('gestio/uGestio?accio=');
             } elseif ($PR['site_id'] > 0) {
                 $this->getUser()->setSessionPar('idS', $PR['site_id']);
                 $this->redirect('gestio/uGestio?accio=');
             }
             break;
         case 'ACCEPTA_CONDICIONS_RESERVA':
             $PR = $request->getParameter('reservaespais');
             $OR = ReservaespaisPeer::initialize($PR['ReservaEspaiID'], $this->IDS, $this->IDU, true)->getObject();
             $PARA = Encript::Encripta(serialize(array('formulari' => 'Reserva_Espais_Mail_Accepta_Condicions', 'id' => $OR->getReservaespaiid())));
             $this->redirect('gestio/uFormularis?PAR=' . $PARA);
             break;
         case 'ANULA_CONDICIONS_RESERVA':
             $PR = $request->getParameter('reservaespais');
             $OR = ReservaespaisPeer::initialize($PR['ReservaEspaiID'], $this->IDS, $this->IDU, true)->getObject();
             $PARR = Encript::Encripta(serialize(array('formulari' => 'Reserva_Espais_Mail_Rebutja_Condicions', 'id' => $OR->getReservaespaiid())));
             $this->redirect('gestio/uFormularis?PAR=' . $PARR);
             break;
             //Vincula l'usuari del facebook
         //Vincula l'usuari del facebook
         case 'FB_LINK':
             $idU = $this->getUser()->getSessionPar('idU');
             $OU = UsuarisPeer::retrieveByPK($idU);
             $FB_ID = $this->PARS['user']['id'];
             //Mirem si el número de facebook està associat a un altre usuari. Si és així, no fem res però emetem error.
             $OUF = UsuarisPeer::getUserFromFacebook($FB_ID);
             if ($OUF instanceof Usuaris) {
                 $this->ERROR = 'El compte de facebook actual està vinculat a un altre usuari. <br />Si us plau comuniqui-ho a informatica@casadecultura.org o bé entri al seu usuari de facebook i torni-ho a provar.';
             } elseif ($OU instanceof Usuaris) {
                 $OU->setFacebookid($this->PARS['user']['id']);
                 $OU->save();
             }
             $this->FBI = UsuarisPeer::getUserFbCode($this->getUser()->getSessionPar('idU'));
             $this->DEFAULT = true;
             break;
             //Desvincula l'usuari del facebook
         //Desvincula l'usuari del facebook
         case 'FB_UNLINK':
             $idU = $this->getUser()->getSessionPar('idU');
             $OU = UsuarisPeer::retrieveByPK($idU);
             $OU->setFacebookid(NULL);
             $OU->save();
             $this->FBI = UsuarisPeer::getUserFbCode($this->getUser()->getSessionPar('idU'));
             $this->DEFAULT = true;
             break;
         default:
             $this->DEFAULT = true;
     }
 }