Esempio n. 1
0
        // Método personalizado que inicializa
        // los componentes de la página
        void InitComponents()
        {
            // Posiciona el cursor
            Entry_CodeBars.Focus();
            // Seteamos las propiedades de la página
            BackgroundColor = Constants.BackgroundColor;
            Unidades_Pistoleadas.BackgroundColor = Color.FromHex("00549F");
            Unidades_Faltantes.BackgroundColor   = Color.FromHex("00549F");
            Total_Unidades.BackgroundColor       = Color.FromHex("00549F");
            // Desactivamos el spinner de carga
            ActivitySpinner.IsVisible = false;
            // Desabilitamos todas las entradas
            // de texto menos la primera
            Entry_Alto.IsEnabled  = false;
            Entry_Ancho.IsEnabled = false;
            Entry_Largo.IsEnabled = false;
            Entry_Peso.IsEnabled  = false;
            // Verificamos la conexión a internet
            CheckConnectivity();
            // Al oprimir enter posiciona el cursor
            // en la siguiente entrada de texto
            Entry_CodeBars.Completed += async(s, e) =>
            {
                // Función que verifica que exista el código de barras
                await VerifyCodeBars();
            };
            Entry_Largo.Completed += async(s, e) =>
            {
                try
                {
                    if (Convert.ToDouble(Entry_Largo.Text) > 0)
                    {
                        // Esperamos medio segundo
                        await Task.Factory.StartNew(() => {
                            // Habilitamos el siguiente campo
                            Entry_Alto.IsEnabled = true;
                        });

                        await Task.Delay(500);

                        // Posicionamos el cursor
                        Entry_Alto.Focus();
                    }
                    else
                    {
                        var response = await DisplayAlert("Error de campos!", "Primero debe digitar el largo en centímetros.", "OK", "CANCEL");

                        // Verificamos la respuesta
                        if (response)
                        {
                            // Posicionamos el cursor
                            Entry_Largo.Focus();
                        }
                    }
                }
                catch (Exception er)
                {
                    // Imprimirmos el error
                    Debug.WriteLine(er);
                    // Limpiamos la caja de texto
                    Entry_Largo.Text = "";
                    // Posicionamos el cursor
                    Entry_Largo.Focus();
                }
            };
            Entry_Alto.Completed += async(s, e) =>
            {
                try
                {
                    if (Convert.ToDouble(Entry_Alto.Text) > 0)
                    {
                        // Esperamos medio segundo
                        await Task.Factory.StartNew(() => {
                            // Habilitamos el siguiente campo
                            Entry_Ancho.IsEnabled = true;
                        });

                        await Task.Delay(500);

                        // Posicionamos el cursor
                        Entry_Ancho.Focus();
                    }
                    else
                    {
                        var response = await DisplayAlert("Error de campos!", "Primero debe digitar la altura en centímetros.", "OK", "CANCEL");

                        // Verificamos la respuesta
                        if (response)
                        {
                            // Posicionamos el cursor
                            Entry_Alto.Focus();
                        }
                    }
                }
                catch (Exception er)
                {
                    // Imprimirmos el error
                    Debug.WriteLine(er);
                    // Limpiamos la caja de texto
                    Entry_Alto.Text = "";
                    // Posicionamos el cursor
                    Entry_Alto.Focus();
                }
            };
            Entry_Ancho.Completed += async(s, e) =>
            {
                try
                {
                    if (Convert.ToDouble(Entry_Ancho.Text) > 0)
                    {
                        // Esperamos medio segundo
                        await Task.Factory.StartNew(() => {
                            // Habilitamos el siguiente campo
                            Entry_Peso.IsEnabled = true;
                        });

                        await Task.Delay(500);

                        // Posicionamos el cursor
                        Entry_Peso.Focus();
                        // Obtenemos el valor de el largo, alto y ancho de la unidad
                        double largo_unidad = Convert.ToDouble(Entry_Largo.Text);
                        double alto_unidad  = Convert.ToDouble(Entry_Alto.Text);
                        double ancho_unidad = Convert.ToDouble(Entry_Ancho.Text);
                        // Calculamos el volumen de la unidad en base a su alto y ancho
                        double volumen_unidad = ((largo_unidad * alto_unidad * ancho_unidad) / 1000000) * 400;
                        // Asignamos el valor del volumen
                        massiveCubic.Volumen = volumen_unidad;
                    }
                    else
                    {
                        var response = await DisplayAlert("Error de campos!", "Primero debe digitar el ancho en centímetros.", "OK", "CANCEL");

                        // Verificamos la respuesta
                        if (response)
                        {
                            // Posicionamos el cursor
                            Entry_Ancho.Focus();
                        }
                    }
                }
                catch (Exception er)
                {
                    // Imprimirmos el error
                    Debug.WriteLine(er);
                    // Limpiamos la caja de texto
                    Entry_Ancho.Text = "";
                    // Posicionamos el cursor
                    Entry_Ancho.Focus();
                }
            };
            Entry_Peso.Completed += async(s, e) =>
            {
                // Abrimos la vista de la cámara del dispositivo
                await OpenCameraAsync(s, e);
            };
            Btn_ClearRows.Clicked += (s, e) =>
            {
                // Inicializamos los inputs
                InputsInit();
            };
            Btn_CaptureNewPhoto.Clicked += async(s, e) =>
            {
                // Abrimos la vista de la cámara del dispositivo
                await OpenCameraAsync(s, e);
            };
            // Evento que el escaner de código de barras
            Btn_ScannerCodeBars.Clicked += (s, e) =>
            {
                ScanningPage(s, e);
            };
        }
