예제 #1
0
파일: Conecta.cs 프로젝트: Eomputer/SatApp
        //Constructor de petición al webservice
        //Se le pasa la url y el formato en que recibira los datos
        public Conecta()
        {
            //Estructura de protocolo para conexión segura
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;


            //Obtenemos la url donde se aloja el webservice
            RepositorySatApp DatosServidor = new RepositorySatApp();

            var Datos_Comunicacion = DatosServidor.GetAll <Conexiones>();

            if (Datos_Comunicacion != null)        //Cuando se instala la app por primera vez la tabla Conexiones no existe y devuelve
            {
                if (Datos_Comunicacion.Count != 0) //Una vez que esta instalada la app ya existe la tabla conexiones, pero solo entrará cuando existan datos.
                {
                    foreach (var l in Datos_Comunicacion)
                    {
                        Variables.ServerUrl = ("https://" + l.IP + ":" + l.Puerto + "/");
                    }

                    //Parametros de conexión. Si el server requiere conexion segura obtiene un certificado
                    Client = new HttpClient
                    {
                        BaseAddress = new Uri(Variables.ServerUrl)
                    };
                    Client.DefaultRequestHeaders.Accept.Clear();
                    Client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    Client.Timeout = TimeSpan.FromSeconds(300);
                }
            }
        }
예제 #2
0
        public PopupVarios(string _titulo)
        {
            InitializeComponent();

            titulo = _titulo;

            RepositorySatApp database = new RepositorySatApp();

            if (titulo.Equals("IVA"))
            {
                listado.ItemsSource = database.GetAll <Iva>();
            }
            else if (titulo.Equals("FORMA_PAGO"))
            {
                listado.ItemsSource = database.GetAll <Forma_Pago>();
            }
            database.CerrarConexion();
        }
예제 #3
0
        // Esta funcion permite enviar los partes cerrados al servidor
        public bool CompruebaTerminados()
        {
            bool resultado = false;

            List <SAT>        sat;
            List <SAT_Lineas> lineas;
            List <SAT_Equipo> equipo;

            RepositorySatApp BBDD = new RepositorySatApp();

            var valores = BBDD.GetAll <Valores_SAT>().FirstOrDefault();

            if (valores != null)
            {
                Variables.ArticuloVarios = valores.SAT_ArticuloVarios;
                Variables.RevisaParte    = valores.SAT_RevisarParteAPP;
            }

            if (Variables.RevisaParte == true)
            {
                sat = BBDD.SatRevisar <SAT>();
            }
            else
            {
                sat = BBDD.SatCerrado <SAT>();
            }

            if (sat.Count >= 1)
            {
                foreach (var parte in sat)
                {
                    lineas = BBDD.LineasSatCerrado <SAT_Lineas>(parte.N_Parte);
                    equipo = BBDD.EquipoSatCerrado <SAT_Equipo>(parte.Maquina);
                }
                resultado = true;
            }
            else
            {
                resultado = false;
            }

            return(resultado);
        }
예제 #4
0
        // En el constructor se colocan los datos de servidor y puerto en caso de que existan, ademas de
        // la activación de algunos componentes

        public Configuracion()
        {
            InitializeComponent();

            RepositorySatApp DatosServidor = new RepositorySatApp();
            var Datos_Comunicacion         = DatosServidor.GetAll <Conexiones>();

            if (Variables.ConfImpresora == true)
            {
                Servidor.IsEnabled         = false;
                Puerto.IsEnabled           = false;
                BtnSincroniza.IsEnabled    = false;
                BtnConfiguracion.IsEnabled = false;
            }

            if (Datos_Comunicacion != null)        //Cuando se instala la app por primera vez la tabla Conexiones no existe y devuelve.
            {
                if (Datos_Comunicacion.Count != 0) //Una vez que esta instalada la app ya existe la tabla conexiones, pero solo entrará cuando existan datos.
                {
                    Servidor.Text            = Datos_Comunicacion[0].IP;
                    Puerto.Text              = Datos_Comunicacion[0].Puerto;
                    BtnSincroniza.IsEnabled  = true;
                    BtnEliminaBBDD.IsEnabled = true;
                }
            }

            NavigationPage.SetHasBackButton(this, false);

            //Bluetooth = CrossBluetoothLE.Current;
            //Adaptador = CrossBluetoothLE.Current.Adapter;


            Lista = new ObservableCollection <IDevice>();
            DispositivosLista.ItemsSource = Lista;
            DatosServidor.CerrarConexion();
        }
