/** * Procesar formulario de nuevo encuestado * * @param $request sfWebRequest */ public function executeProcesarForm(sfWebRequest $request) { $this->forward404Unless($request->isMethod('post')); // Obtener datos base sin bloques "Sancion vigente" $manyToMany = array(); $params = $request->getPostParameters(); foreach ($params as $param => $value) { if (is_array($value)) { $manyToMany[$param] = $value; unset($params[$param]); } } // Agregar otros parametros $params['id_user_responsable_principal'] = $this->getUser()->getGuardUser()->getId(); $params['created_at'] = $params['updated_at'] = '"NOW()"'; // Guardar $sql = DatabaseUtils::prepareInsertQuery('encuestado', $params); $query = $this->pdo->prepare($sql); if (!$query->execute($params)) { return sfView::ERROR; } // Obtener id de encuestado recien añadido $id = $this->pdo->lastInsertId(); // Obtener sanciones vigentes como objetos $count = count($request->getParameter('select_sistema_atencion')); $sancionesVigentes = array(); for ($i = 0; $i < $count; $i++) { foreach ($manyToMany as $key => $value) { $sancionesVigentes[$i][$key] = $value[$i]; } $sancionesVigentes[$i]['id_encuestado'] = $id; } // Guardar las sanciones vigentes; transaccion para mejor rendimiento try { $this->pdo->beginTransaction(); foreach ($sancionesVigentes as $sancion) { $sql = DatabaseUtils::prepareInsertQuery('encuestado_sanciones', $sancion); $query = $this->pdo->prepare($sql); $query->execute($sancion); } $this->pdo->commit(); } catch (Exception $e) { $this->pdo->rollBack(); return sfView::ERROR; } $this->username = $this->getUser()->getUsername(); //sanciones anteriores // Obtener sanciones vigentes como objetos $id2 = $this->pdo->lastInsertId(); $count2 = count($request->getParameter('input_ruk_2')); $sancionesAnteriores = array(); for ($j = 0; $j < $count2; $j++) { foreach ($manyToMany as $key => $value) { $sancionesAnteriores[$j][$key] = $value[$j]; } $sancionesAnteriores[$j]['id_encuestado'] = $id; } // Guardar las sanciones vigentes; transaccion para mejor rendimiento try { $this->pdo->beginTransaction(); foreach ($ssancionesAnteriores as $sancionant) { $sql = DatabaseUtils::prepareInsertQuery('encuestado_canteriores', $sancionant); $query = $this->pdo->prepare($sql); $query->execute($sancionant); } $this->pdo->commit(); } catch (Exception $e) { $this->pdo->rollBack(); return sfView::ERROR; } $this->username = $this->getUser()->getUsername(); // }