Esempio n. 2
0
        // Método personalizado que inicializa
        // los componentes de la página
        void InitComponents()
        {
            // Posiciona el cursor
            Entry_CodeBars.Focus();
            // Seteamos las propiedades de la página
            BackgroundColor = Constants.BackgroundColor;
            // Desactivamos el spinner de carga
            ActivitySpinner.IsVisible = false;
            // Desabilitamos todas las entradas de texto menos la primera
            Entry_Alto.IsEnabled  = false;
            Entry_Ancho.IsEnabled = false;
            Entry_Largo.IsEnabled = false;
            Entry_Peso.IsEnabled  = false;
            Entry_Peso.IsEnabled  = false;
            // Verificamos la conexión a internet
            CheckConnectivity();
            // Capturamos el evento del botón de tomar la foto
            Btn_CapturePhoto.Clicked += async(sender, args) =>
            {
                // Se inicializa el plugin
                await CrossMedia.Current.Initialize();

                // Validamos que existan los permisos necesarios
                // para poder usar la cámara del dispositivo
                var hasPermission = await Utils.Utils.CheckPermissions(Permission.Camera);

                if (!hasPermission)
                {
                    return;
                }

                if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
                {
                    await DisplayAlert("No hay Cámara", "La Cámara del dispositivo no se encuentra disponible!", "OK");

                    return;
                }
                try
                {
                    var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
                    {
                        PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium,
                        Directory = "ImagesCubic",
                        Name      = "cubic_mobile_" + Entry_CodeBars.Text + ".png"
                    });

                    if (file == null)
                    {
                        return;
                    }

                    await DisplayAlert("Ubicación del archivo: ", file.Path, "OK");
                }
                catch //(Exception ex)
                {
                    // Xamarin.Insights.Report(ex);
                    // await DisplayAlert("Uh oh", "Something went wrong, but don't worry we captured it in Xamarin Insights! Thanks.", "OK");
                }
            };
            // Al oprimir enter posiciona el cursor
            // en la siguiente entrada de texto
            Entry_CodeBars.Completed += async(s, e) =>
            {
                // Validamos que haya digitado el código de barras
                if (!String.IsNullOrWhiteSpace(Entry_CodeBars.Text))
                {
                    // Verificamos que exista conexión a internet
                    if (Constants.hasInternet)
                    {
                        // Creamos un hilo de ejecución para consumir el servicio del login
                        Device.BeginInvokeOnMainThread(async() =>
                        {
                            // Mostramos el spinner de carga
                            ActivitySpinner.IsVisible = true;
                            // Consumimos el servicio de autenticación de Solex
                            var result = await App.RestClient.GetExistsBarCode(Entry_CodeBars.Text);
                            // Verificamos que el servicio haya devuelto una respuesta
                            if (result != null)
                            {
                                if (result.IsSuccess)
                                {
                                    // Habilitamos los campos de medidas
                                    Entry_Alto.IsEnabled  = true;
                                    Entry_Ancho.IsEnabled = true;
                                    Entry_Largo.IsEnabled = true;
                                    Entry_Peso.IsEnabled  = true;
                                    // Posicionamos el cursor
                                    Entry_Alto.Focus();
                                    // Verificamos el número de unidades de la guía
                                    if (result.CodError > 1)
                                    {
                                        // Mostramos la cantidad de unidades de la guía
                                        Count_Units.Text = "La guía contiene " + result.CodError + " unidades.";
                                    }
                                    else
                                    {
                                        // Mostramos el mensaje que indica que la guía solo contiene una unidad
                                        Count_Units.Text = "La guía contiene una sola unidad.";
                                    }
                                    // Mostramos el mensaje
                                    Count_Units.IsVisible = true;
                                }
                                else
                                {
                                    // Mostramos el error de Solex
                                    await DisplayAlert("Respuesta de Solex", result.Error, "OK");
                                    // Limpiamos la caja de texto
                                    Entry_CodeBars.Text = "";
                                    // Posicionamos el cursor
                                    Entry_CodeBars.Focus();
                                }
                            }
                            else
                            {
                                // Mostramos el mensaje que devuelve Solex en caso de que algo esté mal
                                // con el usuario que está intentando ingresar
                                await DisplayAlert("Mensaje Informativo", "Ocurrió un error al intentar enviar las medidas", "OK");
                                // Limpiamos la caja de texto
                                Entry_CodeBars.Text = "";
                                // Posicionamos el cursor
                                Entry_CodeBars.Focus();
                            }
                            // Desabilitamos el spinner de carga
                            ActivitySpinner.IsVisible = false;
                        });
                    }
                    else
                    {
                        await DisplayAlert("Error de conexión!", "No se encuentra una conexión estable a internet.", "OK");
                    }
                }
                else
                {
                    await DisplayAlert("Error de campos!", "Primero debe digitar el código de barras.", "OK");

                    Entry_CodeBars.Focus();
                }
            };
            Entry_Alto.Completed  += (s, e) => Entry_Ancho.Focus();
            Entry_Ancho.Completed += (s, e) => Entry_Largo.Focus();
            Entry_Largo.Completed += (s, e) => Entry_Peso.Focus();
        }
