Exemplo n.º 1
0
 public function postSaveplan()
 {
     if (Request::ajax()) {
         if (Input::get('savePlanAll') != '') {
             $post = Input::get('savePlanAll');
             //Resultado del proceso
             $saveActu = array();
             //Todos los datos
             $dataArray = explode("|^~", $post);
             /**
              * $genArray[0]: empresa_id
              * $genArray[1]: celula_id
              * $genArray[2]: tecnico id
              * $genArray[3]: fecha agenda: dd/mm/yyyy
              */
             $genArray = explode("|", $dataArray[0]);
             $actuArray = explode("|^", $dataArray[1]);
             foreach ($actuArray as $key => $val) {
                 $dbCommit = true;
                 DB::beginTransaction();
                 /**
                  * $data[0]: 'Averia' o 'Provision'
                  * $data[1]: codigo (requerimiento o averia)
                  * $data[2]: id_gestion (''=temporal, num=gestionada)
                  * $data[3]: horario_id
                  * $data[4]: 1=coordinado,0=no coordinado
                  * $data[5]: Latitud
                  * $data[6]: Longitud
                  */
                 $data = explode("|", $val);
                 /**
                  * Validar si temporal cambio a gestionado
                  */
                 if (trim($data[2]) == '' or trim($data[2]) == 0) {
                     $arrTmpGes = DB::table('ultimos_movimientos')->where('codactu', $data[1])->first();
                     $arrTmpGes = Helpers::stdToArray($arrTmpGes);
                     if (count($arrTmpGes) > 0 and isset($arrTmpGes['gestion_id'])) {
                         //ID de gestion
                         $data[2] = $arrTmpGes['gestion_id'];
                         $data[4] = $arrTmpGes['coordinado'];
                     }
                 }
                 $date = substr($genArray[3], 6, 4) . "-" . substr($genArray[3], 3, 2) . "-" . substr($genArray[3], 0, 2);
                 $dia_agenda = date('N', strtotime($date));
                 $tablatmp = Config::get("wpsi.db.tmp_" . strtolower($data[0]));
                 $tmpdata = array();
                 //$actividad_id = 0;
                 $tmptable = new Tmptable();
                 $celula = explode("_", $genArray[1]);
                 //Origen Temporal
                 if ($data[0] == "Averia") {
                     //$actividad_id = 1;
                     $tmpdata = $tmptable->getAveria($data[1]);
                 }
                 if ($data[0] == "Provision") {
                     //$actividad_id = 2;
                     $tmpdata = $tmptable->getProvision($data[1]);
                 }
                 $actividad = DB::table('actividades')->where('nombre', $data[0])->first();
                 //Horario
                 $horario = DB::table('horarios')->where('id', $data[3])->first();
                 //Tecnico
                 $objTecnico = DB::table('tecnicos')->where('id', $genArray[2])->first();
                 //Componentes
                 $arrComponentes = array();
                 $cmp = Helpers::ruta('cat_componente/cargar', 'POST', array('codactu' => $data[1]), false);
                 $cmp = Helpers::stdToArray($cmp);
                 if ($cmp["rst"] == 1 and count($cmp["datos"]) > 0) {
                     foreach ($cmp["datos"] as $val) {
                         $arrComponentes[] = $val["nombre"];
                     }
                 }
                 //Respuesta GestionMovimiento
                 $rgm = array();
                 if ($data[2] == 0) {
                     if (isset($tmpdata[0])) {
                         //Temporal
                         $savedata = $tmpdata[0];
                         $savedata->actividad = $data[0];
                         $savedata->actividad_id = $actividad->id;
                         $savedata->nombre_cliente_critico = $savedata->nombre_cliente;
                         $savedata->telefono_cliente_critico = $savedata->telefono;
                         $savedata->celular_cliente_critico = $savedata->telefono;
                         $quiebre = DB::table('quiebres')->where('apocope', $savedata->quiebre)->first();
                         $empresa = DB::table('empresas')->where('nombre', $savedata->eecc_final)->first();
                         $zonal = DB::table('zonales')->where('abreviatura', $savedata->zonal)->first();
                         $tecnico = DB::table('tecnicos')->where('carnet_tmp', $savedata->zonal)->first();
                         $savedata->quiebre_id = $quiebre->id;
                         $savedata->empresa_id = $genArray[0];
                         $savedata->zonal_id = $zonal->id;
                         //Motivo gestion
                         $savedata->estado = 2;
                         $savedata->motivo = 1;
                         $savedata->submotivo = 1;
                         $savedata->flag_tecnico = 1;
                         $savedata->horario_id = $data[3];
                         $savedata->dia_id = $dia_agenda;
                         $savedata->fecha_agenda = $date;
                         $savedata->celula = $celula[1];
                         $savedata->tecnico = $genArray[2];
                         $savedata->hora_agenda = $horario->horario;
                         $savedata->duration = 2;
                         $savedata->carnet = $objTecnico->carnet_tmp;
                         $savedata->coordinado2 = 'NO';
                         $savedata->velocidad = "";
                         $velocidad = explode("|", $savedata->paquete);
                         if (isset($velocidad[2])) {
                             $savedata->velocidad = $velocidad[2];
                         }
                         $savedata->estado_agendamiento = '1-1';
                         $savedata->submodulo_id = 1;
                         $savedata->y = $data[5];
                         $savedata->x = $data[6];
                         $savedata->componente_text = $arrComponentes;
                         //Grabar gestión
                         $rgm = Helpers::ruta('gestion_movimiento/crear', 'POST', Helpers::stdToArray($savedata), false);
                         $rgm = Helpers::stdToArray($rgm);
                         $saveActu[$data[0]][$data[1]] = $rgm;
                         /**
                          * Validar si se enviará a officetrack
                          */
                         $valida = array();
                         //Si cumple con el envio a OT acitividad + quiebre
                         $valida["actividad_id"] = $savedata->actividad_id;
                         $valida["quiebre_id"] = $savedata->quiebre_id;
                         //El estado del tecnico de officetrack
                         $valida["tecnico_id"] = $savedata->tecnico;
                         $valida["celula_id"] = $savedata->celula;
                         //El estado de Agendamiento para officetrack
                         $valida["motivo_id"] = 1;
                         $valida["submotivo_id"] = 1;
                         $valida["estado_id"] = 2;
                         //Si anteriormente se realizó una transacción OT
                         $valida["transmision"] = 0;
                         $rvalida = Helpers::ruta('officetrack/validar', 'POST', $valida, false);
                         //Puede enviar a OT y Grabó en DB
                         if ($rvalida == "1" and $rgm['rst'] == "1") {
                             //Recuperar ID de gestion
                             $savedata->gestion_id = $rgm['gestion_id'];
                             $otdata["otdata"] = Helpers::stdToArray($savedata);
                             $rot = Helpers::ruta('officetrack/enviartarea', 'POST', $otdata, false);
                             $rot = Helpers::stdToArray($rot);
                             $saveActu[$data[0]][$data[1]]['officetrack'] = $rot['officetrack'];
                         } else {
                             $saveActu[$data[0]][$data[1]]['officetrack'] = "Envio no valido";
                             $dbCommit = false;
                             $rgm["msj"] = "Envio no valido";
                             $geserror = "";
                             if (isset($rgm['err'])) {
                                 $geserror = base64_decode($rgm['err']);
                             }
                             $rgm["err"] = base64_encode($rgm["msj"] . $rvalida . $geserror);
                         }
                         unset($savedata);
                     }
                 } else {
                     if ($data[2] > 0) {
                         //Origen Gestionado
                         $geoplan = new Geoplan();
                         $ultimo = $geoplan->getUltimoMovimiento($data[2]);
                         $gesmov = $ultimo["datos"][0];
                         if (isset($tmpdata[0])) {
                             $savedata = Helpers::stdToArray($tmpdata[0]);
                         }
                         $ultimov = DB::table('ultimos_movimientos')->where('gestion_id', $data[2])->first();
                         $savedata = Helpers::stdToArray($ultimov);
                         //Coordinado con cliente
                         if ($data[4] == 1) {
                             $horario = DB::table('horarios')->where('id', $ultimov->horario_id)->first();
                             $data[3] = $horario->id;
                             $dia_agenda = $ultimov->dia_id;
                             $date = $ultimov->fecha_agenda;
                         }
                         $savedata["actividad"] = $data[0];
                         $savedata["actividad_id"] = $actividad->id;
                         $savedata["gestion_id"] = $data[2];
                         $savedata["empresa_id"] = $genArray[0];
                         $savedata["zonal_id"] = $gesmov->zonal_id;
                         $savedata["estado"] = 2;
                         $savedata["motivo"] = 1;
                         $savedata["submotivo"] = 1;
                         $savedata["observacion2"] = "";
                         $savedata["coordinado2"] = "";
                         $savedata["flag_tecnico"] = 1;
                         $savedata["horario_id"] = $data[3];
                         $savedata["dia_id"] = $dia_agenda;
                         $savedata["fecha_agenda"] = $date;
                         $savedata["celula"] = $celula[1];
                         $savedata["tecnico"] = $genArray[2];
                         $savedata["hora_agenda"] = $horario->horario;
                         $savedata["duration"] = 60;
                         $savedata["estado_agendamiento"] = '1-1';
                         $savedata["submodulo_id"] = 1;
                         $savedata["y"] = $data[5];
                         $savedata["x"] = $data[6];
                         $savedata["componente_text"] = $arrComponentes;
                         //Datos faltantes para officetrack
                         if (!isset($savedata["quiebre"])) {
                             $quiebre = DB::table('quiebres')->where('id', $savedata["quiebre_id"])->first();
                             $savedata["quiebre"] = $quiebre->apocope;
                         }
                         if (!isset($savedata["eecc_final"])) {
                             $quiebre = DB::table('empresas')->where('id', $savedata["empresa_id"])->first();
                             $savedata["eecc_final"] = $quiebre->nombre;
                         }
                         if (!isset($savedata["cr_observacion"])) {
                             $savedata["cr_observacion"] = $savedata["observacion"];
                         }
                         if (!isset($savedata["carnet"])) {
                             $savedata["carnet"] = $objTecnico->carnet_tmp;
                         }
                         $savedata["velocidad"] = "";
                         if (isset($savedata["paquete"])) {
                             $velocidad = explode("|", $savedata["paquete"]);
                             if (isset($velocidad[2])) {
                                 $savedata["velocidad"] = $velocidad[2];
                             }
                         }
                         /**
                          * Validar si se enviará a officetrack
                          */
                         $valida = array();
                         //Si cumple con el envio a OT acitividad + quiebre
                         $valida["actividad_id"] = $actividad->id;
                         $valida["quiebre_id"] = $gesmov->quiebre_id;
                         //El estado del tecnico de officetrack
                         $valida["tecnico_id"] = $genArray[2];
                         $valida["celula_id"] = $celula[1];
                         //El estado de Agendamiento para officetrack
                         $valida["motivo_id"] = 1;
                         $valida["submotivo_id"] = 1;
                         $valida["estado_id"] = 2;
                         //Si anteriormente se realizó una transacción OT
                         $valida["transmision"] = $gesmov->transmision;
                         $rvalida = Helpers::ruta('officetrack/validar', 'POST', $valida, false);
                         //Grabar gestión
                         $rgm = Helpers::ruta('gestion_movimiento/crear', 'POST', Helpers::stdToArray($savedata), false);
                         $rgm = Helpers::stdToArray($rgm);
                         $saveActu[$data[0]][$data[1]] = $rgm;
                         //Envia a OT y Grabó gestión
                         if ($rvalida == "1" and $rgm['rst'] == "1") {
                             $otdata["otdata"] = $savedata;
                             $rot = Helpers::ruta('officetrack/enviartarea', 'POST', $otdata, false);
                             $rot = Helpers::stdToArray($rot);
                             $saveActu[$data[0]][$data[1]]["officetrack"] = $rot['officetrack'];
                         } else {
                             $saveActu[$data[0]][$data[1]]["officetrack"] = "Envio no valido";
                             $dbCommit = false;
                             $rgm["msj"] = "Envio no valido";
                             $geserror = "";
                             if (isset($rgm['err'])) {
                                 $geserror = base64_decode($rgm['err']);
                             }
                             $rgm["err"] = base64_encode($rgm["msj"] . $rvalida . $geserror);
                         }
                         unset($savedata);
                     }
                 }
                 //Commit o Rollback
                 if ($dbCommit) {
                     DB::commit();
                 } else {
                     DB::rollback();
                     $custom["code"] = "R001";
                     $custom["file"] = __FILE__;
                     $custom["line"] = __LINE__;
                     $custom["message"] = base64_decode($rgm["err"]);
                     $custom["trace"] = "RollBack Geo Planificacion";
                     $custom["usuario_id"] = Auth::user()->id;
                     $custom["date"] = date("Y-m-d H:i:s");
                     $this->_errorController->saveCustomError($custom);
                     $saveActu[$data[0]][$data[1]]["rst"] = 2;
                     $saveActu[$data[0]][$data[1]]["msj"] = "No se registra movimiento";
                 }
             }
             return json_encode($saveActu);
         }
     }
 }
