public ActionResult Editar(int id)
 {
     Usuario usuario = Uow.Usuarios.Obtener(u => u.UsuarioId == id, u => u.Roles,
                 u => u.UsuarioProveedores, u => u.UsuarioProveedores.Select(m => m.Proveedor));
     var model = new UsuarioConPasswordOpcionalModel()
                     {
                         Usuario = usuario,
                         RoleId = usuario.Roles.FirstOrDefault().RoleId
                     };
     LlenarControles(model);
     return PartialView(model);
 }
        public ActionResult Editar(UsuarioConPasswordOpcionalModel model)
        {
            if (!ModelState.IsValid)
            {
                LlenarControles(model);
                return PartialView(model);
            }

            if (!string.IsNullOrEmpty(model.Password))
            {
                var encondedPassword = Crypto.HashPassword(model.Password);
                Uow.Usuarios.CambiarPassword(model.Usuario.UsuarioId, encondedPassword, DateTime.Now);
            }

            model.Usuario.Desincronizado = true;
            Uow.Usuarios.Modificar(model.Usuario);
            Uow.Commit();

            if (model.ProveedoresIds != null)
            {
                model.Usuario.UsuarioProveedores = model.ProveedoresIds.Select(p =>
                    new UsuarioProveedor
                    {
                        ProveedorId = p,
                        UsuarioId = model.Usuario.UsuarioId
                    }).ToList();
            }

            Uow.Usuarios.InsertarDependencias(model.Usuario, model.RoleId);

            return new JsonResult() { Data = new { exito = true }, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
        }