public async void GuardarPosicionVehiculoGPS(EventoLogistico evento)
        {
            RespuestaProcesoEventoLogistico respuesta = new RespuestaProcesoEventoLogistico();

            DataService.AppDataService ds = new DataService.AppDataService(ParametrosSistema.TokenUsuarioActual);
            await ds.RealizarPeticionApi <RespuestaProcesoEventoLogistico>("Evento/GuardarPosicionVehiculoGPS", DataService.TipoPeticionApi.Post, evento);
        }
        public async Task <RespuestaProcesoEventoLogistico> GuardarEventoLogistico(EventoLogistico evento)
        {
            RespuestaProcesoEventoLogistico respuesta = new RespuestaProcesoEventoLogistico();



            if (await ParametrosSistema.isOnline)
            {
                DataService.AppDataService ds = new DataService.AppDataService(ParametrosSistema.TokenUsuarioActual);
                respuesta = await ds.RealizarPeticionApi <RespuestaProcesoEventoLogistico>("Evento/GuardarEventoLogistico", DataService.TipoPeticionApi.Post, evento);

                evento.ID                  = respuesta.IdEvento;
                evento.Sincronizado        = true;
                evento.FechaSincronizacion = DateTime.Now;
                if (respuesta.ProcesadoCorrectamente == false)
                {
                    evento.Estado = "E";
                    evento.ErrorSincronizacion = respuesta.Respuesta;
                }
                else
                {
                    evento.Estado = "S";
                }
            }
            else
            {
                evento.Sincronizado = false;
                respuesta.ProcesadoCorrectamente = true;
                respuesta.Respuesta = "Se ha guardado el evento en la memoria interna del teléfono.";
            }

            //Se determina si se debe guardar el evento en la base de datos local
            EventoLogisticoDAO eventoDAO = new EventoLogisticoDAO();

            eventoDAO.GuardarEventoLogistico(evento);

            //Si es un evento de activación se debe registrar el manifiesto en el historial de activaciones
            if (evento.IdTipoEvento == (int)TipoEventoLogisticoEnum.ActivarViaje)
            {
                if (respuesta.ProcesadoCorrectamente == true)
                {
                    Transporte transporte = new Transporte();
                    HistorialActivacionManifiesto historial = new HistorialActivacionManifiesto();

                    historial.Sincronizado        = true;
                    historial.FechaSincronizacion = DateTime.Now;
                    historial.Activo            = true;
                    historial.FechaActivacion   = evento.FechaEvento;
                    historial.UsuarioActivacion = ParametrosSistema.UsuarioActual;
                    TransporteBLL transporteBLL = new TransporteBLL();
                    transporte = await transporteBLL.SeleccionarTransporte(evento.NumeroManifiesto);

                    //if (await ParametrosSistema.isOnline)
                    //{
                    //    historial.Sincronizado = true;
                    //    historial.FechaSincronizacion = DateTime.Now;

                    //    TransporteBLL transporteBLL = new TransporteBLL();
                    //    transporte = await transporteBLL.SeleccionarTransporte(evento.NumeroManifiesto);

                    //}
                    //else
                    //{
                    //    historial.Sincronizado = false;
                    //    transporte.NumeroDocConductor = Convert.ToInt32(ParametrosSistema.NumeroIdentificacionUsuarioActual);
                    //    transporte.NumeroTransporte = evento.NumeroManifiesto;
                    //}


                    //se guarda un registro en historial activación viaje
                    if (transporte != null)
                    {
                        historial.Placa = transporte.Placa;
                        historial.NumeroDocConductor = transporte.NumeroDocConductor.ToString();
                        historial.NombreRuta         = transporte.NombreRuta;
                        historial.NumeroManifiesto   = transporte.NumeroTransporte;
                        historial.ClaseTransporte    = transporte.ClaseTransporte;
                    }
                    else
                    {
                        historial.NumeroDocConductor = historial.UsuarioActivacion;
                    }
                    HistorialActivacionManifiestoDAO historialActivacionDAO = new HistorialActivacionManifiestoDAO();

                    //si en la bd local el conductor aun tiene un viaje activo, se elimina
                    HistorialActivacionManifiesto historialAnterior = historialActivacionDAO.SeleccionarHistorialManifiestoActivoPorConductor(evento.NumeroDocumentoConductor);
                    if (historialAnterior != null)
                    {
                        historialActivacionDAO.EliminarHistorialActivacionManifiesto(historialAnterior.NumeroManifiesto);
                    }

                    //se fuarda el registro de activacion viaje
                    historialActivacionDAO.GuardarHistorialActivacionManifiesto(historial);

                    //Se guardan las entregas del transporte
                    if (transporte != null && transporte.Entregas != null && transporte.Entregas.Count > 0)
                    {
                        EntregaBLL entregaBLL = new EntregaBLL();
                        foreach (Entrega entrega in transporte.Entregas)
                        {
                            entregaBLL.GuardarEntrega(entrega);
                        }
                    }
                }
                else if (evento.Sincronizado == true && evento.Estado == "E")
                {
                    //Si el evento se sincronizó pero devolvió error, se elimina el manifiesto del historial de activacion
                    HistorialActivacionManifiestoDAO historialActivacionDAO = new HistorialActivacionManifiestoDAO();
                    historialActivacionDAO.EliminarHistorialActivacionManifiesto(evento.NumeroManifiesto);
                }
            }
            else if (evento.IdTipoEvento == (int)TipoEventoLogisticoEnum.SuspenderViaje)
            {
                HistorialActivacionManifiestoBLL historialBLL = new HistorialActivacionManifiestoBLL();
                historialBLL.EliminarHistorialActivacionManifiesto(evento.NumeroManifiesto);
            }
            else if (evento.IdTipoEvento == (int)TipoEventoLogisticoEnum.ReanudarViaje)
            {
                Transporte transporte = new Transporte();
                HistorialActivacionManifiesto historial = new HistorialActivacionManifiesto();

                historial.Sincronizado        = true;
                historial.FechaSincronizacion = DateTime.Now;
                historial.Activo            = true;
                historial.FechaActivacion   = evento.FechaEvento;
                historial.UsuarioActivacion = ParametrosSistema.UsuarioActual;
                TransporteBLL transporteBLL = new TransporteBLL();
                transporte = await transporteBLL.SeleccionarTransporte(evento.NumeroManifiesto);

                if (transporte != null)
                {
                    historial.Placa = transporte.Placa;
                    historial.NumeroDocConductor = transporte.NumeroDocConductor.ToString();
                    historial.NombreRuta         = transporte.NombreRuta;
                    historial.NumeroManifiesto   = transporte.NumeroTransporte;
                    historial.ClaseTransporte    = transporte.ClaseTransporte;
                }
                else
                {
                    historial.NumeroDocConductor = historial.UsuarioActivacion;
                }
                HistorialActivacionManifiestoDAO historialActivacionDAO = new HistorialActivacionManifiestoDAO();

                //si en la bd local el conductor aun tiene un viaje activo, se elimina
                HistorialActivacionManifiesto historialAnterior = historialActivacionDAO.SeleccionarHistorialManifiestoActivoPorConductor(evento.NumeroDocumentoConductor);
                if (historialAnterior != null)
                {
                    historialActivacionDAO.EliminarHistorialActivacionManifiesto(historialAnterior.NumeroManifiesto);
                }

                //se guarda el registro de reanudación viaje
                historialActivacionDAO.GuardarHistorialActivacionManifiesto(historial);
            }
            else if (evento.IdTipoEvento == (int)TipoEventoLogisticoEnum.FinViaje)
            {
                HistorialActivacionManifiestoDAO historialActivacionDAO = new HistorialActivacionManifiestoDAO();
                var historialActivacion = historialActivacionDAO.SeleccionarHistorialActivacionManifiesto(evento.NumeroManifiesto);
                if (historialActivacion != null)
                {
                    if (evento.Sincronizado == false || respuesta.ProcesadoCorrectamente == true)
                    {
                        //Se debe marcar como finalizado el viaje
                        historialActivacion.Activo              = false;
                        historialActivacion.FechaInactivacion   = evento.FechaEvento;
                        historialActivacion.UsuarioInactivacion = evento.NumeroDocumentoConductor;
                        historialActivacionDAO.GuardarHistorialActivacionManifiesto(historialActivacion);
                    }
                    else if (evento.Sincronizado == true && evento.Estado == "E")
                    {
                        //Si el evento se sincronizó pero devolvió error, se elimina el manifiesto del historial de activacion
                        historialActivacion.Activo              = true;
                        historialActivacion.FechaInactivacion   = null;
                        historialActivacion.UsuarioInactivacion = null;
                        historialActivacionDAO.GuardarHistorialActivacionManifiesto(historialActivacion);
                    }
                }
            }
            return(respuesta);
        }