예제 #1
0
        public async Task <T> SaveDetailOrdenCargue <T>(RequestDatosOrden request_orden)
        {
            try
            {
                AuthorizationRequest();

                string ContentType = "application/json";
                var    Result      = await client.PostAsync(
                    urlBase + Constants.SaveDetalleOrdenCargue,
                    new StringContent(
                        JsonConvert.SerializeObject(request_orden),
                        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));
        }
예제 #2
0
 // Método general de esta clase utilizado para guardar
 // en base de datos todos los cambios que se hayan hecho en la orden de cargue
 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
         ordenSelected.Receives            = Entry_Receives.Text;
         ordenSelected.DocumentosRecogidos = Convert.ToDecimal(Entry_DocsRecogidos.Text);
         ordenSelected.Updated_at          = DateTime.Now;
         ordenSelected.UnidadesRecogidas   = Convert.ToDecimal(Entry_UndsRecogidas.Text);
         // 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 orden de cargue 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
                     RequestEstadoOrden request_estado = new RequestEstadoOrden
                     {
                         OrdenId           = ordenSelected.Id,
                         EstadoId          = selectedEstadoOrden.IdSolex,
                         Fecha             = fecha_registro_estado,
                         Descripcion       = "Estado generado desde SolexMobile.",
                         OperadorUsuarioId = Constants.CurrentUser.IdSolex
                     };
                     // Se crea el objeto de envío a Solex
                     RequestDatosOrden request_orden = new RequestDatosOrden
                     {
                         EntregaNombre       = ordenSelected.Receives,
                         DocumentosRecogidos = ordenSelected.DocumentosRecogidos,
                         UsuarioId           = Constants.CurrentUser.IdSolex,
                         UsuarioLogin        = Constants.CurrentUser.Username,
                         UltimoEstado        = request_estado,
                         UnidadesRecogidas   = ordenSelected.UnidadesRecogidas
                     };
                     // Obtenemos la respuesta después de consumir el servicio
                     var response_orden = await App.RestClient.SaveDetailOrdenCargue <ResponseSave>(request_orden);
                     // Verificamos el resultado de la petición
                     if (response_orden != null)
                     {
                         if (!response_orden.IsSuccess)
                         {
                             await DisplayAlert("Mensaje Informativo!", response_orden.Error, "ACEPTAR");
                         }
                         else
                         {
                             // Actualiamos el último estado de la orden de cargue
                             ordenSelected.UltimoEstadoId = selectedEstadoOrden.IdSolex;
                             // S el estado es LLEGÓ AL PUNTO
                             if (ordenSelected.UltimoEstadoId == Constants.ESTADO_ORDEN_LLEGO_PUNTO)
                             {
                                 // Asignamos la fecha de registro
                                 ordenSelected.ArrivalDate = fecha_registro_estado;
                                 // Marcamos la orden de cargue como que ya llegó al punto
                                 ordenSelected.Arrival = true;
                                 // Cambiamos los estilos del botón de llegada al punto
                                 Btn_ArrivalToThePoint.BackgroundColor = Color.FromHex(Constants.CODIGO_COLOR_LLEGADA_PUNTO.Replace("#", ""));
                                 // Actualizamos el color de la fila
                                 ordenSelected.ColorButtonRow = Constants.CODIGO_COLOR_LLEGADA_PUNTO;
                                 // Ocultamos el spinner de carga
                                 ActivitySpinner.IsVisible = false;
                                 // Mensaje informativo
                                 await DisplayAlert("Mensaje Informativo!", "La llegada al punto fue registrada correctamente.", "ACEPTAR");
                             }
                             // Si el estado es ORDEN EXITOSA
                             else if (ordenSelected.UltimoEstadoId == Constants.ESTADO_ORDEN_EXITOSA)
                             {
                                 // Asignamos la fecha de registro
                                 ordenSelected.DeliveredDate = fecha_registro_estado;
                                 // Marcamos la orden de cargue como que ya fue exitosa
                                 ordenSelected.Delivered = true;
                                 // Marcamos la orden de cargue como controlada
                                 ordenSelected.Controlled = true;
                                 // Cambiamos los estilos del botón de orden exitosa
                                 Btn_SaveDoneDetails.BackgroundColor = Color.FromHex(Constants.CODIGO_COLOR_ORDEN_EXITOSA.Replace("#", ""));
                                 // Actualizamos el color de la fila
                                 ordenSelected.ColorButtonRow = Constants.CODIGO_COLOR_ORDEN_EXITOSA;
                             }
                             // Si el estado es ORDEN NO EXITOSA
                             else if (ordenSelected.UltimoEstadoId == Constants.ESTADO_ORDEN_NO_EXITOSA)
                             {
                                 // Asignamos la fecha de registro
                                 ordenSelected.DeliveredDate = fecha_registro_estado;
                                 // Marcamos la orden de cargue como que ya fue exitosa
                                 ordenSelected.Delivered = true;
                                 // Marcamos la orden de cargue como controlada
                                 ordenSelected.Controlled = true;
                                 // Cambiamos los estilos del botón de orden no exitosa
                                 Btn_SaveDoneDetails.BackgroundColor = Color.FromHex(Constants.CODIGO_COLOR_ORDEN_NO_EXITOSA.Replace("#", ""));
                                 // Actualizamos el color de la fila
                                 ordenSelected.ColorButtonRow = Constants.CODIGO_COLOR_ORDEN_NO_EXITOSA;
                             }
                         }
                         // Llamamos al método que guarda los cambios de la orden de cargue en BD
                         App.OrdenCargueDatabase.SaveOrdenCargue(ordenSelected);
                         // Ocultamos el spinner de carga
                         ActivitySpinner.IsVisible = false;
                         // Verificamos que el estado sea diferente
                         // a la llegada al punto
                         if (ordenSelected.UltimoEstadoId != Constants.ESTADO_ORDEN_LLEGO_PUNTO)
                         {
                             // Nos devolvemos al listado de ordenes de cargue
                             MainListOpen();
                         }
                     }
                     else
                     {
                         await DisplayAlert("Ocurrió un error!", "No se lograron enviar los datos al servidor.", "ACEPTAR");
                     }
                     // Ocultamos el spinner de carga
                     ActivitySpinner.IsVisible = false;
                 });
             }
         }
     }
 }