public async Task <T> SaveDetailGuia <T>(RequestDatosGuia request_guia) { try { AuthorizationRequest(); string ContentType = "application/json"; var Result = await client.PostAsync( urlBase + Constants.SaveDetalleGuia, new StringContent( JsonConvert.SerializeObject(request_guia), Encoding.UTF8, ContentType ) ); if (Result.StatusCode == System.Net.HttpStatusCode.OK) { var JsonResult = Result.Content.ReadAsStringAsync().Result; var ContentResp = JsonConvert.DeserializeObject <T>(JsonResult); return(ContentResp); } } catch (Exception ex) { Debug.WriteLine(ex.Message); } return(default(T)); }
// Método general de esta clase utilizado para guardar // en base de datos todos los cambios que se hayan hecho en la guía private async Task SaveChangesAsync(bool direct = true) { // Verificamos los campos necesarios if (CheckInputs()) { // Actualizamos el valor de algunos campos // en base a los entry de la página guiaSelected.Receives = Entry_Receives.Text; guiaSelected.Receives_Doc = Entry_Identification.Text; guiaSelected.Updated_at = DateTime.Now; // En dado caso de que haya conexión a internet if (CheckNetworkConnection()) { // Preguntanmos al usuario si desea enviar la información a Solex if (!direct) { direct = await DisplayAlert("Mensaje de Confirmación!.", "¿Desea enviar la información de la guía a Solex?", "ACEPTAR", "CANCELAR"); } if (direct) { Device.BeginInvokeOnMainThread(async() => { // Fecha de registro de l estado string fecha_registro_estado = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // Mostramos el spinner de carga ActivitySpinner.IsVisible = true; // Se mapean los campos necesarios para el objeto estado RequestEstadoGuia request_estado = new RequestEstadoGuia { GuiaId = guiaSelected.IdGuia, EstadoId = selectedEstadoGuia.IdSolex, Fecha = fecha_registro_estado, Descripcion = "Estado generado desde SolexMobile.", OperadorUsuarioId = Constants.CurrentUser.IdSolex }; // Se crea el objeto de envío a Solex RequestDatosGuia request_guia = new RequestDatosGuia { Guia = guiaSelected.GuiaNumero, GuiaId = guiaSelected.IdGuia, RecibeNombre = guiaSelected.Receives, RecibeDocumento = guiaSelected.Receives_Doc, Imagen = guiaSelected.Imagen, UsuarioId = Constants.CurrentUser.IdSolex, UsuarioLogin = Constants.CurrentUser.Username, UltimoEstado = request_estado }; // Obtenemos la respuesta después de consumir el servicio var response_guia = await App.RestClient.SaveDetailGuia <ResponseSave>(request_guia); // Verificamos el resultado de la petición if (response_guia != null) { if (!response_guia.IsSuccess) { await DisplayAlert("Mensaje Informativo!", response_guia.Error, "ACEPTAR"); } else { // Actualiamos el último estado de la guía guiaSelected.UltimoEstadoId = selectedEstadoGuia.IdSolex; // Si el estado es LLEGÓ AL PUNTO DE ENTREGA if (guiaSelected.UltimoEstadoId == Constants.ESTADO_GUIA_LLEGO_PUNTO) { // Asignamos la fecha de registro guiaSelected.ArrivalDate = fecha_registro_estado; // Marcamos la guía como que ya llegó al punto guiaSelected.Arrival = true; // Actualizamos el color de la fila guiaSelected.ColorButtonRow = Constants.CODIGO_COLOR_LLEGADA_PUNTO; // Mensaje informativo await DisplayAlert("Mensaje Informativo!", "La llegada al punto fue registrada correctamente.", "ACEPTAR"); } // Si el estado es ENTREGA BLU else if (guiaSelected.UltimoEstadoId == Constants.ESTADO_GUIA_ENTREGA_BLU) { // Asignamos la fecha de registro guiaSelected.DeliveredDate = fecha_registro_estado; // Marcamos la guía como que ya llegó al punto guiaSelected.Delivered = true; // Marcamos la guía como controlada guiaSelected.Controlled = true; // Actualizamos el color de la fila guiaSelected.ColorButtonRow = Constants.CODIGO_COLOR_ENTREGA_BLU; } // Si el estado es ENTREGA PARCIAL else if (guiaSelected.UltimoEstadoId == Constants.ESTADO_GUIA_ENTREGA_PARCIAL) { // Asignamos la fecha de registro guiaSelected.DeliveredDate = fecha_registro_estado; // Marcamos la guía como que ya llegó al punto guiaSelected.Delivered = true; // Marcamos la guía como controlada guiaSelected.Controlled = true; // Actualizamos el color de la fila guiaSelected.ColorButtonRow = Constants.CODIGO_COLOR_NO_ENTREGADA; } // Si el estado es GUÍA NO ENTREGADA else if (guiaSelected.UltimoEstadoId == Constants.ESTADO_GUIA_NO_ENTREGADA) { // Asignamos la fecha de registro guiaSelected.DeliveredDate = null; // Marcamos la guía como que ya llegó al punto guiaSelected.Delivered = false; // Marcamos la guía como controlada guiaSelected.Controlled = true; // Actualizamos el color de la fila guiaSelected.ColorButtonRow = Constants.CODIGO_COLOR_NO_ENTREGADA; } // Abrimos el listado con los datos actualizados MainListOpen(); } // Llamamos al método que guarda los cambios de la guía en BD App.GuiaDatabase.SaveGuia(guiaSelected); // Ocultamos el spinner de carga ActivitySpinner.IsVisible = false; // Verificamos que el estado sea diferente // a la llegada al punto if (guiaSelected.UltimoEstadoId != Constants.ESTADO_GUIA_LLEGO_PUNTO) { // Nos devolvemos al listado de guías MainListOpen(); } } else { await DisplayAlert("Ocurrió un error!", "No se lograron enviar los datos al servidor.", "ACEPTAR"); } // Ocultamos el spinner de carga ActivitySpinner.IsVisible = false; }); } } } }