예제 #5
0
        private async void BtnLogin_Clicked(object sender, EventArgs e)
        {
            if (!Conexion.AccesoInternet())//Verifica la conexión a Internet
            {
                await DisplayAlert("Conexión", "No tienes conexión a Internet", "OK");
            }
            else
            {
                try
                {
                    if (!string.IsNullOrEmpty(Usuario.Text) && (!string.IsNullOrEmpty(Pass.Text)))
                    {
                        Conecta userPass = new Conecta();

                        lblLoadingText.Text        = "Autentificando usuario...";
                        popupLoadingView.IsVisible = true;
                        Variables.CodigoPersonal   = Convert.ToInt32(Usuario.Text);
                        Variables.ClavePersonal    = Pass.Text;
                        await logotipo.RotateTo(360, 5000);

                        if (CargarDatos.IsToggled == true)                                             //Si el option esta activado. Entra
                        {
                            if (Variables.ServerUrl != null)                                           //Si ServerUrl esta vacío es la primera vez esta recién instalada
                            {
                                if (await userPass.Acredita(Convert.ToInt32(Usuario.Text), Pass.Text)) //Verifica la autenticación
                                {
                                    Variables.CodigoPersonal = Convert.ToInt32(Usuario.Text);
                                    Variables.ClavePersonal  = Pass.Text;

                                    popupLoadingView.IsVisible = false;

                                    // Comprueba si hay partes cerrados pendientes de enviar.
                                    if (CompruebaTerminados() == true)
                                    {
                                        await DisplayAlert("Aviso", "Hay partes cerrados pendientes de enviar. Envie los partes cerrados para poder descargar", "OK");

                                        await logotipo.RotateTo(360, 5000);

                                        popupLoadingView.IsVisible = true;
                                        await Navigation.PushModalAsync(new NavigationPage(new Principal_Listado()));
                                    }
                                    else
                                    {
                                        //Si las credenciales son correctas, todos los partes estan cerrados se procede a descarga completa o parcial.
                                        lblLoadingText.Text        = "Descargando datos...";
                                        popupLoadingView.IsVisible = true;
                                        await logotipo.RotateTo(360, 5000);

                                        //Cada vez que se loguea borra las tablas siguientes
                                        //Excepto cuando haya partes pendientes de enviar
                                        var enviadoapp = PartesSinEnviar();

                                        if (enviadoapp == false)
                                        {
                                            datos.BorrarSat <SAT>();
                                            datos.BorrarSatLineas <SAT_Lineas>();
                                            datos.BorrarSatEquipo <SAT_Equipo>();
                                            datos.BorrarClientes <Cliente>();
                                            datos.BorrarClienteMaquinas <Cliente_Maquina>();
                                            datos.BorrarDireccionCliente <Direccion_Cliente>();
                                            datos.BorrarMaquinas <Maquinas>();
                                        }

                                        //Recuperamos la configuración para bloquear o no la modificación del parte cuando se cierre
                                        var configuraciones = datos.GetAll <Conexiones>();
                                        foreach (var b in configuraciones)
                                        {
                                            Variables.BloqueaParte = b.Bloquea_Parte;
                                        }
                                        // Procede a descargar las tablas.
                                        SincronizarDatos(Convert.ToInt32(Usuario.Text), Pass.Text);
                                    }
                                }
                                else
                                {
                                    await DisplayAlert("Login", "!!! Las credenciales no son correctas !!!", "OK");

                                    lblLoadingText.Text = "";
                                }
                            }
                            else
                            {
                                await DisplayAlert("Aviso", "! Si es la primera vez que inicia sesión, configure servidor y puerto !", "OK");
                            }
                        }
                        else //Si el boton option esta desactivado. También Verifica la autenticación
                        {
                            if (Variables.ServerUrl != null) //Si ServerUrl esta vacío es la primera vez esta recién instalada
                            {
                                if (await userPass.Acredita(Convert.ToInt32(Usuario.Text), Pass.Text))
                                {
                                    var configuraciones = datos.GetAll <Conexiones>();

                                    foreach (var b in configuraciones)
                                    {
                                        Variables.BloqueaParte = b.Bloquea_Parte;
                                    }


                                    var valores = datos.GetAll <Valores_SAT>().FirstOrDefault();

                                    if (valores != null)    //Mientras no hayan datos en la DB se controla el error de null
                                    {
                                        Variables.ArticuloVarios = valores.SAT_ArticuloVarios;
                                        Variables.RevisaParte    = valores.SAT_RevisarParteAPP;
                                        Variables.CodigoPersonal = Convert.ToInt32(Usuario.Text);
                                    }


                                    //Muestra la vista de los partes.
                                    lblLoadingText.Text = "";
                                    await Navigation.PushModalAsync(new NavigationPage(new Principal_Listado()));
                                }
                                else
                                {
                                    await DisplayAlert("Login", "!!! Las credenciales no son correctas !!!", "OK");

                                    lblLoadingText.Text = "";
                                }
                            }
                            else
                            {
                                await DisplayAlert("Aviso", "Si es la primera vez que inicia sesion debe descargar los partes", "OK");
                            }
                        }
                    }
                    else
                    {
                        lblLoadingText.IsVisible = true;
                        await DisplayAlert("Login", "!!! Introduzca un usuario y su contraseña !!!", "OK");

                        lblLoadingText.Text = "";
                    }
                }
                catch (Exception ex)
                {
                    await DisplayAlert("Error", ex.Message, "OK");
                }
            }
        }
