Пример #1
0
        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;
        }
Пример #2
0
        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");
                //};
            }
        }
Пример #4
0
        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.
            }
        }
Пример #5
0
        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;
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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;
        }
Пример #10
0
        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;
                }
            }
        }
Пример #11
0
        // 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 {
            }
        }