public function executeConfirmation_group(sfWebRequest $request) { $user = $this->getUser()->getAttribute(sfConfig::get('app_session_current_user'), null); $email = $request->getParameter('email'); $token = $request->getParameter('token'); $grupo_id = $request->getParameter('group_id'); if ($user != null) { $criterio_busqueda = new Criteria(); $criterio_busqueda->add(SolicitudGrupoTrabajoScPeer::EMAIL, '%' . $email . '%', Criteria::LIKE); $criterio_busqueda->add(SolicitudGrupoTrabajoScPeer::TOKEN, $token); $criterio_busqueda->add(SolicitudGrupoTrabajoScPeer::GRUPO_ID, $grupo_id); $solicitud = SolicitudGrupoTrabajoScPeer::doSelectOne($criterio_busqueda); //si no encuentra la solicitud con el token correcto if (is_object($solicitud)) { //en esta parte verifico si el token ya vencio $respuesta = json_decode($solicitud->getFlag()); if ($respuesta->{'estado'}) { $this->redirect('@list_working_groups'); } else { return sfView::ERROR; } } else { return sfView::ERROR; } } else { $this->redirect('@homepage'); } }
public function executeAccept_group(sfWebRequest $request) { $invitacion_id = $request->getParameter('invitacion'); $token_seguridad = $request->getParameter('token'); $email_token = $request->getParameter('email'); $user_token = $request->getParameter('account'); /*vamos a aceptar permanecer a un grupo aca realizo validacion en 5 capas 1 reviso que la session de usuario exista 2 que la el valor obtenido en la consulta sea un object(que la consulta sql resulte con el registro solicitado) 3 el token de la solicitud sea correcto 4 el email sea correcto 5 que el usuario id sea correcto (este es id del usuario que envio la solicitud en md5) */ $user = $this->getUser()->getAttribute(sfConfig::get('app_session_current_user'), null); if ($user != null) { $solicitud = SolicitudGrupoTrabajoScPeer::retrieveByPK($invitacion_id); if (is_object($solicitud)) { if ($token_seguridad == $solicitud->getToken()) { if ($email_token == md5($user->getEmail())) { if ($user_token == md5($solicitud->getUserId())) { $solicitud->setRespondido(1); $solicitud->setFlag(json_encode(array("estado" => false, "respuesta" => true))); $solicitud->setUpdateAt(time()); $solicitud->save(); //falta cambiar los indicadores que esten relacionados al grupo /*vamos a obtener todos los arboles que esten relacionados con el grupo depues vamos a obtener todos los indicadores donde el usuario se encuentre asignado y vamos a aumetar el ID en cada registro que encontremos*/ //admemas vamos hacer lo mismo en las asignaciones para tener un mejor indexacion //a la hora de hacer las consultas. $criterio_tree = new Criteria(); $criterio_tree->add(TreeScPeer::GRUPO_TRABAJO_ID, $solicitud->getGrupoId()); $list_tree = TreeScPeer::doSelect($criterio_tree); foreach ($list_tree as $row) { $con = Propel::getConnection(); $criterio_busqueda = new Criteria(); $criterio_busqueda->add(IndicatorsScPeer::EMAIL_RESPONSABLE, '%' . $solicitud->getEmail() . '%', Criteria::LIKE); $criterio_busqueda->add(IndicatorsScPeer::TREE_ID, $row->getId()); $criterio_update = new Criteria(); $criterio_update->add(IndicatorsScPeer::RESPONSABLE_ID, $user->getId()); BasePeer::doUpdate($criterio_busqueda, $criterio_update, $con); $con = Propel::close(); } $con = Propel::getConnection(); $criterio_asignaciones = new Criteria(); $criterio_asignaciones->add(AsignacionScPeer::GRUPO_ID, $solicitud->getGrupoId()); $criterio_asignaciones->add(AsignacionScPeer::EMAIL, '%' . $user->getEmail() . '%', Criteria::LIKE); $criterio_update = new Criteria(); $criterio_update->add(AsignacionScPeer::USER_ID, $user->getId()); BasePeer::doUpdate($criterio_asignaciones, $criterio_update, $con); $con = Propel::close(); $grupo_trabajo = new DetalleGrupoTrabajoSc(); $grupo_trabajo->setEmail($user->getEmail()); $grupo_trabajo->setUserId($user->getId()); $grupo_trabajo->setGrupoId($solicitud->getGrupoId()); $grupo_trabajo->save(); $this->redirect('@list_working_groups'); } else { return sfView::ERROR; } } else { return sfView::ERROR; } } else { return sfView::ERROR; } } else { return sfView::ERROR; } } else { return sfView::ERROR; } }
/** * If this collection has already been initialized with * an identical criteria, it returns the collection. * Otherwise if this UserSc is new, it will return * an empty collection; or if this UserSc has previously * been saved, it will retrieve related SolicitudGrupoTrabajoScs from storage. * * This method is protected by default in order to keep the public * api reasonable. You can provide public methods for those you * actually need in UserSc. */ public function getSolicitudGrupoTrabajoScsJoinGrupoTrabajoSc($criteria = null, $con = null, $join_behavior = Criteria::LEFT_JOIN) { if ($criteria === null) { $criteria = new Criteria(UserScPeer::DATABASE_NAME); } elseif ($criteria instanceof Criteria) { $criteria = clone $criteria; } if ($this->collSolicitudGrupoTrabajoScs === null) { if ($this->isNew()) { $this->collSolicitudGrupoTrabajoScs = array(); } else { $criteria->add(SolicitudGrupoTrabajoScPeer::USER_ID, $this->id); $this->collSolicitudGrupoTrabajoScs = SolicitudGrupoTrabajoScPeer::doSelectJoinGrupoTrabajoSc($criteria, $con, $join_behavior); } } else { // the following code is to determine if a new query is // called for. If the criteria is the same as the last // one, just return the collection. $criteria->add(SolicitudGrupoTrabajoScPeer::USER_ID, $this->id); if (!isset($this->lastSolicitudGrupoTrabajoScCriteria) || !$this->lastSolicitudGrupoTrabajoScCriteria->equals($criteria)) { $this->collSolicitudGrupoTrabajoScs = SolicitudGrupoTrabajoScPeer::doSelectJoinGrupoTrabajoSc($criteria, $con, $join_behavior); } } $this->lastSolicitudGrupoTrabajoScCriteria = $criteria; return $this->collSolicitudGrupoTrabajoScs; }
/** * Populates the object using an array. * * This is particularly useful when populating an object from one of the * request arrays (e.g. $_POST). This method goes through the column * names, checking to see whether a matching key exists in populated * array. If so the setByName() method is called for that column. * * You can specify the key type of the array by additionally passing one * of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME, * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM. * The default key type is the column's phpname (e.g. 'AuthorId') * * @param array $arr An array to populate the object from. * @param string $keyType The type of keys the array uses. * @return void */ public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME) { $keys = SolicitudGrupoTrabajoScPeer::getFieldNames($keyType); if (array_key_exists($keys[0], $arr)) { $this->setId($arr[$keys[0]]); } if (array_key_exists($keys[1], $arr)) { $this->setGrupoId($arr[$keys[1]]); } if (array_key_exists($keys[2], $arr)) { $this->setEmail($arr[$keys[2]]); } if (array_key_exists($keys[3], $arr)) { $this->setCreateAt($arr[$keys[3]]); } if (array_key_exists($keys[4], $arr)) { $this->setUpdateAt($arr[$keys[4]]); } if (array_key_exists($keys[5], $arr)) { $this->setUserId($arr[$keys[5]]); } if (array_key_exists($keys[6], $arr)) { $this->setToken($arr[$keys[6]]); } if (array_key_exists($keys[7], $arr)) { $this->setFlag($arr[$keys[7]]); } if (array_key_exists($keys[8], $arr)) { $this->setRespondido($arr[$keys[8]]); } }
private function evaluar_solicitud($email, $grupo, $userBean) { //solo puede enviar otra solicitud a la misma persona si //-es otra solicitud de otro grupo //-si el flag es 2 == Solicitud vencida $criterio_solicitud = new Criteria(); $criterio_solicitud->add(SolicitudGrupoTrabajoScPeer::GRUPO_ID, $grupo); $criterio_solicitud->add(SolicitudGrupoTrabajoScPeer::EMAIL, '%' . $email . '%', Criteria::LIKE); //FLAG,'1' == activa $criterio_solicitud->add(SolicitudGrupoTrabajoScPeer::FLAG, '%estado":true%', Criteria::LIKE); $cantidad_registros = SolicitudGrupoTrabajoScPeer::doCount($criterio_solicitud); try { $con = Propel::getConnection(); $con->beginTransaction(); if ($cantidad_registros > 0) { //no le envio solicitud $obj = array("success" => true, "message" => "no le envio solicitud"); $con = Propel::close(); return $obj; } else { $solicitudBean = new SolicitudGrupoTrabajoSc(); $solicitudBean->setGrupoId($grupo); $solicitudBean->setEmail($email); $solicitudBean->setCreateAt(time()); $solicitudBean->setUpdateAt(time()); $solicitudBean->setUserId($userBean->getId()); //formar el token $token = md5($grupo . $email . rand($userBean->getId(), 1000)); $solicitudBean->setToken($token); $solicitudBean->setFlag(json_encode(array("estado" => true, "respuesta" => false))); $solicitudBean->setRespondido(0); $solicitudBean->save(); try { $message = $this->getMailer()->compose(); $message->setSubject('Te invintaron a unirte a practil-scoredcard'); $message->setTo($email); $message->setFrom(array('*****@*****.**' => 'Practil')); $html = $this->getPartial('send_email/send_invitation_group', array('uri' => sfConfig::get('app_url_scorecard') . 'confirmation/confirmation_group?token=' . $token . '&email=' . $email . '&group_id=' . $grupo)); $message->setBody($html, 'text/html'); $this->getMailer()->send($message); $con->commit(); $con = Propel::close(); $obj = array("success" => true, "message" => "le envie solicitud"); return $obj; } catch (Exception $e) { $con->rollBack(); $con = Propel::close(); $obj = array("success" => false, "message" => $e->getMessage()); return $obj; } } } catch (Exception $e) { $con->rollBack(); $con = Propel::close(); $obj = array("success" => false, "message" => "se general"); return $obj; } }
/** * Retrieve multiple objects by pkey. * * @param array $pks List of primary keys * @param PropelPDO $con the connection to use * @throws PropelException Any exceptions caught during processing will be * rethrown wrapped into a PropelException. */ public static function retrieveByPKs($pks, PropelPDO $con = null) { if ($con === null) { $con = Propel::getConnection(SolicitudGrupoTrabajoScPeer::DATABASE_NAME, Propel::CONNECTION_READ); } $objs = null; if (empty($pks)) { $objs = array(); } else { $criteria = new Criteria(SolicitudGrupoTrabajoScPeer::DATABASE_NAME); $criteria->add(SolicitudGrupoTrabajoScPeer::ID, $pks, Criteria::IN); $objs = SolicitudGrupoTrabajoScPeer::doSelect($criteria, $con); } return $objs; }