Пример #1
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;
                }
            }
        }
Пример #2
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);
        }
        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);
        }