/// <summary>
        /// Actualiza al Usuario seleccionado en el grid principal con las propiedades necesarias
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="filaSeleccionada"></param>
        public void ActualizarUsuario(object sender, int filaSeleccionada)
        {
            try
            {
                var imagenAnterior = UiVistaUsuario.GetRowValues(filaSeleccionada, "IMAGE").ToString();

                var usuario = (Usuario)Session["UsuarioSeleccionado"];
                usuario.LOGIN     = UiTxtLoginUsuario.Value.ToString();
                usuario.TYPE_USER = UiComboTipo.Value.ToString();
                usuario.NAME_USER = UiTxtNombreUsuario.Value.ToString();
                usuario.PASSWORD  = UiTxtPasswordUsuario.Value.ToString();
                usuario.USER_TYPE = UiListaTipoUsuario.Value.ToString();

                if (UiListaRolUsuario.Value != null)
                {
                    usuario.USER_ROLE = int.Parse(UiListaRolUsuario.Value.ToString());
                }
                else
                {
                    EstablecerError("Debe de seleccionar un Rol de Usuario", UiVistaUsuario);
                    return;
                }

                usuario.USE_PACK_UNIT = 1;

                if (UiListaZona.Value != null)
                {
                    usuario.ZONE_ID = int.Parse(UiListaZona.Value.ToString());
                }
                if (UiListaVendedor.Value != null)
                {
                    usuario.RELATED_SELLER = UiListaVendedor.Value.ToString();
                }
                if (UiListaRuta.Value != null)
                {
                    usuario.SELLER_ROUTE = UiListaRuta.Value.ToString();
                }
                if (UiListaBodegaPreventa.Value != null)
                {
                    if (UiListaCentroDeDistribucion.Value == null)
                    {
                        EstablecerError("Debe de seleccionar un Centro de Distribucion", UiVistaUsuario);
                        return;
                    }
                    usuario.PRESALE_WAREHOUSE = UiListaBodegaPreventa.Value.ToString();
                }
                if (UiListaBodegaPredeterminada.Value != null)
                {
                    if (UiListaCentroDeDistribucion.Value == null)
                    {
                        EstablecerError("Debe de seleccionar un Centro de Distribucion", UiVistaUsuario);
                        return;
                    }
                    usuario.DEFAULT_WAREHOUSE = UiListaBodegaPredeterminada.Value.ToString();
                }

                if (UiListaCentroDeDistribucion.Value != null)
                {
                    usuario.DISTRIBUTION_CENTER_ID = int.Parse(UiListaCentroDeDistribucion.Value.ToString());
                }
                else
                {
                    usuario.DISTRIBUTION_CENTER_ID = null;
                }

                usuario.IMAGE = Session["UiImagenUsuario"]?.ToString() ?? imagenAnterior;

                usuario.CODE_PRICE_LIST = (UiListasDePrecios.Value == null || UiListasDePrecios.Value.ToString() == "") ? null : UiListasDePrecios.Value.ToString();

                usuario.AccionEjecutadaSobreUsuario = AccionEjecutadaSobreUsuario.Actualizado;

                usuario.LastUpdateBy = Session["LOGIN"].ToString();

                UsuarioDeseaActualizarUsuario?.Invoke(sender, new UsuarioArgumento
                {
                    Data    = usuario,
                    Bodegas = BodegasParaAccesoAsignadas
                });
            }
            catch (Exception ex)
            {
                EstablecerError(ex.Message, UiVistaUsuario);
            }
        }
        public void AsignarBodegas(object sender)
        {
            var isnew  = false;
            var idUser = 0;

            if (UiTxtCodigoUsuario.Text == "")
            {
                isnew = true;
            }
            else
            {
                idUser = int.Parse(UiVistaUsuario.GetRowValues(UiVistaUsuario.FocusedRowIndex, "CORRELATIVE").ToString());
            }
            var listaBodegasAAsignar = UiListaAsignarBodegas.GridView.GetSelectedFieldValues("CODE_WAREHOUSE", "DESCRIPTION_WAREHOUSE");

            //var idSkuABonificar =  UiListaSkusDisponiblesABonificar.Value;
            //skuABonificar = skuABonificar.ToString().Split('|');
            //var skuABonificar = SkusDisponiblesABonificar.Where(s => s.SKU == Convert.ToInt32(idSkuABonificar)).FirstOrDefault();

            var lista = new List <Bodega>();

            if (listaBodegasAAsignar.Count > 0)
            {
                var listaBodegas = new List <BodegaConAccesoPorUsuario>();

                foreach (var bdg in listaBodegasAAsignar)
                {
                    var bod = new Bodega
                    {
                        CODE_WAREHOUSE = ((object[])bdg)[0].ToString()
                        ,
                        DESCRIPTION_WAREHOUSE = ((object[])bdg)[1].ToString()
                    };

                    BodegaConAccesoPorUsuario bodega = new BodegaConAccesoPorUsuario
                    {
                        USER_CORRELATIVE = idUser
                        ,
                        CODE_WAREHOUSE = ((object[])bdg)[0].ToString()
                        ,
                        DESCRIPTION_WAREHOUSE = ((object[])bdg)[1].ToString()
                    };
                    listaBodegas.Add(bodega);
                    lista.Add(bod);
                }


                if (!isnew)
                {
                    UsuarioDeseaAgregarAccesoABodega?.Invoke(sender, new BodegaConAccesoPorUsuarioArgumento
                    {
                        ListaBodegaConAccesoPorUsuario = listaBodegas
                    });
                }
            }

            if (isnew)
            {
                BodegasParaAccesoAsignadas = lista;
            }
        }
        protected void UiVistaUsuario_CustomCallback(object sender, DevExpress.Web.ASPxGridViewCustomCallbackEventArgs e)
        {
            if (ValidarConexionYUsuarioLogueado(sender))
            {
                var idUsuario     = 0;
                var listaUsuarios = (IList <Usuario>)Session["UiVistaUsuario"];
                switch (e.Parameters.Split('|')[0])
                {
                case "ObtenerInformacionDeUsuarioSeleccionado":
                    PoligonosDeRuta = null;
                    idUsuario       = int.Parse(e.Parameters.Split('|')[1]);

                    foreach (Usuario item in listaUsuarios.Where(item => item.CORRELATIVE == idUsuario))
                    {
                        Session["UsuarioSeleccionado"] = item;
                        UsuarioSeleeccionoCentroDeDistribucion?.Invoke(sender, new UsuarioArgumento {
                            Data = item
                        });
                        if (item.SELLER_ROUTE != null)
                        {
                            if (item.SELLER_ROUTE != "")
                            {
                                UsuarioDeseaObtenerPoligonosDeRuta?.Invoke(sender, new RutaArgumento
                                {
                                    Data = new Ruta
                                    {
                                        CODE_ROUTE = item.SELLER_ROUTE
                                    }
                                });
                            }
                        }
                        UiVistaUsuario.JSProperties.Add("cpProcesarDatosDeUsuario", item);
                    }

                    break;

                case "EliminarUsuario":
                    idUsuario = int.Parse(e.Parameters.Split('|')[1]);

                    foreach (Usuario item in listaUsuarios.Where(item => item.CORRELATIVE == idUsuario))
                    {
                        item.AccionEjecutadaSobreUsuario = AccionEjecutadaSobreUsuario.Eliminado;
                        UsuarioDeseaBorrarUsuario?.Invoke(sender, new UsuarioArgumento {
                            Data = item
                        });
                    }

                    Session["UsuarioSeleccionado"] = null;
                    break;

                case "QuitarRuta":
                    QuitarRuta(sender, int.Parse(e.Parameters.Split('|')[1]));

                    break;

                case "ActualizarUsuario":
                    ActualizarUsuario(sender, int.Parse(e.Parameters.Split('|')[1]));
                    break;

                case "CrearUsuario":
                    CrearUsuario(sender, idUsuario);
                    break;

                case "BorrarTodasLasBodegasAsociadas":
                    var lstBodegaBorrar = new List <BodegaConAccesoPorUsuario>();
                    var IdUsuario       = UiVistaUsuario.GetRowValues(UiVistaUsuario.FocusedRowIndex, "CORRELATIVE").ToString();

                    for (var i = 0; i < UiVistaBodegasAsignadasAUsuario.VisibleRowCount; i++)
                    {
                        lstBodegaBorrar.Add(new BodegaConAccesoPorUsuario
                        {
                            CODE_WAREHOUSE = ((Bodega)UiVistaBodegasAsignadasAUsuario.GetRow(i)).CODE_WAREHOUSE
                        });
                    }
                    UsuarioDeseaQuitarAccesoABodega?.Invoke(sender, new BodegaConAccesoPorUsuarioArgumento {
                        ListaBodegaConAccesoPorUsuario = lstBodegaBorrar
                    });
                    break;
                }
            }
        }