Exemplo n.º 2
0
 /**
  * devolver la distancia de la tarea al punto x, y
  * POST /api/distanciaactu
  * @param  int  gestion_id
  * @param  int  actu
  * @param  int  x
  * @param  int  y
  * @return Response
  */
 public function postDistanciaactu()
 {
     if ((Input::has('gestion_id') || Input::has('actu')) && Input::has('x') && Input::has('y')) {
         $gestionId = Input::get('gestion_id', '');
         $actu = Input::get('actu', '');
         $x = Input::get('x');
         $y = Input::get('y');
         $distancia = 0;
         //query
         if ($gestionId !== '') {
             $gestionDetalle = GestionDetalle::Where('gestion_id', $gestionId)->first();
             $tabla = 'gestiones_detalles';
             $gestionX = $gestionDetalle->x;
             $gestionY = $gestionDetalle->y;
         } elseif ($actu !== '') {
             $tmptable = new Tmptable();
             $tmpdata = $tmptable->getAveria($actu);
             if (isset($tmpdata[0])) {
                 //return averia x,y
                 $tabla = 'tmp_averia';
                 $gestionX = $tmpdata[0]->x;
                 $gestionY = $tmpdata[0]->y;
             } else {
                 $tmpdata = $tmptable->getProvision($actu);
                 if (isset($tmpdata[0])) {
                     //return averia x,y
                     $tabla = 'tmp_provision';
                     $gestionX = $tmpdata[0]->x;
                     $gestionY = $tmpdata[0]->y;
                 } else {
                     return Response::json(array('rst' => 0, 'error' => 'no se encontro x,y para este codigo'));
                 }
             }
         }
         //distancia
         $distancia = sqrt(pow($gestionX - $x, 2) + pow($gestionY - $y, 2));
         //metros
         $distancia = $distancia * 100000;
         return Response::json(array('rst' => 1, 'tabla' => $tabla, 'distancia' => $distancia));
     } else {
         return Response::json(array('rst' => 0, 'error' => 'parametros incorrectos'));
     }
 }