protected async void ObtenerFoto()
{
//Se limita a 4 las fotos que se pueden tomar por activo
if (carouselList.Count < 4)
{
//Interface para ejecutar el proceso de la camara
var media = Resolver.Resolve();
string error = string.Empty;
//Proceso en espera que se ejecutara al aceptar la foto
await media.TakePhotoAsync(new CameraMediaStorageOptions { DefaultCamera = CameraDevice.Front, MaxPixelDimension = 400 }).ContinueWith(async t =>
{
if (t.IsFaulted)
error = t.Exception.InnerException.ToString();
else if (t.IsCanceled)
error = Constantes.FotosActivosCancelado;
else if (t.IsCompleted)
{
string pathFile = t.Result.Path;
InsertarFoto(pathFile);
return;
}
await DisplayAlert("Informacion", error, "Aceptar");
});
}
else
await DisplayAlert("Informacion", Constantes.FotosActivosMaximoPermitido, "Aceptar");
}
protected async void InsertarFoto(string path)
{
//Se crea la instancia del usuario
var usuario = new UsuarioServiceEntidad()
{
CuentaUsuario = Application.Current.Properties["CuentaUsuario"].ToString(),
Contrasenia = Application.Current.Properties["Contraseña"].ToString(),
ClaveDispositivo = CrossDeviceInfo.Current.Id,
SesionId = Application.Current.Properties["SesionId"].ToString()
};
//Instancia para insertar la foto
var localizacion = new LocalizacionActivoEntidad()
{
SesionId = Application.Current.Properties["SesionId"].ToString(),
LevantamientoIdTemp = LevantamientoId,
EmpleadoId = EmpleadoId,
ActivoId = ActivoId,
EstatusId = EstatusId,
LocalizacionJson = ObtenerLocalizacion(),
UsuarioIdInserto = Convert.ToInt32(Application.Current.Properties["UsuarioId"].ToString()),
Archivo = DependencyService.Get().ReadAllBytes(path)
};
//Validar que se haya obtenido la localizacion
if (string.IsNullOrEmpty(localizacion.LocalizacionJson))
{
await DisplayAlert("Error", Constantes.ErrorInesperado, "Aceptar");
return;
}
//Instancia para consumir el web service
var serviceAgent = new ActivoServiceAgent();
//JSON recibido
string sJSON = await serviceAgent.InsertarFotosActivo(usuario, localizacion);
//Si no hay error en la aplicacion se obtiene la url y el id
//del JSON para crear la instancia que se mostrara en el carousel
if (sJSON != string.Empty)
{
dynamic dynObj = JsonConvert.DeserializeObject(sJSON);
string descripcionError = dynObj.DescripcionError;
if (dynObj.ErrorId == "0")
{
string sURL = dynObj.Registros[0].UrlImagen;
string sFileId = dynObj.Registros[0].FileId;
DependencyService.Get().Delete(path);
var carousel = new Carousel() { Url = sURL, FileId = sFileId };
Device.BeginInvokeOnMainThread(() =>
{
carouselList.Add(carousel);
});
}
else
await DisplayAlert("Error", descripcionError, "Aceptar");
}
else
await DisplayAlert("Error", Constantes.ErrorInesperado, "Aceptar");
}