Exemple #1
0
        public async void CapturePhotoAsync(object sender, EventArgs e)
        {
            try
            {
                if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
                {
                    await DisplayAlert("No hay cámara", "La cámara no se encuentra disponible", "OK");

                    return;
                }

                var lastImage = App.ImageGuiaDatabase.GetLastImageGuia();

                int id = (lastImage != null) ? (lastImage.Id + 1) : 1;

                string fileName = guiaSelected.GuiaNumero + "-" + id;

                var _mediaFile = await CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions
                {
                    PhotoSize = PhotoSize.Small,
                    Directory = "ImagesGuias",
                    Name      = fileName + ".jpg"
                });

                if (_mediaFile == null)
                {
                    return;
                }

                // Mapeamos la imagen, para así poderla
                // asociar a su guía correspondiente
                ImageGuia imageGuia = new ImageGuia
                {
                    Path         = _mediaFile.AlbumPath,
                    Comment      = "",
                    RegisterDate = DateTime.Now,
                    Id_guia      = guiaSelected.Id
                };

                // Guardamos el registro de la imagen en la BD
                App.ImageGuiaDatabase.SaveImageGuia(imageGuia);

                // Por último refrescamos el listado de imágenes
                RefreshList();
            }
            catch (Exception error)
            {
                Debug.WriteLine("Error: " + error.Message);
            }
        }
Exemple #2
0
 public ImageGuia GetLastImageGuia()
 {
     lock (locker)
     {
         ImageGuia lastImageGuia = new ImageGuia();
         try
         {
             lastImageGuia = (from i in database.Table <ImageGuia>() select i).ToList().OrderByDescending(i => i.Id).FirstOrDefault();
         }
         catch (SQLiteException e)
         {
             Debug.WriteLine("Error: " + e.Message);
         }
         return(lastImageGuia);
     }
 }
Exemple #3
0
 public int SaveImageGuia(ImageGuia imageGuia)
 {
     lock (locker)
     {
         try
         {
             if (imageGuia.Id > 0)
             {
                 database.Update(imageGuia);
                 return(imageGuia.Id);
             }
             else
             {
                 return(database.Insert(imageGuia));
             }
         }
         catch (SQLiteException e)
         {
             Debug.WriteLine("Error: " + e.Message);
             return(0);
         }
     }
 }
Exemple #4
0
        private async Task OpenCamera(object sender, EventArgs e)
        {
            try
            {
                if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
                {
                    await DisplayAlert("No hay cámara", "La cámara no se encuentra disponible", "OK");

                    return;
                }

                var lastImage = App.ImageGuiaDatabase.GetLastImageGuia();

                int id = (lastImage != null) ? (lastImage.Id + 1) : 1;

                string fileName = guiaSelected.GuiaNumero + "-" + id;

                MediaFile _mediaFile = await CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions
                {
                    PhotoSize = PhotoSize.Small,
                    Directory = "ImagesGuias",
                    Name      = fileName + ".jpg"
                });

                if (_mediaFile == null)
                {
                    return;
                }

                // Mapeamos la imagen, para así poderla
                // asociar a su guía correspondiente
                ImageGuia imageGuia = new ImageGuia
                {
                    Path         = _mediaFile.AlbumPath,
                    Comment      = "",
                    RegisterDate = DateTime.Now,
                    Id_guia      = guiaSelected.Id
                };

                // Convertimos la imagen en base 64
                var stream_file = _mediaFile.GetStream();
                var bytes       = new byte[stream_file.Length];
                await stream_file.ReadAsync(bytes, 0, (int)stream_file.Length);

                string base64 = Convert.ToBase64String(bytes);

                // Guardamos el registro de la imagen en la BD
                App.ImageGuiaDatabase.SaveImageGuia(imageGuia);

                // Actualizamos el valor de la imagen en bd local
                guiaSelected.Imagen = base64;

                // Llamamos al método que guarda los cambios de la guía en BD
                App.GuiaDatabase.SaveGuia(guiaSelected);

                // Guardamos y posterioremente enviamos la información al servicio
                await SaveChangesAsync();
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Error: " + ex);
            }
        }