Exemplo n.º 1
0
 /**
  * Consultar la tabla relacional y obtener el uuid y nombre de campo
  * para armar los <option> a mostrar en el campo <select>
  *
  * @return array
  */
 private function buscar_relacion_campo($tabla_relacional = NULL)
 {
     if ($tabla_relacional == NULL) {
         return false;
     }
     /**
      * Al es singular de estas tablas no se les quita la terminacion "es"
      * sino solamnete la letra "s".
      */
     $nombre_tablas_singular_excepcion = array("clientes", "proy_proyectos");
     //Verificar si el nombre de la tabla contiene el caracter "_" raya abajo.
     if (preg_match("/(\\[\\[_[^]]*\\]\\])/im", $tabla_relacional) || preg_match("/_/im", $tabla_relacional)) {
         $tablaArr = explode('_', $tabla_relacional, 2);
         //Poner en singualr el nombre de la tabla, para poder armar el campo uuid de la tabla.
         $uuid_tabla = !empty($tablaArr[1]) && is_string($tablaArr[1]) ? preg_match('/es$/', $tablaArr[1]) && !in_array($tablaArr[1], $nombre_tablas_singular_excepcion) ? preg_replace('/es$/', "", $tablaArr[1]) : preg_replace('/s$/', "", $tablaArr[1]) : "";
     } else {
         //Poner en singualr el nombre de la tabla, para poder armar el campo uuid de la tabla.
         $uuid_tabla = preg_match('/es$/', $tabla_relacional) ? preg_replace('/es$/', "", $tabla_relacional) : preg_replace('/s$/', "", $tabla_relacional);
     }
     //Campos y clausula
     if ($tabla_relacional == "proy_proyectos_categoria") {
         //Caso Especial join en  multiples Tablas
         $uuid_categoria_usuario = CRM_Controller::$uuid_categoria_usuario;
         $fields = array("HEX(proy.uuid_proyecto) AS uuid", "proy.nombre");
         if (CRM_Controller::$categoria_usuario_key == 'admin') {
             return self::$ci->db->select($fields)->distinct()->from('proy_proyectos as proy')->order_by('proy.nombre', 'ASC')->get()->result_array();
         } else {
             $clause = array("proy.uuid_categoria  = UNHEX('{$uuid_categoria_usuario}')" => NULL);
             $result = self::$ci->db->select($fields)->distinct()->from('proy_proyectos as proy')->where($clause)->order_by('proy.nombre', 'ASC')->get()->result_array();
             return $result;
         }
     } else {
         if ($tabla_relacional == "rpo_propiedades_categoria" || $tabla_relacional == "rpo_propiedades") {
             $tabla_relacional = "rpo_propiedades";
             $uuid_categoria = CRM_Controller::$uuid_categoria_usuario;
             $fields = array("HEX(prop.uuid_propiedad) AS uuid", "prop.nombre");
             $clause = array("procat.valor" => 'disponible', "prop.nombre <> ''" => NULL);
             if (CRM_Controller::$categoria_usuario_key != "admin") {
                 $clause["prop.uuid_categoria = '" . $uuid_categoria . "'"] = NULL;
             }
             return self::$ci->db->select($fields)->distinct()->from('rpo_propiedades AS prop')->join('rpo_propiedades_cat AS procat', 'procat.id_cat = prop.id_estado_propiedad', 'LEFT')->where($clause)->order_by('prop.nombre', 'ASC')->get()->result_array();
         } else {
             if ($tabla_relacional == "usuarios") {
                 // Array con los uuid de usuarios
                 // que el usario actual puede ver.
                 $ver_usuarios = @CRM_Controller::andrea_ACL();
                 $fields = array("HEX(uuid_{$uuid_tabla}) AS uuid", "CONCAT_WS(' ', IF(nombre != '', nombre, ''), IF(apellido != '', apellido, '')) AS nombre");
                 $clause = array("nombre <> ''" => NULL);
                 self::$ci->db->select($fields)->distinct()->from('usuarios')->where($clause)->order_by('nombre', 'ASC');
                 if (CRM_Controller::$categoria_usuario_key != 'admin' && !empty($ver_usuarios["uuid_usuario"])) {
                     self::$ci->db->where_in("HEX(uuid_usuario)", $ver_usuarios["uuid_usuario"]);
                 }
                 return self::$ci->db->get()->result_array();
             } else {
                 if ($tabla_relacional == "proy_proyectos" || $tabla_relacional == "proy_tipo_transaccion") {
                     $fields = array("HEX(uuid_{$uuid_tabla}) AS uuid", "nombre");
                     $clause = array("nombre <> ''" => NULL);
                 } else {
                     if ($tabla_relacional == "proy_tipo_transaccion") {
                         $fields = array("HEX(uuid_tipo_transaccion) AS uuid", "nombre");
                         $clause = array("nombre <> ''" => NULL);
                     } else {
                         if ($tabla_relacional == "cl_clientes_sociedades") {
                             $fields = array("HEX(uuid_sociedad) AS uuid", "nombre_comercial AS nombre");
                             $clause = array("nombre_comercial <> ''" => NULL);
                         } else {
                             if ($tabla_relacional == "usuarios_categoria") {
                                 $fields = array("HEX(uuid_{$uuid_tabla}) AS uuid", "nombre");
                                 $clause = array("nombre <> ''" => NULL, "key <> 'admin'" => NULL);
                             } else {
                                 if ($tabla_relacional == "act_tipo_actividades") {
                                     $fields = array("HEX(uuid_tipo_actividad) AS uuid", "nombre", "icono");
                                     $clause = array("nombre <> ''" => NULL);
                                 } else {
                                     if ($tabla_relacional == "agt_agentes") {
                                         $fields = array("HEX(uuid_agente) AS uuid", "CONCAT_WS(' ', IF(nombre != '', nombre, ''), IF(apellido != '', apellido, '')) AS nombre");
                                         $clause = array("nombre <> ''" => NULL);
                                     } elseif ($tabla_relacional == 'opp_oportunidades') {
                                         $fields = array("HEX(opp.uuid_oportunidad) AS uuid", "opp.nombre AS nombre");
                                         $clause = array("nombre <> ''" => NULL, "valor NOT IN('vendido', 'venta_perdida')" => NULL);
                                         if (CRM_Controller::$categoria_usuario_key != 'admin') {
                                             $uuid_usuarios = @CRM_Controller::andrea_ACL();
                                         }
                                         self::$ci->db->select($fields);
                                         self::$ci->db->distinct();
                                         self::$ci->db->from('opp_oportunidades AS opp');
                                         self::$ci->db->join('opp_oportunidades_cat AS cat', 'cat.id_cat = opp.id_etapa_venta', 'LEFT');
                                         self::$ci->db->where($clause);
                                         if (CRM_Controller::$categoria_usuario_key != 'admin' && !empty($ver_usuarios["uuid_usuario"])) {
                                             self::$ci->db->where_in("HEX(id_asignado)", $ver_usuarios["uuid_usuario"]);
                                         }
                                         $query = self::$ci->db->get();
                                         return $query->result_array();
                                     } else {
                                         $fields = array("HEX(uuid_{$uuid_tabla}) AS uuid", "CONCAT_WS(' ', IF(nombre != '', nombre, ''), IF(apellido != '', apellido, '')) AS nombre");
                                         $clause = array("nombre <> ''" => NULL);
                                     }
                                 }
                             }
                         }
                     }
                 }
                 //Si la tabla relacional es la de usuarios
                 //no mostrar el usuario 1
                 /*if($tabla_relacional == "usuarios"){
                 		 $clause["id_usuario <> 1"] = NULL;
                 		}*/
                 //Query
                 return self::$ci->db->select($fields)->distinct()->from($tabla_relacional)->where($clause)->order_by('nombre', 'ASC')->get()->result_array();
             }
         }
     }
 }
 /**
  * Retorna la cantidad de propiedad disponible
  * segun tipo de transaccion "Alquiler/Venta".
  *
  * @author jluispinilla
  * @param string $tipo_transaccion
  */
 function comp__seleccionar_propiedades_disponibles($tipo_transaccion = NULL)
 {
     $tipo_transaccion = empty($tipo_transaccion) ? $this->input->post('tipo_transaccion', true) : $tipo_transaccion;
     //busqueda por rango de fecha
     $fecha_inicio = !empty($this->input->post('fecha_inicio', true)) ? $this->input->post('fecha_inicio', true) : date("Y-m-d", strtotime("-1 months"));
     $fecha_fin = !empty($this->input->post('fecha_fin', true)) ? $this->input->post('fecha_fin', true) : date('Y-m-d');
     $uuid_usuario = $this->input->post('uuid_usuario', true);
     if (empty($tipo_transaccion)) {
         return false;
     }
     $fields = array("COUNT(opp.uuid_oportunidad) AS total_disponible");
     /**
      * Permiso Default: ver las asignadas o las que ha creado
      */
     $clause = array("ocat.etiqueta <> 'Ganado'" => NULL, "procat.etiqueta <> 'No Disponible'" => NULL, "ptt.nombre LIKE '%{$tipo_transaccion}%'" => NULL);
     /**
      * Array con los uuid de usuarios
      * que el usario actual puede ver.
      */
     $ver_usuarios = @CRM_Controller::andrea_ACL();
     $this->db->select($fields)->distinct()->from('opp_oportunidades AS opp')->join('cl_clientes AS cl', 'cl.uuid_cliente = opp.uuid_cliente', 'LEFT')->join('cp_clientes_potenciales AS clp', 'clp.uuid_cliente_potencial = opp.uuid_cliente_potencial', 'LEFT')->join('cl_cliente_sociedades_contactos AS clcon', 'clcon.uuid_cliente = cl.uuid_cliente', 'LEFT')->join('con_contactos AS con', 'con.uuid_contacto = clcon.uuid_contacto', 'LEFT')->join('opp_oportunidades_cat AS ocat', 'ocat.id_cat = opp.id_etapa_venta', 'LEFT')->join('usuarios AS usr1', 'usr1.uuid_usuario = opp.id_asignado', 'LEFT')->join('usuarios AS usr2', 'usr2.uuid_usuario = opp.creado_por', 'LEFT')->join('cl_clientes_cat AS ccat', 'ccat.id_cat = cl.id_tipo_cliente', 'LEFT')->join('rpo_propiedades AS prop', 'prop.uuid_propiedad = opp.uuid_propiedad', 'LEFT')->join('rpo_propiedades_cat AS procat', 'procat.id_cat = prop.id_estado_propiedad', 'LEFT')->join('proy_tipo_transaccion AS ptt', 'ptt.uuid_tipo_transaccion = opp.uuid_tipo_transaccion', 'LEFT');
     /**
      * verificar array $ver_usuarios
      */
     if (!empty($ver_usuarios["uuid_usuario"])) {
         $usuarios = $ver_usuarios["uuid_usuario"];
         $usuarios = !empty($usuarios) ? implode(", ", array_map(function ($usuarios) {
             return "'" . $usuarios . "'";
         }, $usuarios)) : "";
         $clause["HEX(opp.id_asignado) IN(" . $usuarios . ")"] = NULL;
     }
     //Si existe busqueda por el usuario
     //No aplicar condicion de subordinado
     if (!empty($uuid_usuario)) {
         $clause = array("ocat.etiqueta <> 'Ganado'" => NULL, "ptt.nombre LIKE '%{$tipo_transaccion}%'" => NULL, "(HEX(opp.id_asignado) IN('" . $uuid_usuario . "') || HEX(opp.creado_por) IN('" . $uuid_usuario . "'))" => NULL);
     }
     //Filtrar por rango de fecha
     if (!empty($fecha_inicio)) {
         $fecha_inicio = date("Y-m-d H:i:s", strtotime($fecha_inicio));
         $clause["prop.fecha_creacion >="] = $fecha_inicio;
     }
     if (!empty($fecha_fin)) {
         $fecha_fin = date("Y-m-d 23:59:59", strtotime($fecha_fin));
         $clause["prop.fecha_creacion <="] = $fecha_fin;
     }
     $this->db->where($clause);
     return $this->db->get()->result_array();
 }
 /**
  * Seleccionar los ultimas acciones de los modulos
  * de (Propiedad, Actibidad y Oportunidades)
  *
  *
  */
 function seleccionar_historial_modulos()
 {
     $notificaciones = array();
     //datos provienen de filtro busqueda
     $fecha_inicio = $this->input->post('fecha_inicio', true);
     $fecha_fin = $this->input->post('fecha_fin', true);
     $uuid_usuario = $this->input->post('uuid_usuario', true);
     /**
      * Array con los uuid de usuarios
      * que el usario actual puede ver.
      */
     $ver_usuarios = @CRM_Controller::andrea_ACL();
     //-------------------------------
     // Notificaciones Oportunidades
     //-------------------------------
     //Permiso Default: ver las asignadas o las que ha creado
     $oportunidad_clause = "opp.nombre <> ''";
     /**
      * verificar array $ver_usuarios
      */
     //if(!empty($ver_usuarios["uuid_usuario"]) && CRM_Controller::$categoria_usuario_key != "admin"){
     if (!empty($ver_usuarios["uuid_usuario"])) {
         $usuarios = $ver_usuarios["uuid_usuario"];
         $usuarios = !empty($usuarios) ? implode(", ", array_map(function ($usuarios) {
             return "'" . $usuarios . "'";
         }, $usuarios)) : "";
         $oportunidad_clause = "HEX(opp.id_asignado) IN(" . $usuarios . ")";
     }
     //Si existe busqueda por el usuario
     //No aplicar condicion de subordinado
     if (!empty($uuid_usuario)) {
         $oportunidad_clause = "(HEX(opp.id_asignado) IN('" . $uuid_usuario . "')";
     }
     //Colocar filtro por fecha
     if (!empty($fecha_inicio)) {
         $fecha_inicio = date("Y-m-d H:i:s", strtotime($fecha_inicio));
         $oportunidad_clause .= " AND opp.fecha_creacion >= '{$fecha_inicio}'";
     }
     if (!empty($fecha_fin)) {
         $fecha_fin = date("Y-m-d 23:59:59", strtotime($fecha_fin));
         $oportunidad_clause .= " AND opp.fecha_creacion <= '{$fecha_fin}'";
     }
     $sql_oportunidad = "SELECT DISTINCT HEX(opp.uuid_oportunidad) AS uuid, opp.nombre, 'oportunidad' AS 'modulo', opp.fecha_creacion AS fecha,\n\t\t\t\tCONCAT_WS(' ', IF(usr2.nombre != '', usr2.nombre, ''), IF(usr2.apellido != '', usr2.apellido, '')) AS nombre_usuario\n\t\t\t\tFROM (`opp_oportunidades` AS opp)\n\t\t\t\tLEFT JOIN `cl_clientes` AS cl ON `cl`.`uuid_cliente` = `opp`.`uuid_cliente`\n\t\t\t\tLEFT JOIN `cp_clientes_potenciales` AS clp ON `clp`.`uuid_cliente_potencial` = `opp`.`uuid_cliente_potencial`\n\t\t\t\tLEFT JOIN `cl_cliente_sociedades_contactos` AS clcon ON `clcon`.`uuid_cliente` = `cl`.`uuid_cliente`\n\t\t\t\tLEFT JOIN `con_contactos` AS con ON `con`.`uuid_contacto` = `clcon`.`uuid_contacto`\n\t\t\t\tLEFT JOIN `opp_oportunidades_cat` AS ocat ON `ocat`.`id_cat` = `opp`.`id_etapa_venta`\n\t\t\t\tLEFT JOIN `usuarios` AS usr1 ON `usr1`.`uuid_usuario` = `opp`.`id_asignado`\n\t\t\t\tLEFT JOIN `usuarios` AS usr2 ON `usr2`.`uuid_usuario` = `opp`.`creado_por`\n\t\t\t\tLEFT JOIN `cl_clientes_cat` AS ccat ON `ccat`.`id_cat` = `cl`.`id_tipo_cliente`\n\t\t\t\tLEFT JOIN `rpo_propiedades` AS prop ON `prop`.`uuid_propiedad` = `opp`.`uuid_propiedad`\n\t\t\t\tWHERE ocat.etiqueta NOT IN('Ganado','Perdido') AND {$oportunidad_clause}";
     //-------------------------------
     // Notificaciones de Actividades
     //-------------------------------
     $actividad_clause = "act.cancelado = 0 AND act.completada = 0 ";
     if (!empty($ver_usuarios["uuid_usuario"])) {
         $usuarios = $ver_usuarios["uuid_usuario"];
         $usuarios = !empty($usuarios) ? implode(", ", array_map(function ($usuarios) {
             return "'" . $usuarios . "'";
         }, $usuarios)) : "";
         $actividad_clause = "HEX(usr.uuid_usuario) IN(" . $usuarios . ")";
     }
     //Si existe busqueda por el usuario
     //No aplicar condicion de subordinado
     if (!empty($uuid_usuario)) {
         $actividad_clause = "(HEX(usr.uuid_usuario) IN('" . $uuid_usuario . "'))";
     }
     //Colocar filtro por fecha
     if (!empty($fecha_inicio)) {
         $fecha_inicio = date("Y-m-d H:i:s", strtotime($fecha_inicio));
         $actividad_clause .= " AND act.fecha_creacion >= '{$fecha_inicio}'";
     }
     if (!empty($fecha_fin)) {
         $fecha_fin = date("Y-m-d 23:59:59", strtotime($fecha_fin));
         $actividad_clause .= " AND act.fecha_creacion <= '{$fecha_fin}'";
     }
     $sql_actividad = "SELECT DISTINCT HEX(act.uuid_actividad) AS uuid, act.asunto AS nombre, 'actividad' AS 'modulo', act.fecha_creacion AS fecha,\n\t\t\t\t\t\tCONCAT_WS(' ', IF(usr.nombre != '', usr.nombre, ''), IF(usr.apellido != '', usr.apellido, '')) AS nombre_usuario\n\t\t\t\t\t\tFROM (`act_actividades` AS act)\n\t\t\t\t\t\tLEFT JOIN `act_tipo_actividades` AS tact ON `tact`.`uuid_tipo_actividad` = `act`.`uuid_tipo_actividad`\n\t\t\t\t\t\tLEFT JOIN `usuarios` AS usr ON `usr`.`uuid_usuario` = `act`.`uuid_asignado`\n\t\t\t\t\t\tLEFT JOIN `cl_clientes` AS cl ON `act`.`uuid_cliente` = `cl`.`uuid_cliente`\n\t\t\t\t\t\tLEFT JOIN `cl_clientes_sociedades` AS csoc ON `csoc`.`uuid_sociedad` = `act`.`uuid_sociedad`\n\t\t\t\t\t\tLEFT JOIN `con_contactos` AS con ON `con`.`uuid_contacto` = `act`.`uuid_contacto`\n\t\t\t\t\t\tLEFT JOIN `act_actividades_cat` AS acat ON `act`.`relacionado_con` = `acat`.`id_cat`\n\t\t\t\t\t\tWHERE {$actividad_clause}";
     //-------------------------------
     // Notificaciones de Propiedaes
     //-------------------------------
     /*if(CRM_Controller::$categoria_usuario_key == 'admin'){
     			$propiedades_clause = "rpo.nombre <> ''";
     		}else{*/
     //	$propiedades_clause = "HEX(rpo.uuid_categoria) = 'HEX(". CRM_Controller::$uuid_categoria_usuario .")'";
     //}
     //Colocar filtro por fecha
     if (!empty($fecha_inicio)) {
         $fecha_inicio = date("Y-m-d H:i:s", strtotime($fecha_inicio));
         $actividad_clause .= " AND rpo.fecha_creacion >= '{$fecha_inicio}'";
     }
     if (!empty($fecha_fin)) {
         $fecha_fin = date("Y-m-d 23:59:59", strtotime($fecha_fin));
         $actividad_clause .= " AND rpo.fecha_creacion <= '{$fecha_fin}'";
     }
     /*	$sql_propiedad = "SELECT DISTINCT HEX(`rpo`.`uuid_propiedad`) AS uuid, `rpo`.`nombre` AS nombre, 'propiedad' AS 'modulo', rpo.fecha_creacion AS fecha,
     			CONCAT_WS(' ', IF(usr.nombre != '', usr.nombre, ''), IF(usr.apellido != '', usr.apellido, '')) AS nombre_usuario
     			FROM (`rpo_propiedades` AS rpo)
     			LEFT JOIN `rpo_propiedad_proyecto` AS prop_proy ON `prop_proy`.`uuid_propiedad` = `rpo`.`uuid_propiedad`
     			LEFT JOIN `proy_proyectos` AS pry ON `pry`.`uuid_proyecto` = `prop_proy`.`uuid_proyecto`
     			LEFT JOIN `rpo_propiedades_cat` AS cat ON `cat`.`id_cat` = `rpo`.`id_tipo_propiedad`
     			LEFT JOIN `rpo_propiedades_cat` AS cat2 ON `cat2`.`id_cat` = `rpo`.`id_estado_propiedad`
     			LEFT JOIN `usuarios` AS usr ON `usr`.`id_usuario` = `rpo`.`creado_por`
     			WHERE $propiedades_clause";*/
     //-------------------------------
     // Notificaciones de Proyectos
     //-------------------------------
     /*$fields = array (
     			"pry.id_proyecto",
     			"pry.nombre",
     			"pry.fecha_creacion",
     			"ccat.etiqueta as tipo",
     			"HEX(pry.uuid_proyecto) AS uuid_proyecto",
     			"CONCAT_WS(' ', IF(usr.nombre != '', usr.nombre, ''), IF(usr.apellido != '', usr.apellido, '')) AS creado_por",
     		);
     		$proyectos = $this->db->select($fields)
     				->distinct()
     				->from('proy_proyectos AS pry')
     				->join('proy_proyectos_cat AS ccat', 'ccat.id_cat = pry.id_tipo', 'LEFT')
     				->join('proy_proyectos_cat AS ccat2', 'ccat2.id_cat = pry.id_fase', 'LEFT')
     				->join('usuarios AS usr', 'usr.uuid_usuario = pry.creado_por', 'LEFT')
     				->join('rpo_propiedad_proyecto AS rpo_pry', 'rpo_pry.uuid_proyecto = pry.uuid_proyecto', 'LEFT')
     				->join('rpo_propiedades AS rpo', 'rpo.uuid_propiedad = rpo_pry.uuid_propiedad', 'LEFT')
     				->join('opp_oportunidades AS opp', 'opp.uuid_propiedad = rpo.uuid_propiedad', 'LEFT')
     				//->where($clause)
     				->get()
     				->result_array();
     
     		if(!empty($proyectos))
     		{
     			foreach($proyectos AS $proyecto)
     			{
     				$creado_por = !empty($proyecto) && !empty($proyecto["creado_por"]) ? $proyecto["creado_por"] : "";
     				$nombre_proyecto = !empty($proyecto) && !empty($proyecto["nombre"]) ? $proyecto["nombre"] : "";
     				$fecha_creacion = !empty($proyecto) && !empty($proyecto["fecha_creacion"]) ? $proyecto["fecha_creacion"] : "";
     				$tiempo_transcurrido = !empty($proyecto) && !empty($proyecto["fecha_creacion"]) ? Util::timeago($proyecto["fecha_creacion"]) : "";
     
     				$notificaciones[$i]["mensaje"] = $creado_por. ' ha creado el proyecto '. $nombre_proyecto;
     				$notificaciones[$i]["tiempo_transcurrido"] = $tiempo_transcurrido;
     				$notificaciones[$i]["fecha"] = ($fecha_creacion != "" && $fecha_creacion != "0000-00-00 00:00:00" ? Util::translate_date_to_spanish(date('l d \d\e F Y \d\e Y - h:i a', strtotime($fecha_creacion))) : "");
     				$i++;
     			}
     		}*/
     //Cantidad de registros a mostrar
     $limit = !empty($_POST["limit"]) ? (int) $this->input->post('limit', true) : 5;
     $tables = "";
     if (Auth::has_permission('acceso', 'oportunidades/listar-oportunidades')) {
         $tables .= "({$sql_oportunidad})";
     }
     /*if(Auth::has_permission('acceso', 'propiedades/listar-propiedades')){
     			$tables .= $tables != "" ? " UNION ($sql_propiedad)" : "($sql_propiedad)";
     		}*/
     if (Auth::has_permission('acceso', 'actividades/listar-actividades')) {
         $tables .= $tables != "" ? " UNION ({$sql_actividad})" : "({$sql_actividad})";
     }
     /*$sql = "SELECT td.* FROM (
     		($sql_oportunidad)
     		UNION
     		($sql_actividad)
     		UNION
     		($sql_propiedad)) AS td ORDER BY td.fecha DESC
     		LIMIT 0, %s";*/
     if (empty($tables)) {
         return false;
     }
     /*echo $tables;
     		die();
     		*/
     $sql = "SELECT td.* FROM ({$tables}) AS td ORDER BY td.fecha DESC LIMIT 0, %s";
     $sql = sprintf($sql, $limit);
     $results = $this->db->query($sql)->result_array();
     $i = 0;
     if (!empty($results)) {
         foreach ($results as $result) {
             $nombre_usuario = !empty($result) && !empty($result["nombre_usuario"]) ? $result["nombre_usuario"] : "";
             $nombre_notificacion = !empty($result) && !empty($result["nombre"]) ? $result["nombre"] : "";
             $tipo_notificacion = !empty($result) && !empty($result["modulo"]) ? $result["modulo"] : "";
             $fecha_creacion = !empty($result) && !empty($result["fecha"]) ? $result["fecha"] : "";
             $tiempo_transcurrido = !empty($fecha_creacion) && !empty($fecha_creacion) ? Util::timeago($fecha_creacion) : "";
             $notificaciones[$i]["mensaje"] = $nombre_usuario . ' ha creado la ' . $tipo_notificacion . ' ' . $nombre_notificacion;
             $notificaciones[$i]["tiempo_transcurrido"] = $tiempo_transcurrido;
             $notificaciones[$i]["fecha"] = $fecha_creacion != "" && $fecha_creacion != "0000-00-00 00:00:00" ? Util::translate_date_to_spanish(date('l d \\d\\e F Y \\d\\e Y - h:i a', strtotime($fecha_creacion))) : "";
             $i++;
         }
     }
     return $notificaciones;
 }
 /**
  * Retorna el total de oportunidades
  * de un cliente.
  *
  * @param string $uuid_cliente
  * @return array
  */
 function selecciona_total_oportunidades_cliente($uuid_cliente = NULL)
 {
     if ($uuid_cliente == NULL) {
         return false;
     }
     /**
      * Array con los uuid de usuarios
      * que el usario actual puede ver.
      */
     $ver_usuarios = @CRM_Controller::andrea_ACL();
     $fields = array("COUNT(opp.id_oportunidad) AS total");
     $clause = array("opp.uuid_cliente = UNHEX('{$uuid_cliente}')" => NULL);
     $result = $this->db->select($fields)->distinct()->from('opp_oportunidades AS opp');
     if (!empty($ver_usuarios["uuid_usuario"])) {
         $usuarios = $ver_usuarios["uuid_usuario"];
         $usuarios = !empty($usuarios) ? implode(", ", array_map(function ($usuarios) {
             return "'" . $usuarios . "'";
         }, $usuarios)) : "";
         $clause["HEX(opp.id_asignado) IN(" . $usuarios . ")"] = NULL;
     }
     return $this->db->where($clause)->get()->result_array();
 }