예제 #6
0
        /*
         * Realiza la busqueda de la impresora
         */
        public async void BusquedaDispositivo(object objeto, EventArgs E)
        {
            try
            {
                RepositorySatApp impresora = new RepositorySatApp();

                List <Conexiones> parametros = impresora.GetAll <Conexiones>();

                foreach (var pa in parametros) //Obtiene los datos de la impresora configurada
                {
                    mac = pa.Dispositivo;
                }

                if (mac == "No impresora")
                {
                    await Application.Current.MainPage.DisplayAlert("Aviso", "No hay impresoras configuradas", "OK");

                    ConfiguraImpresora();
                    return;
                }

                if (bluetooth.State == BluetoothState.On)
                {
                    popupLoadingView.IsVisible  = true;
                    lblLoadingText.Text         = "Enviando datos a la impresora...";
                    activityIndicator.IsRunning = true;
                    btnImprimir.IsEnabled       = false;

                    Lista.Clear();
                    adaptador.ScanTimeout = 10000;
                    adaptador.ScanMode    = ScanMode.Balanced;
                    int nvecesencontrado = 0; // Esta variable permite filtrar el numero de veces que encuentra el dispositivo. Aveces se bugea e imprime dos veces
                    adaptador.DeviceDiscovered += (obj, a) =>
                    {
                        Lista.Add(a.Device);

                        if (a.Device.NativeDevice.ToString().Equals(mac)) //Localiza la impresora que tiene configurada
                        {
                            dispositivo = a.Device as IDevice;
                            if (nvecesencontrado < 1) // Si el dispositivo ya lo ha encontrado no volvera a intentar conectarse una segunda vez
                            {
                                Autoconexion(dispositivo);
                                adaptador.StopScanningForDevicesAsync();
                                nvecesencontrado++;
                            }
                        }
                    };

                    if (!bluetooth.Adapter.IsScanning)
                    {
                        await adaptador.StartScanningForDevicesAsync();
                    }
                }

                if (dispositivo == null)
                {
                    Lista.Clear();
                    await Application.Current.MainPage.DisplayAlert("Aviso", "No se encuentra la impresora", "OK");

                    popupLoadingView.IsVisible  = false;
                    activityIndicator.IsRunning = false;
                    btnImprimir.IsEnabled       = true;
                }

                impresora.CerrarConexion();
            }
            catch (Exception s)
            {
                Console.WriteLine(s.Message);
            }
        }