protected async override void OnAppearing() { base.OnAppearing(); activityIndicator.IsRunning = true; activityIndicator.IsVisible = true; EventoLogisticoBLL eventoBLL = new EventoLogisticoBLL(); var eventos = eventoBLL.SeleccionarEventosPendientesSincronizar(); var dataTemplate = new DataTemplate(typeof(TextCell)); dataTemplate.SetBinding(TextCell.TextProperty, "NombreEvento"); dataTemplate.SetBinding(TextCell.DetailProperty, "Detalles"); //var dataTemplate = new DataTemplate(typeof(PendienteSincronizarCustomCell)); //dataTemplate.SetBinding(PendienteSincronizarCustomCell.NombreTipoEventoProperty, "NombreTipoEvento"); //dataTemplate.SetBinding(PendienteSincronizarCustomCell.NumeroManifiestoProperty, "NumeroManifiesto"); //dataTemplate.SetBinding(PendienteSincronizarCustomCell.FechaEventoProperty, "FechaEvento"); var eventosTexto = eventos.Select(e => new { NombreEvento = e.NombreTipoEvento + " IdApp: " + e.IdApp, Detalles = (e.FechaEvento.HasValue ? e.FechaEvento.Value.ToString("dd.MM.yyyy HH:mm a") : "--") + " , NumeroManifiesto: " + e.NumeroManifiesto.ToString(), }).ToList(); lvPendientesSincronizar.ItemsSource = eventosTexto; lvPendientesSincronizar.ItemTemplate = dataTemplate; activityIndicator.IsRunning = false; activityIndicator.IsVisible = false; }
async void btnConsultarPorNumeroEntrega_Clicked(object sender, EventArgs e) { if (txtNumeroEntrega.Text == null || txtNumeroEntrega.Text.IndexOf(".") != -1) { DisplayAlert("Alerta", "Ingrese Número Entrega válido", "Aceptar"); } else { try { EventoLogisticoBLL eventoBLL = new EventoLogisticoBLL(); var remesasPorEntrega = new List <RemesasPorNumeroEntrega>(); remesasPorEntrega = await eventoBLL.SeleccionarRemesaPorNumeroEntrega(Int32.Parse(txtNumeroEntrega.Text)); //var eventosBodega = remesasPorEntrega; lvEventosBodega.ItemsSource = remesasPorEntrega; } catch (Exception ex) { DisplayAlert("Error", ex.StackTrace, "Aceptar"); } } }
public HistorialEventosView() { InitializeComponent(); Title = "Historial eventos"; ThemeManager.ThemeName = Themes.Light; EventoLogisticoBLL eventoBLL = new EventoLogisticoBLL(); var eventos = eventoBLL.SeleccionarEventosLogisticos(numeroManifiesto: null, estado: null, codigoTipoEvento: null, consultaLocal: true); if (eventos != null) { foreach (EventoLogistico evento in eventos) { if (evento.Sincronizado == false) { evento.NombreTipoEvento = "* " + evento.NombreTipoEvento; } } FormatCondition condition = new FormatCondition(); condition.FieldName = "Estado"; condition.Expression = "[ErrorSincronizacion].Length > 0"; condition.PredefinedFormatName = "LightRedFillWithDarkRedText"; condition.ApplyToRow = false; grid.FormatConditions.Add(condition); eventos = eventos.OrderByDescending(e => e.FechaEvento).ToList(); grid.ItemsSource = eventos; //grid.SelectionChanged += (s, e) => { // ((Navigation.PushModalAsync(new Logistica.DetalleEventoView(119283)); // //DisplayAlert("Atención", "Ver detalles.", "Si", "No"); //}; } }
async void OnSelectionEvento(object sender, SelectedItemChangedEventArgs e) { if (e.SelectedItem == null) { return; //ItemSelected is called on deselection, which results in SelectedItem being set to null } var opcion = (TipoEventoLogistico)e.SelectedItem; //DisplayAlert("Evento seleccionado", e.SelectedItem.ToString(), "Ok"); if (opcion.CodigoEvento != 24) { if (await ParametrosSistema.isOnline == false) { //Se valida si el evento seleccionado se permite registras offline if (opcion.RegistrarOffLine == false) { await DisplayAlert("Atención", "No es posible registrar el evento " + opcion.NombreEvento + " sin conexión a Internet.", "Aceptar"); ((ListView)sender).SelectedItem = null; return; } } await Navigation.PushAsync(new Logistica.CrearEventoView(opcion.CodigoEvento, opcion.NombreEvento)); ((ListView)sender).SelectedItem = null; //uncomment line if you want to disable the visual selection state. } else { Util util = new Util(); bool?tercero = null; if (util.UsuarioTienePermiso("eventoslogisticosterceros")) { tercero = true; } EventoLogisticoBLL eventoBLL = new EventoLogisticoBLL(); List <TipoEventoLogistico> eventos = new List <TipoEventoLogistico>(); //Si es la opcion de otros if (viajeActivo != null) { eventos = await eventoBLL.SeleccionarEventosTipoOtros(viajeActivo.NumeroTransporte, aplicaTerceros : tercero); } else { eventos = await eventoBLL.SeleccionarEventosTipoOtros(0, aplicaTerceros : tercero); } //var dataTemplate = new DataTemplate(typeof(TextCell)); //dataTemplate.SetBinding(TextCell.TextProperty, "NombreEvento"); lvMenuEventos.ItemsSource = eventos; //lvMenuEventos.ItemTemplate = dataTemplate; //Navigation.PushAsync(new Logistica.MenuEventosView(opcion.CodigoEvento)); //((ListView)sender).SelectedItem = null; //uncomment line if you want to disable the visual selection state. } }
protected async override void OnAppearing() { base.OnAppearing(); IsBusy = true; EventoLogisticoBLL eventoBLL = new EventoLogisticoBLL(); var tiposEventos = new List <TipoEventoLogistico>(); tiposEventos = await eventoBLL.SeleccionarEventosLogisticosBodega(); lvMenuEventos.ItemsSource = tiposEventos; IsBusy = false; }
private async Task <bool> SincronizarEventosLogisticos() { EventoLogisticoBLL eventosBLL = new EventoLogisticoBLL(); var eventosPendientes = eventosBLL.SeleccionarEventosPendientesSincronizar(); if (eventosPendientes != null && eventosPendientes.Count > 0) { eventosPendientes = eventosPendientes.OrderBy(e => e.FechaEvento).ToList(); List <RespuestaProcesoEventoLogistico> respuestas = new List <RespuestaProcesoEventoLogistico>(); foreach (EventoLogistico evento in eventosPendientes) { respuestas.Add(await eventosBLL.GuardarEventoLogistico(evento)); } if (respuestas != null) { } } return(true); }
public async Task <RespuestaProceso> CrearBaseDeDatos() { RespuestaProceso respuesta = new RespuestaProceso(); respuesta.ProcesadoCorrectamente = true; List <Type> tablasRequeridas = new List <Type>(); //Se verifica si el usuario debe tener base de datos local tablasRequeridas.Add(typeof(Entities.Operaciones.Agencia)); if (ParametrosSistema.PermisosUsuarioAlmacenado.Count(p => p.NombreOpcion.ToLower() == "registrar_evento_logistico" || p.NombreOpcion.ToLower() == "eventoslogisticosterceros") > 0) { tablasRequeridas.Add(typeof(Entities.Operaciones.TipoEventoLogistico)); tablasRequeridas.Add(typeof(Entities.Operaciones.EventoLogistico)); tablasRequeridas.Add(typeof(Entities.Operaciones.CampoEventoLogistico)); tablasRequeridas.Add(typeof(Entities.Operaciones.ItemCampoEventoLogistico)); tablasRequeridas.Add(typeof(Entities.Operaciones.SubItemCampoEventoLogistico)); tablasRequeridas.Add(typeof(Entities.Operaciones.JerarquiaTipoEventoLogistico)); //tablasRequeridas.Add(typeof(Entities.Operaciones.RemesasPorNumeroEntrega)); tablasRequeridas.Add(typeof(Entities.Operaciones.HistorialActivacionManifiesto)); tablasRequeridas.Add(typeof(Entities.Comercial.Entrega)); tablasRequeridas.Add(typeof(Entities.IT.ConfiguracionApp)); } if (tablasRequeridas.Count > 0) { DatabaseDAO dao = new DatabaseDAO(); bool esNueva = false; if (!DependencyService.Get <ISQLite>().ExisteBaseDeDatos() || true) { dao.CrearBaseDeDatos(tablasRequeridas); esNueva = true; } if (esNueva) { if (await Common.ParametrosSistema.isOnline) { try { //Se llenan las tablas maestras EventoLogisticoBLL eventoBLL = new EventoLogisticoBLL(); bool?aplicaTerceros = null; if (ParametrosSistema.PermisosUsuarioAlmacenado.Count(p => p.NombreOpcion.ToLower() == "eventoslogisticosterceros") > 0) { aplicaTerceros = true; } foreach (Type tabla in tablasRequeridas) { switch (tabla.Name) { case "TipoEventoLogistico": var tiposEventos = await eventoBLL.SeleccionarTiposEventoLogistico(consultaLocal : false, aplicaTerceros : aplicaTerceros); dao.GuardarRegistros(tiposEventos); break; case "EventoLogistico": if (!String.IsNullOrEmpty(ParametrosSistema.UsuarioActual)) { //Se consultan los ultimos eventos del usuario actual var eventos = await eventoBLL.SeleccionarEventosLogisticosUsuarioActual(); if (eventos != null) { dao.GuardarRegistros(eventos); } } break; case "CampoEventoLogistico": var camposTiposEventos = await eventoBLL.SeleccionarCamposPorEvento(null, consultaLocal : false); dao.GuardarRegistros(camposTiposEventos); break; case "ItemCampoEventoLogistico": var itemsCampoEventoLogistico = await eventoBLL.SeleccionarItemsPorCamposEvento(null, null, consultaLocal : false); dao.GuardarRegistros(itemsCampoEventoLogistico); break; case "SubItemCampoEventoLogistico": var subItemsCampoEventoLogistico = await eventoBLL.SeleccionarSubItemsPorCamposEvento(null, consultaLocal : false); dao.GuardarRegistros(subItemsCampoEventoLogistico); break; case "JerarquiaTipoEventoLogistico": var jerarquiaTiposEventosLogisticos = await eventoBLL.SeleccionarJerarquiaTipoEventosLogisticos(consultaLocal : false, aplicaTerceros : aplicaTerceros); dao.GuardarRegistros(jerarquiaTiposEventosLogisticos); break; case "HistorialActivacionManifiesto": var transportes = await eventoBLL.SeleccionarTransporteHabilitadoRegistroEventos(consultaLocal : false, tercero : aplicaTerceros); if (transportes != null && transportes.Count > 0) { Transporte transporte = transportes[0]; HistorialActivacionManifiesto historial = new HistorialActivacionManifiesto(); historial.Activo = true; historial.FechaActivacion = DateTime.Now; historial.NumeroManifiesto = transporte.NumeroTransporte; historial.Placa = transporte.Placa; historial.NumeroDocConductor = transporte.NumeroDocConductor.ToString(); historial.NombreRuta = transporte.NombreRuta; historial.UsuarioActivacion = ParametrosSistema.UsuarioActual; //Se busca localmente el evento de activación del transporte activo var eventosActivacionTransporte = eventoBLL.SeleccionarEventosLogisticos(transporte.NumeroTransporte, codigoTipoEvento: (int)TipoEventoLogisticoEnum.ActivarViaje, consultaLocal: true); if (eventosActivacionTransporte != null & eventosActivacionTransporte.Count > 0) { historial.FechaActivacion = eventosActivacionTransporte[0].FechaEvento; } HistorialActivacionManifiestoDAO historialActivacionDAO = new HistorialActivacionManifiestoDAO(); historialActivacionDAO.GuardarHistorialActivacionManifiesto(historial); //Se guardan las entregas del transporte if (transporte.Entregas != null && transporte.Entregas.Count > 0) { EntregaBLL entregaBLL = new EntregaBLL(); foreach (Entrega entrega in transporte.Entregas) { entregaBLL.GuardarEntrega(entrega); } } } break; case "Agencia": List <Agencia> agencias = new List <Agencia>(); agencias = CargarAgencias(); dao.GuardarRegistros(agencias); break; } } } catch (Exception ex) { respuesta.ProcesadoCorrectamente = false; respuesta.Respuesta = "Ocurrió un error configurando la aplicación."; } } else { respuesta.ProcesadoCorrectamente = false; respuesta.Respuesta = "Se necesita una conexión a Internet para que la aplicación pueda configurarse correctamente. Esto sólo se necesita la primera vez."; } } } return(respuesta); }
public async Task EjecutarSincronizacionAutomatica(System.Threading.CancellationToken token) { bool ejecutarNuevamente = true; TimeSpan frecuenciaEjecucionSincronizacion = TimeSpan.FromMinutes(5); EventoLogisticoBLL eventosBLL = new EventoLogisticoBLL(); var eventosPendientes = eventosBLL.SeleccionarEventosPendientesSincronizar(); if (eventosPendientes != null && eventosPendientes.Count > 0) { ejecutarNuevamente = true; } else { ejecutarNuevamente = false; } while (ejecutarNuevamente) { token.ThrowIfCancellationRequested(); if (await Common.ParametrosSistema.isOnline) { eventosPendientes = eventosBLL.SeleccionarEventosPendientesSincronizar(); if (eventosPendientes != null && eventosPendientes.Count > 0) { int totalRegistrosSincronizados = 0; try { List <RespuestaProcesoEventoLogistico> respuestas = new List <RespuestaProcesoEventoLogistico>(); foreach (EventoLogistico evento in eventosPendientes) { token.ThrowIfCancellationRequested(); respuestas.Add(await eventosBLL.GuardarEventoLogistico(evento)); totalRegistrosSincronizados++; var message = new TickedMessage { Message = ((decimal)totalRegistrosSincronizados / (decimal)eventosPendientes.Count).ToString() }; Xamarin.Forms.Device.BeginInvokeOnMainThread(() => { Xamarin.Forms.MessagingCenter.Send <TickedMessage>(message, "TickedMessage"); }); } } catch (Exception ex) { } finally { if (totalRegistrosSincronizados == eventosPendientes.Count) { ejecutarNuevamente = false; } else { ejecutarNuevamente = false; } } Xamarin.Forms.DependencyService.Get <INotificationService>().ShowLocalNotification("Sincronización automática", "Se han sincronizado " + eventosPendientes.Count + " registros.", DateTime.Now); } else { //Si no existen registros pendientes por sincronizar se detiene la ejecución de esta función ejecutarNuevamente = false; } } else { ejecutarNuevamente = true; } await Task.Delay(Convert.ToInt32(frecuenciaEjecucionSincronizacion.TotalMilliseconds)); } }
protected async override void OnAppearing() { base.OnAppearing(); activityIndicator.IsRunning = true; activityIndicator.IsVisible = true; ScrollView scrollView = new ScrollView(); StackLayout stackPanel = new StackLayout(); scrollView.Content = stackPanel; stackPanel.Padding = new Thickness(10); EventoLogisticoBLL eventoLogisticosBLL = new EventoLogisticoBLL(); EventoLogistico evento = new EventoLogistico(); evento = eventoLogisticosBLL.SeleccionarEventosLogisticoporID(_idEvento); if (evento != null) { List <CampoEventoLogistico> camposTipoEvento = await eventoLogisticosBLL.SeleccionarCamposPorEvento(evento.IdTipoEvento, consultaLocal : true); if (camposTipoEvento != null) { List <TipoEventoLogistico> tiposEventos = await eventoLogisticosBLL.SeleccionarTiposEventoLogistico(consultaLocal : true); TipoEventoLogistico tipoEvento = (from t in tiposEventos where t.CodigoEvento == evento.IdTipoEvento select t).FirstOrDefault(); if (tipoEvento != null) { Label lblNombreEvento = new Label(); lblNombreEvento.Text = tipoEvento.NombreEvento; lblNombreEvento.FontSize = 30; stackPanel.Children.Add(lblNombreEvento); } Label lblTituloFechaEvento = new Label(); lblTituloFechaEvento.Text = "Fecha Evento"; lblTituloFechaEvento.FontSize = 25; stackPanel.Children.Add(lblTituloFechaEvento); Label lblFechaEvento = new Label(); lblFechaEvento.Text = evento.FechaEvento.Value.ToString(); lblFechaEvento.FontSize = 20; stackPanel.Children.Add(lblFechaEvento); Label lblTituloNumeroManifiesto = new Label(); lblTituloNumeroManifiesto.Text = "Número Manifiesto"; lblTituloNumeroManifiesto.FontSize = 25; stackPanel.Children.Add(lblTituloNumeroManifiesto); Label lblNumeroViaje = new Label(); lblNumeroViaje.Text = evento.NumeroManifiesto.ToString(); lblNumeroViaje.FontSize = 20; stackPanel.Children.Add(lblNumeroViaje); Label tituloCampo; Label valorCampo; foreach (CampoEventoLogistico campo in camposTipoEvento) { tituloCampo = new Label(); valorCampo = new Label(); tituloCampo.Text = campo.TituloCampoEventoLogistico; tituloCampo.FontSize = 25; valorCampo.Text = Util.ObtenerValorDinamicamente(evento, campo.NombreCampoEventoLogistico); valorCampo.FontSize = 20; stackPanel.Children.Add(tituloCampo); stackPanel.Children.Add(valorCampo); } if (!string.IsNullOrEmpty(evento.ErrorSincronizacion)) { //Label lblTituloError = new Label(); //lblTituloError.Text = "Resultado Evento"; //stackPanel.Children.Add(lblTituloError); Label lblError = new Label(); lblError.Text = evento.ErrorSincronizacion; lblError.TextColor = Color.Red; stackPanel.Children.Add(lblError); } Content = scrollView; } } activityIndicator.IsRunning = false; activityIndicator.IsVisible = false; }
protected async override void OnAppearing() { base.OnAppearing(); IsBusy = true; btnVerDocumentos.IsVisible = true; //activityIndicator.IsRunning = true; //activityIndicator.IsVisible = true; //********************************************** CREAR TABLA HISTORIALACTIVACION MANIFIESTO *******************************************// DatabaseDAO dao = new DatabaseDAO(); EventoLogisticoBLL eventoBLL = new EventoLogisticoBLL(); if (await ParametrosSistema.isOnline) { using (var db = DependencyService.Get <ISQLite>().GetConnection()) { db.DropTable <HistorialActivacionManifiesto>(); db.DropTable <Entrega>(); db.CreateTable(typeof(Entities.Operaciones.HistorialActivacionManifiesto)); db.CreateTable(typeof(Entities.Comercial.Entrega)); } bool?aplicaTerceros = null; if (ParametrosSistema.PermisosUsuarioAlmacenado.Count(p => p.NombreOpcion.ToLower() == "eventoslogisticosterceros") > 0) { aplicaTerceros = true; } var transportes = await eventoBLL.SeleccionarTransporteHabilitadoRegistroEventos(consultaLocal : false, tercero : aplicaTerceros); if (transportes != null && transportes.Count > 0) { Transporte transporte = transportes[0]; HistorialActivacionManifiesto historial = new HistorialActivacionManifiesto(); historial.Activo = true; historial.FechaActivacion = DateTime.Now; historial.NumeroManifiesto = transporte.NumeroTransporte; historial.Placa = transporte.Placa; historial.NumeroDocConductor = transporte.NumeroDocConductor.ToString(); historial.NombreRuta = transporte.NombreRuta; historial.UsuarioActivacion = ParametrosSistema.UsuarioActual; //Se busca localmente el evento de activación del transporte activo var eventosActivacionTransporte = eventoBLL.SeleccionarEventosLogisticos(transporte.NumeroTransporte, codigoTipoEvento: (int)TipoEventoLogisticoEnum.ActivarViaje, consultaLocal: true); if (eventosActivacionTransporte != null & eventosActivacionTransporte.Count > 0) { historial.FechaActivacion = eventosActivacionTransporte[0].FechaEvento; } HistorialActivacionManifiestoDAO historialActivacionDAO = new HistorialActivacionManifiestoDAO(); historialActivacionDAO.GuardarHistorialActivacionManifiesto(historial); //Se guardan las entregas del transporte if (transporte.Entregas != null && transporte.Entregas.Count > 0) { EntregaBLL entregaBLL = new EntregaBLL(); foreach (Entrega entrega in transporte.Entregas) { try { entregaBLL.GuardarEntrega(entrega); } catch (Exception ex) { DisplayAlert("Error", ex.Message, "Aceptar"); } } } } } //********************************************** FIN CREAR TABLA HISTORIALACTIVACION MANIFIESTO *******************************************// //EventoLogisticoBLL eventoBLL = new EventoLogisticoBLL(); var tiposEventos = new List <TipoEventoLogistico>(); //Se verifica si hay eventos pendientes por sincronizar var eventosPendientes = eventoBLL.SeleccionarEventosPendientesSincronizar(); if (eventosPendientes != null && eventosPendientes.Count > 0 && await ParametrosSistema.isOnline) { IsBusy = false; await DisplayAlert("Atención", "No puede registrar nuevos eventos porque tiene " + eventosPendientes.Count + " eventos pendientes por sincronizar. Debe ir al menú 'Sincronización' para realizar la sincronización manualmente.", "Aceptar"); } else { Util util = new Util(); bool?tercero = null; if (util.UsuarioTienePermiso("eventoslogisticosterceros")) { tercero = true; } List <Transporte> transportesHabilitadosRegistroEventos = new List <Transporte>(); transportesHabilitadosRegistroEventos = await eventoBLL.SeleccionarTransporteHabilitadoRegistroEventos(!await ParametrosSistema.isOnline, tercero); if (transportesHabilitadosRegistroEventos != null && transportesHabilitadosRegistroEventos.Count > 0) { viajeActivo = transportesHabilitadosRegistroEventos[0]; } if (viajeActivo == null && tercero == true) { DisplayAlert("Alerta", "Ud no posee un viaje activo, por lo tando no puede registrar eventos.", "Aceptar"); await Navigation.PushAsync(new HomeView()); } else { if (tercero.HasValue && tercero.Value) { if (viajeActivo != null) { try { tiposEventos = await eventoBLL.SeleccionarSiguienteEventoporManifiesto(viajeActivo.NumeroTransporte, consultaLocal : !await ParametrosSistema.isOnline); lblNumeroViajeActivo.Text = viajeActivo.NumeroTransporte.ToString(); lblRuta.Text = viajeActivo.NombreRuta; } catch (Exception ex) { DisplayAlert("Alerta", "Ha ocurrido un inconveniente, por favor ingrese nuevamente.", "Aceptar"); } } else { tiposEventos = await eventoBLL.SeleccionarSiguienteEventoporManifiesto(0, consultaLocal : !await ParametrosSistema.isOnline); lblNumeroViajeActivo.Text = "Sin viaje activo"; lblNumeroViajeActivo.TextColor = Color.Red; btnVerDocumentos.IsVisible = false; } } else { TransporteBLL transporteBLL = new TransporteBLL(); HistorialActivacionManifiesto historial = transporteBLL.SeleccionarHistorialManifiestoActivoPorConductor(ParametrosSistema.NumeroIdentificacionUsuarioActual); if (historial != null) { tiposEventos = await eventoBLL.SeleccionarSiguienteEventoporManifiesto(historial.NumeroManifiesto, consultaLocal : !await ParametrosSistema.isOnline); lblNumeroViajeActivo.Text = historial.NumeroManifiesto.ToString(); lblRuta.Text = historial.NombreRuta; } else { tiposEventos = await eventoBLL.SeleccionarSiguienteEventoporManifiesto(0, consultaLocal : !await ParametrosSistema.isOnline); lblNumeroViajeActivo.Text = "Sin viaje activo"; lblNumeroViajeActivo.TextColor = Color.Red; btnVerDocumentos.IsVisible = false; } } //var dataTemplate = new DataTemplate(typeof(TextCell)); //dataTemplate.SetBinding(TextCell.TextProperty, "NombreEvento"); lvMenuEventos.ItemsSource = tiposEventos; //lvMenuEventos.ItemTemplate = dataTemplate; IsBusy = false; //activityIndicator.IsRunning = false; //activityIndicator.IsVisible = false; } } }
// ILocationListener is a way for the Service to subscribe for updates // from the System location Service public void OnLocationChanged(Android.Locations.Location location) { try { if (DependencyService.Get <ICredentialsService>().DoCredentialsExist()) { //LocationChanged(this, new LocationChangedEventArgs(location)); // This should be updating every time we request new location updates // both when teh app is in the background, and in the foreground Log.Debug(logTag, $"Latitude is {location.Latitude}"); Log.Debug(logTag, $"Longitude is {location.Longitude}"); Log.Debug(logTag, $"Altitude is {location.Altitude}"); Log.Debug(logTag, $"Speed is {location.Speed}"); Log.Debug(logTag, $"Accuracy is {location.Accuracy}"); Log.Debug(logTag, $"Bearing is {location.Bearing}"); Transporte viajeActivo = null; Util util = new Util(); bool?tercero = null; if (util.UsuarioTienePermiso("eventoslogisticosterceros")) { tercero = true; } EventoLogisticoBLL eventoBLL = new EventoLogisticoBLL(); List <Transporte> transportesHabilitadosRegistroEventos = new List <Transporte>(); Task.Run(async() => { transportesHabilitadosRegistroEventos = await eventoBLL.SeleccionarTransporteHabilitadoRegistroEventos(!await ParametrosSistema.isOnline, tercero); if (transportesHabilitadosRegistroEventos != null && transportesHabilitadosRegistroEventos.Count > 0) { viajeActivo = transportesHabilitadosRegistroEventos[0]; } if (viajeActivo != null) { //The Geocoder class retrieves a list of address from Google over the internet Geocoder geocoder = new Geocoder(Android.App.Application.Context); IList <Android.Locations.Address> addressList = null; Android.Locations.Address address = null; double lat = 0; double lon = 0; string _address = string.Empty; try { if (location.Latitude != 0) { addressList = geocoder.GetFromLocation(location.Latitude, location.Longitude, 1); address = addressList.FirstOrDefault(); _address = address.SubThoroughfare + " " + address.Thoroughfare + ", " + address.Locality + ", " + address.AdminArea + ", " + address.CountryCode; //_address = address. } lat = location.Latitude; lon = location.Longitude; } catch (Exception ex) { } //Se crea evento logistico para guardar la posicion del gps EventoLogistico evento = new EventoLogistico(); //Cero es solo reportar posicion evento.IdTipoEvento = 44; //Evento reportar posicion evento.Placa = viajeActivo.Placa; evento.NumeroManifiesto = viajeActivo.NumeroTransporte; evento.Latitud = (float)lat; evento.Longitud = (float)lon; evento.DescripcionPosicion = _address; evento.FechaEvento = DateTime.Now; evento.NumeroDocumentoConductor = viajeActivo.NumeroDocConductor.ToString(); await eventoBLL.GuardarEventoLogistico(evento); } }); //Log.Debug("TAG", "Funciona Inicio " + i + " long " + location.Latitude + " lat " + location.Longitude + " - " + _address); //else { // //Log.Debug("TAG", "Funciona Inicio Sin viaje activo " + i); //} } } catch { } }