private void PostItris(ItrisPlanillaEntity model)
        {
            log.Info("- Ingreso -");
            string usuarioItris = this.ObtenerUsuarioItris();

            ItrisAuthenticateEntity authenticateEntity =
                new ItrisAuthenticateEntity(ITRIS_SERVER, ITRIS_PUERTO, ITRIS_CLASE, usuarioItris, ITRIS_PASS, ITRIS_DATABASE);

            try
            {
                //Inserts itris
                ServiceRelevamientoBusiness serviceRelevamientoBusiness =
                    new ServiceRelevamientoBusiness(authenticateEntity);

                log.Info("Ejecuta serviceRelevamientoBusiness.Post(model): " + JsonConvert.SerializeObject(model));
                serviceRelevamientoBusiness.Post(model);
                log.Info("Respuesta serviceRelevamientoBusiness.Post(model): " + JsonConvert.SerializeObject(model));
            }
            catch (Exception ex)
            {
                log.Error("Mensaje de Error: " + ex.Message);
                if (ex.InnerException != null)
                {
                    log.Error("Inner exception: " + ex.InnerException.Message);
                }
                throw ex;
            }
            log.Info("- Salio -");
        }
        public Finalizado(TbRequest tbRequests)
        {
            InitializeComponent();
            ItrisPlanillaEntity respuesta2 = JsonConvert.DeserializeObject <ItrisPlanillaEntity>(tbRequests.req_json);

            LblDistribuidor.Text = "Distribuidor:" + respuesta2.relevamiento.FK_ERP_EMPRESAS;
            LblLocal.Text        = "Fecha" + respuesta2.relevamiento.FECHA;
            if (!tbRequests.req_estado)
            {
                LblEmail.Text = "pendiente";
            }
            else
            {
                LblEmail.Text = "enviado";
            }
        }
Exemple #3
0
        private async void btnFinalizarClicked(object sender, EventArgs e)
        {
            App.releva.FK_ERP_EMPRESAS = App.distribuidorseleccionado.ID.ToString();
            App.releva.FK_ERP_ASESORES = App.distribuidorseleccionado.FK_ERP_ASESORES;
            App.releva.FECHA           = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
            App.releva.CODIGO          = "ASD123ADSASD";
            ItrisPlanillaEntity relevamientos = new ItrisPlanillaEntity();

            relevamientos.relevamiento = App.releva;
            relevamientos.comercios    = App.comercios;

            //Obtengo el imei del equipo para el request
            string phoneImei = Task.Run(async() => await this.GetImei()).GetAwaiter().GetResult().ToString();

            //Seteo el IMEI y el maximo identificador de la tabla tbRequest local SQLite
            relevamientos.codigoRequest = string.Format("{0}-{1}", phoneImei, GetMaxIdTbRequest());
            var post = relevamientos;

            string jsonRelevamiento = JsonConvert.SerializeObject(relevamientos);

            //String content que serealiza la clase a string
            StringContent stringContent =
                new StringContent(jsonRelevamiento, Encoding.UTF8, "application/json");

            TbRequest tbRequests = new TbRequest()
            {
                req_codigo = phoneImei,
                req_json   = jsonRelevamiento,
                req_estado = false
            };

            //INSERT
            using (SQLite.SQLiteConnection conexion = new SQLiteConnection(App.RutaBD))
            {
                int result = conexion.Insert(tbRequests);
                EditorResponseDebug.Text = "INSERT: " + result.ToString();
            }

            if (hasConnectivity)
            {
                await SendPostRelevamiento(jsonRelevamiento, tbRequests);
            }
        }
