public function crearTablaCatalogo(OrigenDatos $origenDato, array $datos) { //Recuperar la información para construir la tabla $em = $this->getEntityManager(); $nombre_tabla = $origenDato->getNombreCatalogo(); $campos = $origenDato->getCampos(); //Verificar si existe la tabla $sql = "CREATE TABLE IF NOT EXISTS {$nombre_tabla} ("; foreach ($campos as $campo) { $sql .= $campo->getNombre() . " " . $campo->getTipoCampo()->getCodigo(); if ($campo->getSignificado()->getCodigo() == 'pk') { $sql .= ' PRIMARY KEY '; $pk = $campo->getNombre(); } $sql .= ', '; } $sql = trim($sql, ', ') . '); '; //Crear tabla temporal para hacer un puente y validar antes de subir al catálogo $nombre_temp = $nombre_tabla . time(); $sql .= ' SELECT * INTO TEMP ' . $nombre_temp . ' FROM ' . $nombre_tabla . ' LIMIT 0;'; $nombre_campos = implode(", ", array_keys($datos[0])); $sql .= "\n INSERT INTO {$nombre_temp}({$nombre_campos}) VALUES "; foreach ($datos as $fila) { $sql .= "('" . implode("','", $fila) . "'), "; } $sql = trim($sql, ', '); // Si tiene llave primaria if ($pk != '') { //Insertar las que no están $sql .= "; INSERT INTO {$nombre_tabla} SELECT * FROM {$nombre_temp} WHERE {$pk} NOT IN (SELECT {$pk} FROM {$nombre_tabla})"; //Actualizar las que estaban $sql .= "; UPDATE {$nombre_tabla} SET"; foreach (array_keys($datos[0]) as $campo) { $sql .= " {$campo} = {$nombre_temp}.{$campo}, "; } $sql = trim($sql, ', '); $sql .= " FROM {$nombre_temp} WHERE {$nombre_tabla}.{$pk} IN (SELECT {$pk} FROM {$nombre_tabla}) \n AND {$nombre_tabla}.{$pk} = {$nombre_temp}.{$pk}"; } try { $em->getConnection()->exec($sql); } catch (\PDOException $e) { return $e->getMessages(); } return true; }
public function mergeSaveAction() { $req = $this->getRequest(); $opciones = $req->get('fusionar'); $em = $this->getDoctrine()->getEntityManager(); //Crear el origen $origenDato = new OrigenDatos(); $origenDato->setNombre($req->get('nombre')); $origenDato->setDescripcion($req->get('descripcion')); $origenDato->setEsFusionado(true); foreach ($req->get('origenes_fusionados') as $k => $origen_id) { $origenFu = $em->find('IndicadoresBundle:OrigenDatos', $origen_id); $origenDato->addFusione($origenFu); } $campos_fusionados = ''; foreach ($req->get('campos_fusionar') as $campo) { $obj = json_decode($campo); $campos_fusionados .= "'" . $obj->nombre . "',"; } $campos_fusionados = trim($campos_fusionados, ','); $origenDato->setCamposFusionados($campos_fusionados); $em->persist($origenDato); $em->flush(); $this->get('session')->setFlash('sonata_flash_success', $origenDato->getNombre() . ' ' . $this->get('translator')->trans('fusion.origen_fusionado_creado')); return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters())); }
public function getUltimaActualizacion(OrigenDatos $origenDato) { if ($origenDato->getEsFusionado()) { $sql = 'SELECT MAX(ultima_lectura) as ultima_lectura FROM fila_origen_dato WHERE id_origen_dato IN (SELECT id_origen_dato_fusionado FROM origen_datos_fusiones WHERE id_origen_dato = :id_origen_dato)'; } else { $sql = 'SELECT MAX(ultima_lectura) as ultima_lectura FROM fila_origen_dato WHERE id_origen_dato = :id_origen_dato'; } $sth = $this->_em->getConnection()->prepare($sql); $sth->execute(array(':id_origen_dato' => $id = $origenDato->getId())); $act = $sth->fetch(\PDO::FETCH_ASSOC); return $act['ultima_lectura']; }
/** * {@inheritDoc} */ public function getAreaCosteo() { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getAreaCosteo', array()); return parent::getAreaCosteo(); }
/** * @Route("/origen_dato/get_campos/{id}", name="origen_dato_get_campos", options={"expose"=true}) */ public function getCamposAction(OrigenDatos $origen) { $resp = '<h6>' . $this->get('translator')->trans('_campos_utilizables_en_campos_calculados_') . '</h6> <UL class="campos_disponibles">'; if ($origen->getEsFusionado() or $origen->getEsPivote()) { $campos = explode(',', str_replace(array(' ', "'"), '', $origen->getCamposFusionados())); foreach ($campos as $campo) { $resp .= '<LI><A href="javascript:funcion()">{' . $campo . '}</A></LI>'; } } else { $campos = $origen->getCampos(); foreach ($campos as $campo) { if ($campo->getSignificado()) { $resp .= '<LI><A href="javascript:funcion()">{' . $campo->getSignificado()->getCodigo() . '}</A></LI>'; } } } return new Response($resp . '</UL>'); }
public function getUltimaActualizacion(OrigenDatos $origenDato) { $sql = 'SELECT MAX(ultima_lectura) as ultima_lectura FROM fila_origen_dato WHERE id_origen_dato = :id_origen_dato'; $sth = $this->_em->getConnection()->prepare($sql); $sth->execute(array(':id_origen_dato' => $id = $origenDato->getId())); $respuesta = $sth->fetch(\PDO::FETCH_ASSOC); return $respuesta['ultima_lectura']; }