defined('BASEPATH') OR exit('No direct script access allowed'); class Web2 extends CI_Controller { public function index() { $data = $this->get_data(); $data['lineas'] = $this->lineas_model->with_frecuencia()->with_recorridos()->order_by('nombre','asc')->get_all(); $data['preselect_lines'] = false; if( isset($_GET['qr']) ){ $this->load->model('paradas2_model'); if( $data['parada'] = $this->paradas2_model->get($_GET['qr']) ){ $lineas = json_decode($data['parada']->lineas); $ids = array(); foreach($lineas as $linea){ $ids[] = $linea->linea_id; } $data['preselect_lines'] = json_encode($ids); } } $this->load->view('app/inicio', $data, FALSE); } public function get_frecuencias($linea_id) { if( $linea = $this->lineas_model->with_frecuencia()->get($linea_id) ){ $response['status'] = 'ok'; $response['linea'] = $linea; }else{ $response['status'] = 'error'; } echo json_encode($response); } public function get_paradas() { if( $paradas = $this->paradas2_model->get_all() ){ $response['status'] = 'ok'; $response['paradas'] = $paradas; }else{ $response['status'] = 'error'; } echo json_encode($response); } public function get_data() { $data = array(); $data['assets'] = base_url('assets_app/'); return $data; } public function como_llegar() { $linea_unica = false; $this->load->library('functions'); $desde = json_decode($this->input->post('desde',true)); $hasta = json_decode($this->input->post('hasta',true)); $paradas = $this->paradas2_model->get_all(); $lineas = array(); $lines = $this->lineas_model->where('Id !=',-1)->with_recorridos()->get_all(); foreach( $lines as $line ){ $lineas[$line->Id] = $line; } $rutas = array(); //buscar misma linea misma direccion $ruta_sola_linea = false; $rutas_solas = $this->get_rutas($desde,$hasta,$paradas,$lineas); if( !empty($rutas_solas) ){ usort($rutas_solas, function($a, $b) { return $a->caminar > $b->caminar; }); $rutas[] = $rutas_solas[0]; $linea_unica = $rutas_solas[0]->combinaciones[0]->linea_id; } /// combinaciones $rutas_combinacion = array(); $plaza = new STDClass(); $plaza->lat = -38.7191535; $plaza->lng = -62.2665468; $rutas_origen = $this->get_rutas($desde,$plaza,$paradas,$lineas,$linea_unica); if( !empty($rutas_origen) ){ usort($rutas_origen, function($a, $b) { return $a->caminar > $b->caminar; }); $rutas_combinacion[] = $rutas_origen[0]; $parada2 = json_decode($rutas_combinacion[0]->combinaciones[0]->parada_hasta->latLng); //var_dump($parada2); $rutas_destino = $this->get_rutas($parada2,$hasta,$paradas,$lineas,$linea_unica); if( !empty($rutas_destino) ){ usort($rutas_destino, function($a, $b) { return $a->caminar > $b->caminar; }); $rutas_combinacion[] = $rutas_destino[0]; } if( count($rutas_combinacion) == 2){ $ruta = new STDClass(); $ruta->caminar = 0; $ruta->combinaciones = array(); //distancia a la parada 1 $ruta->caminar += $rutas_combinacion[0]->combinaciones[0]->parada_desde->distance; //distancia a la parada 2 a la 3 $parada2 = json_decode($rutas_combinacion[0]->combinaciones[0]->parada_hasta->latLng); $parada3 = json_decode($rutas_combinacion[1]->combinaciones[0]->parada_desde->latLng); $distance = $this->functions->haversineGreatCircleDistance($parada2->lat,$parada2->lng,$parada3->lat,$parada3->lng); $ruta->caminar += $distance; //distancia de la parada 4 al destino $ruta->caminar += $rutas_combinacion[1]->combinaciones[0]->parada_hasta->distance; $ruta->combinaciones[] = $rutas_combinacion[0]->combinaciones[0]; $ruta->combinaciones[] = $rutas_combinacion[1]->combinaciones[0]; $ruta->combinacion_distance = $distance; $ruta->caminar = number_format($ruta->caminar,2); $rutas[] = $ruta; } } echo json_encode($rutas); } public function get_rutas($desde,$hasta,$paradas,$lineas,$linea_unica=false) { $rutas = array(); $paradas_desde = $paradas_hasta = array(); foreach( $paradas as $parada ){ $center = json_decode($parada->latLng); //desde $distance = $this->functions->is_in_circle($desde,1000,$center); if( $distance !== false ){ //var_dump($parada); //var_dump($distance); $parada->distance = $distance; $paradas_desde[] = $parada; } //hasta $distance = $this->functions->is_in_circle($hasta,1000,$center); if( $distance !== false ){ //var_dump($parada); //var_dump($distance); $parada->distance = $distance; $paradas_hasta[] = $parada; } } //var_dump($paradas_desde); //var_dump($paradas_hasta); usort($paradas_desde, function($a, $b) { return $a->distance > $b->distance; }); usort($paradas_hasta, function($a, $b) { return $a->distance > $b->distance; }); foreach($paradas_desde as $parada_desde){ $lineas_desde = json_decode($parada_desde->lineas); foreach($paradas_hasta as $parada_hasta){ $lineas_hasta = json_decode($parada_hasta->lineas); foreach( $lineas_desde as $linea_desde ){ if( $linea_unica ){ if( $linea_desde->linea_id == $linea_unica ){ continue; } } //buscar el recorrido de esta linea y ver si es ida o vuelta $recorridos = $lineas[$linea_desde->linea_id]->recorridos; $recorrido_tipo = 'ida'; foreach($recorridos as $recorrido){ $path = ($recorrido->path); $coords = $desde->lat.','.$desde->lng; $desde_distance = $this->functions->getDistanceInPath($path,$coords); $coords = $hasta->lat.','.$hasta->lng; $hasta_distance = $this->functions->getDistanceInPath($path,$coords); if( $desde_distance < $hasta_distance ){ $recorrido_tipo = $recorrido->tipo; } } foreach($lineas_hasta as $linea_hasta){ if( ($linea_desde->linea_id == $linea_hasta->linea_id) && ($linea_desde->sentido == $recorrido_tipo) && ($linea_hasta->sentido == $recorrido_tipo) ){ $ruta = new STDClass(); $ruta->caminar = number_format($parada_desde->distance+$parada_hasta->distance,2); $ruta->combinaciones = array(); $combinacion = new STDClass(); $combinacion->linea = $linea_desde->nombre; $combinacion->linea_id = $linea_desde->linea_id; $ruta_sola_linea = $linea_desde->linea_id; $combinacion->parada_desde = $parada_desde; $combinacion->parada_hasta = $parada_hasta; $ruta->combinaciones[] = $combinacion; $rutas[] = $ruta; } } } } } return $rutas; } } /* End of file Web2.php */ /* Location: ./application/controllers/Web2.php */
The page you requested was not found.