Exemple #4
0
        private async Task SendPostRelevamiento(string jsonRelevamiento, TbRequest tbRequestToUpdate)
        {
            StringContent stringContent =
                new StringContent(jsonRelevamiento, Encoding.UTF8, "application/json");

            HttpClient httpClient = new HttpClient();

            httpClient.Timeout = TimeSpan.FromMinutes(30);

            //URL para hacer el post
            string urlPost = "http://iserver.itris.com.ar:7101/DACServicesTest/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);

            //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 DACServiceTest
            ItrisPlanillaEntity respuesta = JsonConvert.DeserializeObject <ItrisPlanillaEntity>(stringResponse);

            //Dato a guardar en tabla tbRequest
            string requestBody = JsonConvert.SerializeObject(respuesta);

            using (SQLite.SQLiteConnection conexion = new SQLiteConnection(App.RutaBD))
            {
                tbRequestToUpdate.req_json   = requestBody;
                tbRequestToUpdate.req_estado = true;
                int result = conexion.Update(tbRequestToUpdate);

                EditorResponseDebug.Text = result.ToString();
            }
        }
        public void Post(ItrisPlanillaEntity planilla)
        {
            string stringSession = string.Empty;

            try
            {
                stringSession = _itrisRelevamientoBusiness.SessionString;

                #region Post Planilla Itris
                var resultItrisRelevamientoResponse =
                    Task.Run(async() => await _itrisRelevamientoBusiness.Post(planilla.Relevamiento, stringSession)).GetAwaiter().GetResult();

                planilla.Relevamiento = resultItrisRelevamientoResponse.data.FirstOrDefault();
                #endregion

                #region Post Lista Comercios
                foreach (var comercioArticulos in planilla.Comercios)
                {
                    #region Post Comercio Itris

                    //Asigno los articulos al comercio maestro-detalle itris
                    comercioArticulos.RelevamientoArticulo.ForEach(x => x.FK_RELEVAMIENTO = planilla.Relevamiento.ID);
                    comercioArticulos.Comercio._DET_REL_ART = comercioArticulos.RelevamientoArticulo;
                    //Asigno los articulos al comercio maestro-detalle itris

                    var resultItrisComercioResponse =
                        Task.Run(async() =>
                                 await _itrisComercioBusiness.Post(comercioArticulos.Comercio, stringSession)).GetAwaiter().GetResult();

                    comercioArticulos.Comercio = resultItrisComercioResponse.data.FirstOrDefault();
                    #endregion

                    #region Post RelevamientoArticulo - OK
                    //if (resultItrisRelevamientoResponse.data.FirstOrDefault().ID != 0 &&
                    //		resultItrisComercioResponse.data.FirstOrDefault().ID != 0)
                    //{
                    //	var resultItrisRelevamientoArticuloResponse =
                    //		Task.Run(async () => await _itrisRelevamientoArticuloBusiness.Post(
                    //			resultItrisRelevamientoResponse.data.FirstOrDefault().ID,
                    //			resultItrisComercioResponse.data.FirstOrDefault().ID,
                    //			comercioArticulos.RelevamientoArticulo, stringSession)).GetAwaiter().GetResult();

                    //	comercioArticulos.RelevamientoArticulo = resultItrisRelevamientoArticuloResponse.data;
                    //}
                    #endregion
                }
                #endregion

                #region Post Tabla Envio E-mails
                if (resultItrisRelevamientoResponse.data.FirstOrDefault().ID != 0)
                {
                    ItrisEstadoEmailRelevamientoEntity itrisEstadoEmailRelevamientoEntity =
                        new ItrisEstadoEmailRelevamientoEntity()
                    {
                        FK_RELEVAMIENTO  = resultItrisRelevamientoResponse.data.FirstOrDefault().ID,
                        ENVIADO_POR_MAIL = false
                    };

                    var resultEstadoEmailRelevamientoResponse = Task.Run(async() =>
                                                                         await _itrisEstadoEmailRelevamientoBusiness.Post(itrisEstadoEmailRelevamientoEntity)).GetAwaiter().GetResult();

                    planilla.EstadoEmailRelevamiento = resultEstadoEmailRelevamientoResponse.data.FirstOrDefault();
                }
                #endregion

                //PROCESO DE ENVIAR LOS DATOS A ITRIS
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                string mensaje = _itrisRelevamientoBusiness.CloseSession(stringSession);
            }
        }
Exemple #6
0
 public RelevamientoModel()
 {
     ItrisPlanilla = new ItrisPlanillaEntity();
 }
        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;
            }
        }
        public HttpResponseMessage Post([FromBody] ItrisPlanillaEntity model)
        {
            log.Info("- Ingreso -");
            HttpResponseMessage response = new HttpResponseMessage();

            try
            {
                ServiceRequestBusiness serviceRequestBusiness = new ServiceRequestBusiness();
                tbRequest request = new tbRequest();

                //Valido request en DACS
                Func <tbRequest, bool> predicado = p => p.req_codigo == model.CodigoRequest;
                request = ((List <tbRequest>)serviceRequestBusiness.Read(predicado)).FirstOrDefault();

                if (request != null)
                {
                    if (request.req_body_response != null)
                    {
                        model = JsonConvert.DeserializeObject <ItrisPlanillaEntity>(request.req_body_response);
                        log.Info("Retorno el modelo almacenado en DB_DACS: " + JsonConvert.SerializeObject(model));
                        return(Request.CreateResponse(HttpStatusCode.Created, model));
                    }
                    else
                    {
                        //Envio nuevamente el request a itris si no se proceso
                        model = JsonConvert.DeserializeObject <ItrisPlanillaEntity>(request.req_body_request);
                        this.PostItris(model);
                    }
                }
                else
                {
                    //Insert bd local
                    request = new tbRequest()
                    {
                        req_fecha_request  = DateTime.Now,
                        req_fecha_response = null,
                        req_body_request   = JsonConvert.SerializeObject(model),
                        req_estado         = false,
                        req_codigo         = model.CodigoRequest
                    };
                    //Creo objeto en base local
                    serviceRequestBusiness.Create(request);

                    //Inserts itris
                    this.PostItris(model);
                }

                //PERSISTENCIA ITRIS OK => ACTUALIZO BASE LOCAL CON OK
                if (model.Relevamiento.ID != 0)
                {
                    request.req_fecha_response = DateTime.Now;
                    request.req_body_response  = JsonConvert.SerializeObject(model);
                    request.req_estado         = true;
                    serviceRequestBusiness.Update(request);

                    response = Request.CreateResponse(HttpStatusCode.Created, model);
                }
                else
                {
                    response = Request.CreateResponse(HttpStatusCode.InternalServerError, "Itris no inserto registros.");
                }
            }
            catch (Exception ex)
            {
                log.Error("Mensaje de Error: " + ex.Message);
                if (ex.InnerException != null)
                {
                    log.Error("Inner exception: " + ex.InnerException.Message);
                }

                response = Request.CreateResponse(HttpStatusCode.BadRequest, ex.Message);
            }

            log.Info("Retorna objeto: " + JsonConvert.SerializeObject(model));
            log.Info("- Salio -");

            return(response);
        }