// 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(); }
// 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); }; }