Esempio n. 3
0
        public async Task VerifyCodeBars()
        {
            try
            {
                // Validamos que haya digitado el código de barras
                if (!string.IsNullOrWhiteSpace(Entry_CodeBars.Text))
                {
                    // Verificamos que exista conexión a internet
                    if (Constants.hasInternet)
                    {
                        // Creamos un hilo de ejecución para consumir el servicio del login
                        Device.BeginInvokeOnMainThread(async() =>
                        {
                            // Ocultamos el botón de enviar datos
                            Btn_Send.IsVisible = false;
                            // Mostramos el spinner de carga
                            ActivitySpinner.IsVisible = true;
                            // Consumimos el servicio de autenticación de Solex
                            var result = await App.RestClient.GetExistsBarCode(Entry_CodeBars.Text);
                            // Verificamos que el servicio haya devuelto una respuesta
                            if (result != null)
                            {
                                // Verificamos que la respuesta sea afirmativa
                                if (result.Response.IsSuccess)
                                {
                                    // Habilitamos el siguiente campo
                                    Entry_Largo.IsEnabled = true;
                                    // Total de unidades de la guía
                                    Entry_Unidades.Text = result.Unidades.Total.ToString();
                                    // Guardamos las unidades en el objeto
                                    imageCubic.Unidades = result.Unidades.Total;
                                    // Relación del número de unidades auditadas
                                    Entry_UnidadesA.Text = ((result.Unidades.Auditadas <= 0) ? 1 : result.Unidades.Auditadas) + "/" + result.Unidades.Total;
                                    // Posicionamos el cursor
                                    Entry_Largo.Focus();
                                }
                                else
                                {
                                    // Mostramos el error de Solex
                                    await DisplayAlert("Respuesta de Solex", result.Response.Error, "OK");
                                }
                            }
                            else
                            {
                                // Mostramos el mensaje que devuelve Solex en caso de que algo esté mal
                                // con el usuario que está intentando ingresar
                                await DisplayAlert("Mensaje Informativo", "Ocurrió un error al intentar verificar el código de barras.", "OK");
                            }
                            // Desabilitamos el spinner de carga
                            ActivitySpinner.IsVisible = false;
                        });
                    }
                    else
                    {
                        await DisplayAlert("Error de conexión!", "No se encuentra una conexión estable a internet.", "OK");
                    }
                }
                else
                {
                    await DisplayAlert("Error de campos!", "Primero debe digitar el código de barras.", "OK");

                    Entry_CodeBars.Focus();
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Error: " + ex.Message);
                await DisplayAlert("Ocurrió un error!", "Digite o pistolee nuevamente el código de barras de la unidad.", "OK");

                Entry_CodeBars.Text = "";
                Entry_CodeBars.Focus();
            }
        }