/** * Executem el login del modul administrador **/ public function executeULogin(sfWebRequest $request) { $this->setLayout('gestio'); $this->accio = $request->getParameter('accio', ''); $this->IDS = $this->getUser()->ParReqSesForm($request, 'idS', 1); //Per defecte entro al IDS = 1 que és la Casa de Cultura de Girona. $this->FLogin = new LoginForm(array('site' => $this->IDS, 'nick' => "", 'password' => '')); $this->ERROR = ""; $this->FB = myUser::f_FbAuth(false, $this->getController()->genUrl('@fb_login', true)); //Retorna l'usuari que s'ha autentificat amb facebook if ($request->hasParameter('BLOGIN')) { $this->accio = "LOGIN"; } if ($request->hasParameter('BNEWUSER')) { $this->accio = "NEW_USER"; } if ($request->hasParameter('BSAVENEWUSER')) { $this->accio = "SAVE_NEW_USER"; } if ($request->hasParameter('BREMEMBER')) { $this->accio = "REMEMBER"; } switch ($this->accio) { case 'LOGOUT': $this->getUser()->setSessionPar('idU', 0); $this->getUser()->setSessionPar('idS', 0); $this->getUser()->setSessionPar('idN', NivellsPeer::CAP); $this->getUser()->setAuthenticated(false); $this->getUser()->clearCredentials(); $this->redirect('gestio/uLogin'); break; //Fem un login via facebook //Fem un login via facebook case 'FB_LOGIN': $FB = myUser::f_FbAuth(false); $USUARI = UsuarisPeer::getUserFromFacebook($FB['user']['id']); if ($USUARI instanceof Usuaris) { $this->getUser()->setSessionPar('idS', $this->IDS); $this->makeLogin($USUARI, $this->IDS); } else { $this->getUser()->addLogAction('error', 'fb_login', $FB); $this->ERROR = "No s'ha trobat cap usuari vinculat amb el seu compte de facebook.<br />Per vincular-lo ha d'accedir i fer-ho des del seu administrador o bé crear un compte nou."; } break; //Fem un LOGIN //Fem un LOGIN case 'LOGIN': $L = $request->getParameter('login'); $this->FLogin->bind($L); if ($this->FLogin->isValid()) { //Consultem l'usuari. Només miraré els permisos si és un "administrador" $USUARI = UsuarisPeer::getUserLogin($L['nick'], $L['password'], null); if ($USUARI instanceof Usuaris) { $this->IDS = $L['site']; if (is_numeric($this->IDS)) { $_SESSION[$USUARI->getNomComplet()] = $USUARI->getNomComplet(); $this->getUser()->setSessionPar('idS', $this->IDS); $this->makeLogin($USUARI, $this->IDS); } else { $this->getUser()->addLogAction('error', 'login', $L); $this->ERROR = "Hi ha hagut algun problema amb el SITE.<br />Contacti amb la Casa de Cultura si us plau."; } } else { $this->getUser()->addLogAction('error', 'login', $L); $this->ERROR = "L'usuari o la contrasenya són incorrectes"; } } else { $this->getUser()->addLogAction('error', 'login', $L); $this->ERROR = "El DNI o la contrasenya són incorrectes"; } break; //Creem un nou usuari //Creem un nou usuari case 'NEW_USER': $this->FUSUARI = UsuarisPeer::initialize(0, $this->IDS, false, true); break; case 'SAVE_NEW_USER': $PR = $request->getParameter('usuaris'); $this->FUSUARI = UsuarisPeer::initialize(0, $this->IDS, false, true); $this->FUSUARI->bind($PR); if ($this->FUSUARI->isValid()) { $this->FUSUARI->save(); $OU = $this->FUSUARI->getObject(); UsuarisPeer::addSite($OU->getUsuariId(), $this->IDS); $this->makeLogin($OU, $this->IDS); } else { $this->MISSATGE = array('Hi ha hagut algun problema enviant la sol·licitud.'); } break; //Si fem um remember de contrassenya //Si fem um remember de contrassenya case 'REMEMBER': $this->redirect('gestio/uRemember'); break; default: if ($this->getUser()->isAuthenticated() && $this->getUser()->getSessionPar('idU') > 0) { $USUARI = UsuarisPeer::retrieveByPK($this->getUser()->getSessionPar('idU')); $this->makeLogin($USUARI, $this->IDS); } } }
/** * Gestió de formularis a través de mail * */ public function executeFormularis(sfWebRequest $request) { $this->setLayout('gestio'); $this->DEFAULT = false; $this->IDU = $this->getUser()->getSessionPar('idU'); $this->IDS = $this->getUser()->getSessionPar('idS'); //Entren crides i es mostra una reposta en web si ha anat bé o no. $PARAMETRES = Encript::Desencripta($request->getParameter('PAR')); $PAR = unserialize($PARAMETRES); switch ($PAR['formulari']) { //Paràmetres [id = IDReservaEspais] //Només es podrà si l'estat actual és ESPERA_ACCEPTACIÓ_CONDICIONS case 'Reserva_Espais_Mail_Accepta_Condicions': $OR = ReservaespaisPeer::retrieveByPK($PAR['id']); //Fem un login i després acceptem les condicions $OU = UsuarisPeer::retrieveByPK($OR->getUsuarisUsuariid()); $this->makeLogin($OU->getDNI(), $OU->getPasswd()); if ($OR instanceof Reservaespais && $OR->setAcceptada()) { $this->redirect('@hospici_llista_reserves?estat=RESERVA_ACCEPTADA'); } else { $this->redirect('@hospici_llista_reserves?estat=ERROR_TECNIC'); } UsuarisPeer::addSite($OR->getUsuarisUsuariid(), $OR->getSiteid()); break; //Des del mail la persona no accepta i rebutja les condicions. //Des del mail la persona no accepta i rebutja les condicions. case 'Reserva_Espais_Mail_Rebutja_Condicions': $OR = ReservaespaisPeer::retrieveByPK($PAR['id']); //Fem un login i després acceptem les condicions $OU = UsuarisPeer::retrieveByPK($OR->getUsuarisUsuariid()); $this->makeLogin($OU->getDNI(), $OU->getPasswd()); if ($OR instanceof Reservaespais && $OR->setRebutjada()) { $this->redirect('@hospici_llista_reserves?estat=RESERVA_ANULADA'); } else { $this->redirect('@hospici_llista_reserves?estat=ERROR_TECNIC'); } UsuarisPeer::addSite($OR->getUsuarisUsuariid(), $OR->getSiteid()); break; default: break; } }
/** * Funció que guarda una matrícula després d'enviar-ho des del gestor o bé des de l'hospici. * @param $idU Identificador d'usuari * @param $idC Identificador de curs * @param $idM Identificador de matrícula si volem reutilitzar-la * @param $comment Comentari a guardar * @return new Matricules() o $error ( Codi d'error ) * */ public static function saveNewMatricula($idU, $idC, $comment = "", $idD, $Mode_pagament, $idDadesBancaries = null) { //Parametre que retornarem $RET = array('AVISOS' => array(), 'OM' => new Matricules()); $OC = CursosPeer::retrieveByPK($idC); //Comprovem que l'usuari existeixi. if (is_null(UsuarisPeer::retrieveByPK($idU))) { $RET['AVISOS']["ERR_USUARI"] = "ERR_USUARI"; return $RET; } //Comprovem que el curs existeixi. if (is_null(CursosPeer::retrieveByPK($idC))) { $RET['AVISOS']["ERR_CURS"] = "ERR_CURS"; return $RET; } //Comprovem que aquest usuari no tingui ja una matrícula a aquest curs. Si ja ha estat matriculat, retornem -1. $OM = self::getMatriculaUsuari($idU, $idC, $OC->getSiteid()); if (!is_null($OM)) { $RET['AVISOS']["ERR_JA_TE_UNA_MATRICULA"] = "ERR_JA_TE_UNA_MATRICULA"; return $RET; } //Ara comprovem les diferents possibilitats. Calculem el preu amb reducció i deixem a 0 si no hi ha places. $PREU = CursosPeer::getPreuAmbDescompte($idC, $idD); //Entrem les dades que tenim i la deixem en procès per modificar-la després segons el que hagi passat $OM = new Matricules(); $OM->setUsuarisUsuariid($idU); $OM->setCursosIdcursos($idC); $OM->setEstat(MatriculesPeer::EN_PROCES); $OM->setComentari($comment); $OM->setDatainscripcio(date('Y-m-d H:i', time())); $OM->setPagat($PREU); $OM->setTreduccio($idD); $OM->setTpagament($Mode_pagament); $OM->setSiteId($OC->getSiteid()); $OM->setActiu(true); $OM->setTpvOperacio(0); $OM->setTpvOrder(0); if ($idDadesBancaries > 0) { $OM->setIddadesbancaries($idDadesBancaries); } else { $OM->setIddadesbancaries(null); } $OM->save(); //Guardem l'identificador de la matrícula $RET['OM'] = $OM; //Si el curs és ple, guardem que està en espera i mostrem que el curs està ple i resta en llista d'espera if ($OC->isPle()) { if ($Mode_pagament == TipusPeer::PAGAMENT_LLISTA_ESPERA) { $OM->setPagat(0); $OM->setEstat(MatriculesPeer::EN_ESPERA); $OM->save(); $RET['AVISOS']['CURS_PLE_LLISTA_ESPERA'] = "CURS_PLE_LLISTA_ESPERA"; } else { $RET['AVISOS']['CURS_PLE'] = "CURS_PLE"; } //Si queden places al curs } else { //Si el tipus de pagament és "reserva" ho guardem com a reservat. if ($Mode_pagament == TipusPeer::PAGAMENT_RESERVA) { $OM->setPagat(0); $OM->setEstat(MatriculesPeer::RESERVAT); $OM->setDatapagament(date('Y-m-d', time())); $OM->save(); $RET['AVISOS']['RESERVA_OK'] = "RESERVA_OK"; self::SendMailMatricula($OM, $OM->getSiteid()); //Enviem el correu electrònic per a la reserva } elseif ($Mode_pagament == TipusPeer::PAGAMENT_TARGETA) { $OM->setEstat(MatriculesPeer::EN_PROCES); $OM->setDatapagament(date('Y-m-d', time())); $OM->save(); $RET['AVISOS']['PAGAMENT_TPV'] = "PAGAMENT_TPV"; } elseif ($Mode_pagament == TipusPeer::PAGAMENT_METALIC) { //Guardem la matrícula tal qual està. $OM->setEstat(MatriculesPeer::ACCEPTAT_PAGAT); $OM->setPagat($PREU); $OM->setDatapagament(date('Y-m-d', time())); $OM->save(); $RET['AVISOS']['MATRICULA_METALIC_OK'] = "MATRICULA_METALIC_OK"; self::SendMailMatricula($OM, $OM->getSiteid()); } elseif ($Mode_pagament == TipusPeer::PAGAMENT_CODI_BARRES) { //Guardem la matrícula tal qual i marquem com a no pagada fins que vagi al banc a pagar-la. $OM->setEstat(MatriculesPeer::ACCEPTAT_NO_PAGAT); $OM->setPagat($PREU); $OM->setDatapagament(null); $OM->save(); $RET['AVISOS']['MATRICULA_CODI_BARRES'] = "MATRICULA_CODI_BARRES"; self::SendMailMatricula($OM, $OM->getSiteid()); } elseif ($Mode_pagament == TipusPeer::PAGAMENT_DOMICILIACIO) { $OM->setPagat($PREU); $OM->setEstat(MatriculesPeer::ACCEPTAT_NO_PAGAT); $OM->setTpagament(MatriculesPeer::PAGAMENT_DOMICILIACIO); $OM->setDatapagament(null); $OM->save(); $RET['AVISOS']['MATRICULA_DOMICILIACIO_OK'] = "MATRICULA_DOMICILIACIO_OK"; self::SendMailMatricula($OM, $OM->getSiteid()); } UsuarisPeer::addSite($OM->getUsuarisUsuariid(), $OM->getSiteId()); } return $RET; }
/** * Funció que carrega les dades i guarda una matrícula. També li posa un estat i un preu segons el que s'ha escollit. * @param $idU Identificador d'usuari * @param $idC Identificador de curs * @param $idM Identificador de matrícula si volem reutilitzar-la * @param $comment Comentari a guardar * @return new Matricules() o $error ( Codi d'error ) * */ public static function saveNewMatricula($idU, $idC, $idM = 0, $comment = "", $Descompte = self::REDUCCIO_CAP) { //Carreguem les dades de l'usuari $OU = UsuarisPeer::retrieveByPK($idU); $OC = CursosPeer::retrieveByPK($idC); //Si tenim un codi de matrícula, la carreguem. $OM = self::retrieveByPK($idM); if (!$OM instanceof Matricules) { $OM = new Matricules(); } //Si ho hem carregat tot correctament, seguim if ($OU instanceof Usuaris && $OC instanceof Cursos && $OM instanceof Matricules) { //Comprovem si la matrícula ja s'ha fet. if (self::hasMatriculaUsuari($idU, $idC, $OC->getSiteid()) > 0) { $OM = 1; //Retorna aquest error quan ja hi ha una matrícula del mateix curs per aquesta persona } else { //Mirem si hi ha places i marquem l'estat $PLACES = $OC->getPlacesArray(); if ($PLACES['OCUPADES'] < $PLACES['TOTAL']) { //Si el pagament és amb targeta marquem l'estat EN_PROCES if ($OC->getIsEntrada() == CursosPeer::HOSPICI_RESERVA_TARGETA) { $OM->setPagat(0); $OM->setEstat(self::EN_PROCES); } else { $OM->setPagat(0); $OM->setEstat(self::ACCEPTAT_NO_PAGAT); } } else { $OM->setPagat(0); $OM->setEstat(self::EN_ESPERA); } $OM->setUsuarisUsuariid($OU->getUsuariid()); $OM->setCursosIdcursos($OC->getIdCursos()); $OM->setComentari($comment); $OM->setDatainscripcio(date('Y-m-d h:i', time())); $OM->setTreduccio($Descompte); //Si el pagament és havent marcat Hospici només reserva... posem pagament POSTERIOR. if ($OC->getIsEntrada() == CursosPeer::HOSPICI_RESERVA) { $OM->setTpagament(self::PAGAMENT_METALIC); } else { $OM->setTpagament(self::PAGAMENT_TARGETA); } $OM->setSiteId($OC->getSiteid()); $OM->setActiu(true); $OM->save(); //Un cop feta la matrícula, hem de donar visibilitat a l'usuari UsuarisPeer::addSite($OU->getUsuariid(), $OC->getSiteid()); } } else { $OM = 0; //Retorna aquest error quan hi ha alguna dada inicial malament o objecte que no existeix } return $OM; }
/** * Gestió de formularis a través de mail * */ public function executeFormularis(sfWebRequest $request) { $this->setLayout('gestio'); $this->DEFAULT = false; $this->IDU = $this->getUser()->getSessionPar('idU'); $this->IDS = $this->getUser()->getSessionPar('idS'); //Entren crides i es mostra una reposta en web si ha anat bé o no. $PARAMETRES = Encript::Desencripta($request->getParameter('PAR')); $PAR = unserialize($PARAMETRES); switch ($PAR['formulari']) { //Paràmetres [id = IDReservaEspais] //Només es podrà si l'estat actual és ESPERA_ACCEPTACIÓ_CONDICIONS case 'Reserva_Espais_Mail_Accepta_Condicions': $OR = ReservaespaisPeer::retrieveByPK($PAR['id']); //Fem un login i després acceptem les condicions $OU = UsuarisPeer::retrieveByPK($OR->getUsuarisUsuariid()); $this->makeLogin($OU->getDNI(), $OU->getPasswd()); if ($OR instanceof Reservaespais) { if ($OR->setAcceptada()) { myUser::addLogTimeline('acceptada', 'Reserva (Hospici)', $this->IDU, $OR->getSiteId(), $OR->getReservaespaiid()); //Enviem un mail a secretaria informant de l'acceptació de les condicions $this->sendMail(OptionsPeer::getString('MAIL_FROM', $OR->getSiteid()), OptionsPeer::getString('MAIL_SECRETARIA', $OR->getSiteid()), "RESERVA " . $OR->getCodi() . " ACCEPTADA", "Les condicions per a la reserva amb codi " . $OR->getCodi() . " organitzada per " . $OR->getOrganitzadors() . " han estat <b>ACCEPTADES</b>. <br /> Per poder accedir-hi podeu clicar el següent <a href=\"http://www.casadecultura.cat/gestio/gReserves/accio/E/IDR/" . $OR->getReservaespaiid() . "\">enllaç</a> havent entrat prèviament a la intranet."); $this->redirect('@hospici_llista_reserves?estat=RESERVA_ACCEPTADA'); } else { $this->redirect('@hospici_llista_reserves?estat=ERROR_JA_CONTESTAT'); } } else { $this->redirect('@hospici_llista_reserves?estat=ERROR_TECNIC'); } UsuarisPeer::addSite($OR->getUsuarisUsuariid(), $OR->getSiteid()); break; //Des del mail la persona no accepta i rebutja les condicions. //Des del mail la persona no accepta i rebutja les condicions. case 'Reserva_Espais_Mail_Rebutja_Condicions': $OR = ReservaespaisPeer::retrieveByPK($PAR['id']); //Fem un login i després acceptem les condicions $OU = UsuarisPeer::retrieveByPK($OR->getUsuarisUsuariid()); $this->makeLogin($OU->getDNI(), $OU->getPasswd()); if ($OR instanceof Reservaespais) { if ($OR->setRebutjada()) { myUser::addLogTimeline('no_acceptada', 'Reserva (Hospici)', $this->IDU, $OR->getSiteId(), $OR->getReservaespaiid()); //Enviem un mail a secretaria informant del rebuig de les condicions $this->sendMail(OptionsPeer::getString('MAIL_FROM', $OR->getSiteid()), OptionsPeer::getString('MAIL_SECRETARIA', $OR->getSiteid()), "RESERVA " . $OR->getCodi() . " REBUTJADA", "Les condicions per a la reserva amb codi " . $OR->getCodi() . " organitzada per " . $OR->getOrganitzadors() . " han estat <b>REBUTJADES</b>. <br /> Per poder accedir-hi podeu clicar el següent <a href=\"http://www.casadecultura.cat/gestio/gReserves/accio/E/IDR/" . $OR->getReservaespaiid() . "\">enllaç</a> havent entrat prèviament a la intranet."); $this->redirect('@hospici_llista_reserves?estat=RESERVA_ANULADA'); } else { $this->redirect('@hospici_llista_reserves?estat=ERROR_JA_CONTESTAT'); } } else { $this->redirect('@hospici_llista_reserves?estat=ERROR_TECNIC'); } UsuarisPeer::addSite($OR->getUsuarisUsuariid(), $OR->getSiteid()); break; default: break; } }
/** * @return array( status , OER ) * @return -1 (OH incorrecte) * @return -2 (OA incorrecte) * @return -3 (OEP incorrecte) * @return -4 (Repe) * @return -5 (Exhaurides) * @return -6 (Error TPV) * @return -7 (Es volen comprar 0 entrades) * @return 1 (Compra metàl·lic o codi de barres OK) * @return 2 (Reserva d'entrada OK) * @return 3 (Pagament amb TPV) * @return 4 (En llista d'espera) * @return 5 (Pagament amb domiciliació) || Aquest encara s'ha d'aplicar correctament. * */ public static function setCompraEntrada($OER) { $IDH = $OER->getEntradesPreusHorariId(); $IDU = $OER->getUsuariId(); $NEntrades = $OER->getQuantitat(); $Descompte = $OER->getDescompte(); $TPagament = $OER->getTipusPagament(); //Paràmetres que retornaré després de la compra d'una entrada. $RET = array('status' => 0, 'OER' => null); $OH = HorarisPeer::retrieveByPK($IDH); //Comprovem que existeixi l'horari if (!$OH instanceof Horaris) { $RET = array('status' => -1, 'OER' => null); //Horari OK. } else { $IDA = $OH->getActivitatsActivitatid(); $OA = ActivitatsPeer::retrieveByPK($IDA); //Comprovem que existeixi l'activitat if (!$OA instanceof Activitats) { $RET = array('status' => -2, 'OER' => null); //Activitat OK. } else { //Carrego l'entrada i el preu $OEP = EntradesPreusPeer::retrieveByPK($IDH); //No s'ha trobat el preu per aquesta activitat i horari. if (!$OEP instanceof EntradesPreus) { $RET = array('status' => -3, 'OER' => null); //HORARI_INEXISTENT } else { //Comprovem que el nombre d'entrades no sigui 0 o un valor extrany if (!($NEntrades >= 0)) { $RET = array('status' => -7, 'OER' => null); //Número d'entrades incorrecte } else { //Tenim un horari carregat i una activitat. $idS = $OH->getSiteid(); //Aquest no el farem servir perquè acceptem que les entrades siguin repetides pels usuaris. $HaComprat = 0; //EntradesReservaPeer::ExisteixenEntradesComprades($IDU, $IDH); $PlacesLliures = EntradesReservaPeer::countEntradesActivitatConf($IDH); //Comprovem si l'entrada està repetida if ($HaComprat) { $RET = array('status' => -4, 'OER' => null); //ENTRADA_REPE //No té cap entrada comprada } else { //Mirem si queden places tenint en cmopte que no hi ha llista d'espera. if ($PlacesLliures - $NEntrades < 0 && $TPagament != TipusPeer::PAGAMENT_LLISTA_ESPERA) { return array('status' => -5, 'OER' => null); //NO_QUEDEN_PROU_ENTRADES i no hi ha llista d'espera //Tot OK. Passem al tipus de pagament. } else { //Generem la nova compra o reserva //$OER = EntradesReservaPeer::initialize( $idS , '' , 0 , $IDH , $IDU , $NEntrades , $Descompte , $TPagament )->getObject(); //Marquem el preu $OER->setPagat(DescomptesPeer::getPreuAmbDescompte($OEP->getPreu(), $Descompte)); $OER->setData(date('Y-m-d H:i', time())); //Mirem el tipus de pagament i deixem l'estat oportú. if ($TPagament == TipusPeer::PAGAMENT_METALIC || $TPagament == TipusPeer::PAGAMENT_CODI_BARRES) { $OER->setEstat(EntradesReservaPeer::ESTAT_ENTRADA_RESERVADA); $OER->save(); return array('status' => 1, 'OER' => $OER); } elseif ($TPagament == TipusPeer::PAGAMENT_RESERVA) { $OER->setPagat(0); $OER->setEstat(EntradesReservaPeer::ESTAT_ENTRADA_RESERVADA); $OER->save(); return array('status' => 2, 'OER' => $OER); } elseif ($TPagament == TipusPeer::PAGAMENT_TARGETA) { $OER->setEstat(EntradesReservaPeer::ESTAT_ENTRADA_EN_PROCES); $OER->save(); return array('status' => 3, 'OER' => $OER); } elseif ($TPagament == TipusPeer::PAGAMENT_LLISTA_ESPERA) { $OER->setPagat(0); $OER->setEstat(EntradesReservaPeer::ESTAT_ENTRADA_EN_ESPERA); $OER->save(); return array('status' => 4, 'OER' => $OER); } elseif ($TPagament == TipusPeer::PAGAMENT_DOMICILIACIO) { $OER->setEstat(EntradesReservaPeer::ESTAT_ENTRADA_RESERVADA); $OER->save(); return array('status' => 5, 'OER' => $OER); } UsuarisPeer::addSite($IDU, $idS); } } } } } } return $RET; }