Ver Mensaje Individual
  #9  
Antiguo 07-02-2017
Avatar de noshy
noshy noshy is offline
Miembro
 
Registrado: jul 2003
Posts: 139
Reputación: 21
noshy Va por buen camino
Código Delphi [-]
begin
  //Recibimos la cadena
  try
    vDespDatoRec := AContext.Connection.IOHandler.ReadLn();
  except
    Exit;
  end;

  if vDespDatoRec.Length < 5 then
  begin
    Exit;
  end;

  //Mostramos la cadena en el log
  logInt(vDespDatoRec,1);


  //Verificamos el tipo de campo que manda el JSON
  vDespTipoDato := 0; //Por defecto tipo de dato 0 (nada)

  //Mensaje de error por defecto en blanco
  vDespMsgError := '';


  vDespJSONDato := TlkJSON.ParseText(vDespDatoRec) as TlkJSONobject;
  try
    try
      vDespUsuario  := vartostr(vDespJSONDato.Field['login'].Field['user'].Value);
      vDespTipoDato := 1; //login
    except

    end;

    try
      vDespLoginVersion := vartostr(vDespJSONDato.Field['login'].Field['version'].Value);
    except
      vDespLoginVersion := '1';
    end;

    try
      vDespMovil := StrToInt(vartostr(vDespJSONDato.Field['posicion'].Field['movil'].Value));
      vDespTipoDato := 2; //Posicion
    except

    end;

    try
      vDespMovil   := StrToInt(vartostr(vDespJSONDato.Field['viajeaceptado'].Field['movil'].Value));
      vDespIdViaje := StrToInt(vartostr(vDespJSONDato.Field['viajeaceptado'].Field['idviaje'].Value));
      vDespTipoDato := 3; //Viaje Aceptado
    except

    end;

    try
      vDespMovil   := StrToInt(vartostr(vDespJSONDato.Field['viajerechazado'].Field['movil'].Value));
      vDespIdViaje := StrToInt(vartostr(vDespJSONDato.Field['viajerechazado'].Field['idviaje'].Value));
      vDespTipoDato := 4; //Viaje Rechazado
    except

    end;

    try
      vDespMovil   := StrToInt(vartostr(vDespJSONDato.Field['viajetimeout'].Field['movil'].Value));
      vDespIdViaje := StrToInt(vartostr(vDespJSONDato.Field['viajetimeout'].Field['idviaje'].Value));
      vDespTipoDato := 5; //Viaje time out
    except

    end;

    try
      vDespMovil := StrToInt(vartostr(vDespJSONDato.Field['historialviajes'].Field['movil'].Value));
      vDespTipoDato := 6; //Historial de Viajes
    except

    end;

    try
      vDespMovil := StrToInt(vartostr(vDespJSONDato.Field['estadoqapqrx'].Field['movil'].Value));
      vDespTipoDato := 7; //Estado del Móvil
    except

    end;

  finally
    vDespJSONDato.Free;
  end;


  //Si no trae algun dato salimos de la funcion
  if vDespTipoDato = 0  then
  begin
    Exit;
  end;


  //Procesamos los datos
  case vDespTipoDato of
  1: begin  //LOGIN
        //Armamos el JSON para enviar como respuesta
        vDespJSONRespuestaLogin  := TlkJSONobject.Create;
        try
          //Chequeamos el login y guardamos el resultado
          vDespRespLogin := LoginInt(vDespDatoRec);

          //Control de Version segun Config
          if vDespConfig_ControlVersion then
          begin
            try
              if StrToFloat(vDespLoginVersion) < vDespConfig_VersionActual then
              begin
                vDespRespLogin := 9;
                vDespMsgError := 'Esta utilizando una version obsoleta. Debe Actualizar la App...';
              end;
            except
              vDespRespLogin := 0;
            end;
          end;

          //Controlamos si hay otro usuario logueado
          {if LoginOtroUsuario(UsuarioMovil(vUsuario)) then
          begin
            vRespLogin := 9;
            vMsgError := 'Existe otro Usuario Logueado en el mismo Movil...';
          end;   }

          //permiso a la aplicacion
          vDespJSONRespuestaLogin.Add('permiso'          , IntToStr(vDespRespLogin) );
          //Config (segundos para el time out)
          vDespJSONRespuestaLogin.Add('segTimeOut'       , IntToStr(vDespConfig_AutoTimeOut) );       //armar la funcion con el setup
          vDespJSONRespuestaLogin.Add('movil'            , IntToStr(UsuarioMovilInt(vDespUsuario)) ); //enviamos el movil del usuario logueado
          vDespJSONRespuestaLogin.Add('intervaloreporte' , IntToStr(vDespConfig_IntervaloReporte) );  //Intervalo en seg para el reporte
          vDespJSONRespuestaLogin.Add('segfinalizarviaje', IntToStr(vDespConfig_FinalizarViaje) );    //Intervalo en seg para el reporte
          vDespJSONRespuestaLogin.Add('msgerror'         , vDespMsgError);                            //Intervalo en seg para el reporte
          //Enviamos el JSOn con la respuesta
          AContext.Connection.IOHandler.WriteLn(TlkJSON.GenerateText(vDespJSONRespuestaLogin));
          Log('->'+vDespUsuario+' '+TlkJSON.GenerateText(vDespJSONRespuestaLogin),1);
        finally
          FreeAndNil(vDespJSONRespuestaLogin);
        end;
     end;
  2: begin //POSICION
        //Guardamos posicion segun Config
        if vDespConfig_GuardarPosicion then
        begin
          if not PosicionInt(vDespDatoRec) then
          begin
            logInt('Error en Guardar Posicion ',0);
          end;
        end;

        vDespAuxS := '';

        //Enviamos Viajes segun Config
        if vDespConfig_EnviarViajes then
        begin
          vDespAuxS := ControlInt(vDespMovil); //VERIFICA SI TIENE VIAJE ASIGNADO
          if Length(vDespAuxS) = 0 then
          begin
            vDespAuxS := ControlQTAInt(vDespMovil); //VERIFICA SI TIENE VIAJE QTA
          end;
        end;

        if Length(vDespAuxS) = 0 then
        begin
          vDespAuxS := '{}';
        end;

        //Enviamos el JSOn con la respuesta
        AContext.Connection.IOHandler.WriteLn(vDespAuxS);

        if vDespAuxS.Length > 2 then
          Log('Viaje -> '+IntToStr(vDespMovil)+' -> '+vDespAuxS,2);
     end;
  3: begin //VIAJE ACEPTADO - QTH FINAL
       //Armamos el JSON para enviar EL QTH FINAL como respuesta
       vDespJSONRespuestaFinal  := TlkJSONobject.Create;
       try
         //vDespIdViaje := StrToInt(vartostr(vDespJSONDato.Field['viajeaceptado'].Field['idviaje'].Value));
         vDespIdViajeEnUso := idviajeenusoInt(vDespIdViaje);
         if vDespIdViajeEnUso > 0 then
         begin
           //vDomicilio := Trim(PendienteCalle(vIdViajeEnUso))+' '+IntToStr(PendienteAltura(vIdViajeEnUso))+' '+PendientePisoDpto(vIdViajeEnUso);
           vDespDomicilio := ArmarDomicilioInt(vDespIdViajeEnUso);
           vDespObservaciones := Trim(PendienteInfoTmpInt(vDespIdViajeEnUso))+' '+trim(PendienteObservacionesInt(vDespIdViajeEnUso));
           vDespViajeLat := Trim(PendienteLatInt(vDespIdViajeEnUso));
           vDespViajeLng := Trim(PendienteLngInt(vDespIdViajeEnUso));
         end
         else
         begin
           vDespDomicilio := 'VIAJE CANCELADO';
           vDespObservaciones := '';
           vDespViajeLat := '';
           vDespViajeLng := '';
         end;

         //DATOS DEL VIAJE
         vDespJSONRespuestaFinal.Add('domicilio'    , vDespDomicilio);
         vDespJSONRespuestaFinal.Add('observaciones', vDespObservaciones);
         vDespJSONRespuestaFinal.Add('lat', vDespViajeLat);
         vDespJSONRespuestaFinal.Add('lng', vDespViajeLng);
         vDespJSONRespuestaFinal.Add('idviaje', IntToStr(vDespIdViaje));

         //Enviamos el JSOn con la respuesta
         AContext.Connection.IOHandler.WriteLn(TlkJSON.GenerateText(vDespJSONRespuestaFinal));
         logInt('Viaje Aceptado -> '+IntToStr(vDespMovil)+' -> '+TlkJSON.GenerateText(vDespJSONRespuestaFinal),2);

         //Marcamos el viaje como aceptado
         DatoViajesInt(True,1, vDespIdViaje);   //MARCAMOS EL VIAJE COMO ACEPTADO
       finally
         FreeAndnil(vDespJSONRespuestaFinal);
       end;
     end;
  4: begin //VIAJE RECHAZADO
       //vDespIdViaje := StrToInt(vartostr(vDespJSONDato.Field['viajerechazado'].Field['idviaje'].Value));
       vDespIdViajeEnUso := idviajeenusoInt(vDespIdViaje);

       //Marcamos el viaje como rechazado
       DatoViajesInt(True,2, vDespIdViaje);   //MARCAMOS EL VIAJE COMO RECHAZADO

       logInt('Viaje Rechazado -> '+IntToStr(vDespMovil) ,2);
     end;
  5: begin //VIAJE TIME OUT
       //vDespIdViaje := StrToInt(vartostr(vDespJSONDato.Field['viajetimeout'].Field['idviaje'].Value));
       vDespIdViajeEnUso := idviajeenusoInt(vDespIdViaje);

       //Marcamos el viaje como timeout
       DatoViajesInt(True,3, vDespIdViaje);   //MARCAMOS EL VIAJE COMO TIME OUT

       logInt('Viaje TimeOut -> '+IntToStr(vDespMovil) ,2);
     end;
  6: begin //HISTORIAL DE VIAJES
       vDespRespS := ViajesInt(vDespMovil);
       //Log('--> '+vRespS);
       AContext.Connection.IOHandler.WriteLn(vDespRespS);
     end;
  7: begin //ESTADO QAP / QRX DELMOVIL
       vDespRespS := ValidarMovilQRXInt(vDespMovil);
       AContext.Connection.IOHandler.WriteLn(vDespRespS)
     end;
  else
    begin
      LogInt('No trajo dato alguno... ',0)
    end;
  end;


  //---------------------------------------------------------------------------

end;
__________________
\_--> NoShY <--_/
Responder Con Cita