public function obtener_sucursales_cercanas($latitud, $longitud, $radio, $limite, $tipo_atencion) { /*$consulta = "SELECT SQRT( POW(69.1 * (suc_latitud - $latitud), 2) + POW(69.1 * ($longitude - suc_longitud) * COS(suc_latitud / 57.3), 2)) AS radio, suc_direccion as direccion FROM sucursal HAVING radio < $radio ORDER BY direccion LIMIT $limite;";*/ /*$consulta = "SELECT ((ACOS(SIN($latitud * PI() / 180) * SIN(suc_latitud * PI() / 180) + COS($latitud * PI() / 180) * COS(suc_latitud * PI() / 180) * COS(($longitud - suc_longitud) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS distance, suc_direccion as direccion FROM sucursal WHERE (suc_latitud BETWEEN ($latitud - $radio) AND ($latitud + $radio) AND suc_longitud BETWEEN ($longitud - $radio) AND ($longitud + $radio)) ORDER BY distance ASC LIMIT $limite;";*/ require 'funciones.php'; $funcion = new Funciones(); $consulta = "SELECT DISTINCT s.suc_id AS id, (acos(sin(radians({$latitud})) * sin(radians(s.suc_latitud)) + cos(radians({$latitud})) * cos(radians(s.suc_latitud)) * cos(radians({$longitud}) - radians(s.suc_longitud))) * 6378) AS distancia, s.suc_direccion AS direccion, ta.tip_ate_descripcion AS tipo_atencion, ta.tip_ate_id AS tipo_atencion_id, tas.tip_ate_suc_tiempo_espera AS tiempo_espera, tas.tip_ate_suc_fila_unica AS fila_unica, s.com_id AS comuna_id, c.com_nombre AS comuna_nombre, c.reg_id AS region_id, r.reg_nombre AS region_nombre"; /* AÑADIR CAMPOS DE RETORNO */ $consulta .= " FROM sucursal s"; /* AÑADIR JOINS */ $consulta .= " LEFT JOIN comuna c ON s.com_id = c.com_id LEFT JOIN region r ON c.reg_id = r.reg_id JOIN tipo_atencion_sucursal tas ON s.suc_id = tas.suc_id RIGHT JOIN tipo_atencion ta ON tas.tip_ate_id = ta.tip_ate_id RIGHT JOIN ejecutivo ej ON s.suc_id = ej.suc_id"; /* AÑADIR CONDICIONES */ if ($tipo_atencion > 0) { $consulta .= $funcion->concatenar('where', ' AND '); $consulta .= "tas.tip_ate_id = {$tipo_atencion}"; } if ($radio > 0) { $consulta .= $funcion->concatenar('having', ' AND '); $consulta .= "distancia < {$radio}"; } /* ULTIMAS INSTRUCCIONES ANTES DE CIERRE DE consulta */ $consulta .= " ORDER BY distancia, tipo_atencion"; $consulta .= " LIMIT {$limite};"; //echo $consulta; $rs = $this->sql_con->query($consulta); if ($rs === false) { $this->datos['success'] = 0; //trigger_error('Wrong SQL: ' . $consulta . ' Error: ' . $this->sql_con->error, E_USER_ERROR); exit; } else { $this->datos['success'] = 1; $this->datos['sucursales'] = array(); while ($row = $rs->fetch_assoc()) { $dato = array(); foreach ($row as $indice => $value) { $dato[$indice] = $value; } if ($dato['fila_unica'] == 0) { $dato['tiempo_espera'] = $this->obtener_tiempo_espera_sucursal($dato['id']); } array_push($this->datos['sucursales'], $dato); } } }
public function obtener_ejecutivos($sucursal, $tipo_atencion, $estado, $group) { require 'funciones.php'; $funcion = new Funciones(); $consulta = "SELECT DISTINCT ej.eje_id as ejecutivo_id, ej.eje_nombre AS ejecutivo_nombre, tas.tip_ate_suc_tiempo_espera as tiempo_espera FROM atencion a RIGHT JOIN tipo_atencion ta ON a.tip_ate_id = ta.tip_ate_id RIGHT JOIN tipo_atencion_sucursal tas ON ta.tip_ate_id = tas.tip_ate_id RIGHT JOIN sucursal s ON tas.suc_id = s.suc_id RIGHT JOIN ejecutivo ej ON s.suc_id = ej.suc_id RIGHT JOIN tipo_atencion_ejecutivo tae ON ej.eje_id = tae.eje_id"; if ($sucursal > 0) { $consulta .= $funcion->concatenar('where', ' AND '); $consulta .= "s.suc_id = {$sucursal}"; } if ($tipo_atencion > 0) { $consulta .= $funcion->concatenar('where', ' AND '); $consulta .= "ta.tip_ate_id = {$tipo_atencion}"; } if ($estado > 0) { $consulta .= $funcion->concatenar('where', ' AND '); $consulta .= "ej.eje_est_id = {$estado}"; } if ($group == 1) { $consulta .= ' GROUP BY ej.eje_id'; } $consulta .= " ORDER BY tas.tip_ate_suc_tiempo_espera"; $rs = $this->sql_con->query($consulta); if ($rs === false) { //trigger_error('Wrong SQL: ' . $consulta . ' Error: ' . $this->sql_con->error, E_USER_ERROR); $this->datos['success'] = 0; exit; } else { $this->datos['success'] = 1; $this->datos['ejecutivos'] = array(); while ($row = $rs->fetch_assoc()) { $dato = array(); foreach ($row as $indice => $value) { $dato[$indice] = $value; } array_push($this->datos['ejecutivos'], $dato); } } }
<?php class Funciones { public static function suma($a, $b) { return $a + $b; } public function concatenar($a, $b, $c) { return $a . $b . $c; } public function multiplicar($a, $b) { return $a * $b; } } $funcion = new Funciones(); echo $funcion->suma(4, 2); echo '<br>'; echo $funcion->concatenar('bidkar', 'aragon', 'cardenas'); echo '<br>'; echo $funcion->multiplicar(5, 9); echo '<br>'; echo Funciones::suma(5, 6);
public function obtener_atenciones($tipo_atencion, $estado, $sucursal) { require 'funciones.php'; $funcion = new Funciones(); $consulta = "SELECT a.ate_id AS id, a.ate_fecha_inicio AS fecha_inicio, a.ate_fecha_fin AS fecha_fin, a.ate_calificacion_cliente AS cal_cliente, a.ate_calificacion_ejecutivo AS cal_eje, a.tip_ate_id AS tipo_atencion_id, ta.tip_ate_descripcion AS tipo_atencion_descripcion, a.est_id AS estado_id, e.est_descripcion AS estado_descripcion, a.suc_id AS sucursal_id, s.suc_direccion AS sucursal_direccion, s.suc_latitud AS sucursal_latitud, s.suc_longitud AS sucursal_longitud, s.com_id AS comuna_sucursal_id, c.com_nombre AS comuna_sucursal_nombre, c.reg_id AS region_sucursal_id, r.reg_nombre AS region_nombre, a.eje_id AS ejecutivo_id, ej.eje_nombre AS ejecutivo_nombre, ej.eje_rut AS ejecutivo_rut, ej.eje_foto AS ejecutivo_foto, a.cli_id AS cliente_id, cl.cli_nombre AS cliente_nombre, cl.cli_rut AS cliente_rut, cl.cli_foto AS cliente_foto FROM atencion a LEFT JOIN tipo_atencion ta ON a.tip_ate_id = ta.tip_ate_id LEFT JOIN estado e ON a.est_id = e.est_id LEFT JOIN sucursal s ON a.suc_id = s.suc_id LEFT JOIN comuna c ON s.com_id = c.com_id LEFT JOIN region r ON c.reg_id = r.reg_id LEFT JOIN ejecutivo ej ON a.eje_id = ej.eje_id LEFT JOIN cliente cl ON a.cli_id = cl.cli_id"; if ($tipo_atencion != 'all') { $consulta .= $funcion->concatenar('having', ' AND '); $consulta .= "a.tip_ate_id = {$tipo_atencion}"; } if ($estado > 0) { $consulta .= $funcion->concatenar('having', ' AND '); $consulta .= "a.est_id = {$estado}"; } if ($sucursal > 0) { $consulta .= $funcion->concatenar('having', ' AND '); $consulta .= "a.suc_id = {$sucursal}"; } $rs = $this->sql_con->query($consulta); if ($rs === false) { //trigger_error('Wrong SQL: ' . $consulta . ' Error: ' . $this->sql_con->error, E_USER_ERROR); $this->datos['success'] = 0; exit; } else { $this->datos['success'] = 1; $this->datos['atenciones'] = array(); while ($row = $rs->fetch_assoc()) { $dato = array(); foreach ($row as $indice => $value) { $dato[$indice] = $value; } array_push($this->datos['atenciones'], $dato); } } }
public function obtener_clientes($estado, $tipo_atencion, $sucursal, $cliente, $ejecutivo, $group, $limit, $hoy, $fecha) { require 'funciones.php'; $funcion = new Funciones(); $consulta = "SELECT cl.cli_id AS cliente_id, cl.cli_nombre AS cliente_nombre, cl.cli_rut AS cliente_rut, cl.cli_foto AS cliente_foto, a.ate_id AS atencion_id, a.ate_fecha_inicio AS atencion_fecha_inicio, a.ate_fecha_fin AS atencion_fecha_fin, a.ate_calificacion_cliente AS atencion_calificacion_cliente, a.ate_calificacion_ejecutivo AS atencion_calificacion_ejecutivo, a.ate_numero AS numero, a.ate_modulo AS modulo, a.tip_ate_id AS tipo_atencion_id, ta.tip_ate_descripcion AS tipo_atencion_descripcion, a.est_id AS estado_id, e.est_descripcion AS estado_descripcion, a.suc_id AS sucursal, s.suc_direccion AS sucursal_direccion, s.suc_latitud AS sucursal_latitud, s.suc_longitud AS sucursal_longitud, s.com_id AS comuna_id, c.com_nombre AS comuna_nombre, c.reg_id AS region_id, r.reg_nombre AS region_nombre, a.eje_id AS ejecutivo_id, ej.eje_nombre AS ejecutivo_nombre, ej.eje_rut AS ejecutivo_rut, ej.eje_foto AS ejecutivo_foto FROM cliente cl LEFT JOIN atencion a ON cl.cli_id = a.cli_id LEFT JOIN estado e ON a.est_id = e.est_id LEFT JOIN tipo_atencion ta ON a.tip_ate_id = ta.tip_ate_id LEFT JOIN sucursal s ON a.suc_id = s.suc_id LEFT JOIN tipo_atencion_ejecutivo tae ON a.tip_ate_id = tae.tip_ate_id LEFT JOIN comuna c ON s.com_id = c.com_id LEFT JOIN region r ON c.reg_id = r.reg_id LEFT JOIN ejecutivo ej ON a.eje_id = ej.eje_id"; if ($estado > 0) { $consulta .= $funcion->concatenar('where', ' AND '); $consulta .= "a.est_id = {$estado}"; } if ($tipo_atencion > 0) { $consulta .= $funcion->concatenar('where', ' AND '); $consulta .= "ta.tip_ate_id = {$tipo_atencion}"; } if ($sucursal > 0) { $consulta .= $funcion->concatenar('where', ' AND '); $consulta .= "s.suc_id = {$sucursal}"; } if ($cliente > 0 && $fecha == 0) { $consulta .= $funcion->concatenar('where', ' AND '); $consulta .= "cl.cli_id = {$cliente}"; } if ($ejecutivo > 0) { $consulta .= $funcion->concatenar('where', ' AND '); $consulta .= "tae.eje_id = {$ejecutivo}"; $consulta .= $funcion->concatenar('where', ' AND ('); $consulta .= "a.eje_id IS NULL"; $consulta .= $funcion->concatenar('where', ' OR '); $consulta .= "a.eje_id = {$ejecutivo})"; } if ($hoy > 0) { $hoy = date('Y-m-d'); $consulta .= $funcion->concatenar('where', ' AND '); $consulta .= "a.ate_fecha_real_inicio LIKE '{$hoy}%'"; } if ($fecha != 0) { $consulta .= $funcion->concatenar('where', ' AND '); $consulta .= "a.ate_fecha_inicio < '{$fecha}'"; } if ($group > 0) { $consulta .= ' GROUP BY cl.cli_id'; } /*if ($estado > 0) { $consulta .= $funcion->concatenar('order', ', '); $consulta .= "e.est_id"; } if ($tipo_atencion > 0) { $consulta .= $funcion->concatenar('order', ', '); $consulta .= "ta.tip_ate_id"; } if ($sucursal > 0) { $consulta .= $funcion->concatenar('order', ', '); $consulta .= "s.suc_id"; } if ($cliente > 0) { $consulta .= $funcion->concatenar('order', ', '); $consulta .= "cl.cli_id"; }*/ $consulta .= " ORDER BY a.ate_fecha_real_inicio DESC, a.ate_fecha_inicio ASC"; if ($limit > 0) { $consulta .= " LIMIT {$limit}"; } $rs = $this->sql_con->query($consulta); if ($rs === false) { //trigger_error('Wrong SQL: ' . $consulta . ' Error: ' . $this->sql_con->error, E_USER_ERROR); $this->datos['success'] = 0; exit; } else { $this->datos['success'] = 1; $this->datos['clientes'] = array(); while ($row = $rs->fetch_assoc()) { $dato = array(); foreach ($row as $indice => $value) { $dato[$indice] = $value; } array_push($this->datos['clientes'], $dato); } } }