private async Task SendPostRelevamiento(string jsonRelevamiento, TbRequest tbRequestToUpdate) { try { //String content que serealiza la clase a string StringContent stringContent = new StringContent(jsonRelevamiento, Encoding.UTF8, "application/json"); HttpClient httpClient = new HttpClient(); httpClient.Timeout = TimeSpan.FromMinutes(30); //TEST //string urlPost = "http://iserver.itris.com.ar:7101/DACServicesTest/api/Relevamiento"; //PROD string urlPost = "http://iserver.itris.com.ar:7101/DACServices/api/Relevamiento"; //variable que se utiliza para tomar la respuesta HttpResponseMessage httpResponseMessage; //Se ejecuta el post y se lo asigna a la variable que contiene la respuesta httpResponseMessage = await httpClient.PostAsync(new Uri(urlPost), stringContent); if (httpResponseMessage.StatusCode == System.Net.HttpStatusCode.Created) { //Se comenta porque no es necesario informarle al usuario que se envio el relevamiento ok //Va a poder chequearlo desde el menu estados //await DisplayAlert("Aviso", "Se ha enviado el relevamiento", "Ok"); //Obtengo el mensaje de respuesta del server var stringResponse = httpResponseMessage.Content.ReadAsStringAsync().Result; //Serializo la repsuesta que viene en formato json al tipo de clase //ACA TENES QUE TENER LA RESPUESTA DEL SERVICIO ItrisPlanillaEntity respuesta = JsonConvert.DeserializeObject <ItrisPlanillaEntity>(stringResponse); //Dato a guardar en tabla tbRequest string requestBody = JsonConvert.SerializeObject(respuesta); var tbRequestDataService = new TbRequestDataService(); tbRequestToUpdate.req_json = requestBody; tbRequestToUpdate.req_estado = true; //Se updatea el estado del registro de la planilla enviada tbRequestDataService.Update(tbRequestToUpdate); //Se comenta codigo porque son mensajes debug //if (tbRequestDataService.Update(tbRequestToUpdate)) // await DisplayAlert("Aviso", "Se ha actualizado el relevamiento relevamiento", "Ok"); //else // await DisplayAlert("Aviso", "NO se ha podido actualizar el relevamiento relevamiento", "Ok"); } else { await DisplayAlert("Aviso", "NO se ha podido enviar el relevamiento", "Ok"); } } catch (Exception ex) { throw ex; } }
private async void btnFinalizarClicked(object sender, EventArgs e) { try { bool respuesta = await DisplayAlert("ATENCION", "¿Desea finalizar el Relevamiento de este Pueblo?", "Si", "No"); if (respuesta) { //Primero se envia a la pantalla principal para que se sigan ejecutando los threads y evitar mandar 2 relevamientos PopUntilDestination(typeof(Principal)); //Comento acceso al imei politicas android //string imeiTelefono = DependencyService.Get<IServiceImei>().GetImei(); ERP_ASESORES asesor = new ERP_ASESORES(); int maxRequestId = 1; using (SQLite.SQLiteConnection conexion = new SQLiteConnection(App.RutaBD)) { //TbRequest maxRequest = new TbRequest(); //Se obtiene asesor mediante el imei del equipo. Por politicas de privacidad se obtiene mediante descripcion asesor. //asesor = conexion.Table<ERP_ASESORES>().Where(a => a.c_IMEI == imeiTelefono).FirstOrDefault(); //Nuevo metodo de obtener asesore por descripcion (google play) //asesor = conexion.Table<ERP_ASESORES>().Where(a => a.c_IMEI == imeiTelefono).FirstOrDefault(); TbRequest maxRequest = conexion.Table <TbRequest>().OrderByDescending(r => r.ID).FirstOrDefault(); if (maxRequest != null) { maxRequestId = maxRequest.ID + 1; } } App.releva.FK_ERP_EMPRESAS = App.distribuidorseleccionado.ID.ToString(); //Asesor previo politica //App.releva.FK_ERP_ASESORES = asesor.ID; App.releva.FK_ERP_ASESORES = App.globalAsesor.ID; App.releva.FECHA = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"); //string codigoRequest = string.Format("{0}-{1}", App.globalAsesor.ID.ToString(), maxRequestId.ToString()); string codigoRequest = string.Format("{0}-{1}", App.globalAsesor.ID.ToString(), DateTime.Now.ToString("yyyyMMddHHmmss")); //Obtengo el imei del equipo para el request App.releva.CODIGO = "ASD123ADSASD"; ItrisPlanillaEntity relevamientos = new ItrisPlanillaEntity(); relevamientos.relevamiento = App.releva; relevamientos.comercios = App.comercios; relevamientos.codigoRequest = codigoRequest;// "123456789-9"; //<-- Usar este codigo para test (no va a itris) string jsonRelevamiento = JsonConvert.SerializeObject(relevamientos); var tbRequestDataService = new TbRequestDataService(); if (!tbRequestDataService.isInserted(relevamientos.codigoRequest)) { TbRequest tbRequests = new TbRequest() { req_codigo = relevamientos.codigoRequest, req_json = jsonRelevamiento, req_estado = false }; //Se updatea el estado del registro de la planilla enviada try { tbRequestDataService.Insert(tbRequests); App.comercios = new List <ItrisComercioArticulo>(); } catch (Exception ex) { throw ex; } //Se comenta codigo porque son mensajes debug //if (tbRequestDataService.Insert(tbRequests)) // await DisplayAlert("Aviso", "Se ha dado de alta un nuevo relevamiento", "Ok"); //else // await DisplayAlert("Aviso", "NO se ha podido dar de alta el relevamiento", "Ok"); if (CheckNetworkState.hasConnectivity) { await SendPostRelevamiento(jsonRelevamiento, tbRequests); } else { await DisplayAlert("Aviso", "Sin conexion a internet, no se podra enviar el relevamiento hasta que vuelva a tener conexion", "Ok"); } } else { await DisplayAlert("Aviso", "Ese relevamiento ya se encuentra dado de alta", "Ok"); } //Se comenta esta linea porque permitia enviar dos formularios, se agrego arriba (si pasa test borrar). //PopUntilDestination(typeof(Principal)); } } catch (Exception ex) { throw ex; } }