Exemplo n.º 1
0
        public async Task <T> SaveEstadoOrden <T>(RequestEstadoOrden estado_orden)
        {
            try
            {
                AuthorizationRequest();

                string ContentType = "application/json";
                var    Result      = await client.PostAsync(
                    urlBase + Constants.SaveEstadoOrden,
                    new StringContent(
                        JsonConvert.SerializeObject(estado_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));
        }
Exemplo n.º 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;
                 });
             }
         }
     }
 }
Exemplo n.º 3
0
 private async Task ChangeStateOrdenAsync(bool direct = true)
 {
     if (CheckNetworkConnection())
     {
         // Preguntanmos al usuario si desea enviar la información a Solex
         if (!direct)
         {
             direct = await DisplayAlert("Mensaje de Confirmación!.", "¿Desea enviar el estado de la orden de cargue a Solex?", "ACEPTAR", "CANCELAR");
         }
         if (direct)
         {
             // Creamos un hilo de ejecución
             Device.BeginInvokeOnMainThread(async() =>
             {
                 // Se captura el input de la cantidad de documentos recogidos
                 var documentos_recogidos = (!string.IsNullOrWhiteSpace(Entry_DocsRecogidos.Text)) ? (Convert.ToDecimal(Entry_DocsRecogidos.Text)) : 0;
                 // Se captura el input de la cantidad de unidades recogidas
                 var unidades_recogidas = (!string.IsNullOrWhiteSpace(Entry_UndsRecogidas.Text)) ? (Convert.ToDecimal(Entry_UndsRecogidas.Text)) : 0;
                 // Se verifica si el usuario digitó la cantidad de documentos recogidos
                 ordenSelected.DocumentosRecogidos = (documentos_recogidos > 0) ? documentos_recogidos : ordenSelected.DocumentosRecogidos;
                 // Se verifica si el usuario digitó la cantidad de unidades recogidas
                 ordenSelected.UnidadesRecogidas = (unidades_recogidas > 0) ? unidades_recogidas : ordenSelected.UnidadesRecogidas;
                 // Fecha de registro del 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.OrdenId,
                     EstadoId            = selectedEstadoOrden.IdSolex,
                     Fecha               = fecha_registro_estado,
                     Descripcion         = "Estado generado desde SolexMobile.",
                     OperadorUsuarioId   = Constants.CurrentUser.IdSolex,
                     DocumentosRecogidos = ordenSelected.DocumentosRecogidos,
                     UnidadesRecogidas   = ordenSelected.UnidadesRecogidas
                 };
                 // Obtenemos la respuesta después de consumir el servicio
                 var response_estado = await App.RestClient.SaveEstadoOrden <ResponseSave>(request_estado);
                 // Verificamos el resultado de la petición
                 if (response_estado != null)
                 {
                     if (response_estado.CodError < 0)
                     {
                         // Marcamos la orden de cargue como que no guardó la llegada al punto
                         ordenSelected.Arrival = false;
                         // Mensaje de error
                         await DisplayAlert("Mensaje Informativo!", response_estado.Error, "ACEPTAR");
                     }
                     else
                     {
                         // Verificamos si efectivamente se creo el nuevo estado
                         if (response_estado.CodError == 0)
                         {
                             // Mensaje de solex
                             await DisplayAlert("Mensaje Informativo!", response_estado.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_ENTREGA_BLU.Replace("#", ""));
                                 // Actualizamos el color de la fila
                                 ordenSelected.ColorButtonRow = Constants.CODIGO_COLOR_ENTREGA_BLU;
                             }
                             // 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
                 {
                     // Ocultamos el spinner de carga
                     ActivitySpinner.IsVisible = false;
                     // Mensaje informativo
                     await DisplayAlert("Ocurrió un error!", "No se lograron enviar los datos al servidor.", "ACEPTAR");
                 }
                 // Ocultamos el spinner de carga
                 ActivitySpinner.IsVisible = false;
             });
         }
     }
 }