/// <summary>
 /// Desproteje el token del usuario
 /// </summary>
 /// <param name="user"></param>
 /// <returns></returns>
 public static User UnprotectToken(User user)
 {
     if (user == null)
         return null;
     user.AuthenticationToken = UnprotectToken(user.AuthenticationToken);
     return user;
 }
 /// <summary>
 /// Registra un usuario en la api para su uso y asignación en la aplicación
 /// </summary>
 /// <param name="userToRegister">usuario a registrar</param>
 public static IObservable<User> RegisterUser(User userToRegister)
 {
     return RestEndpointFactory
              .Create<IUsersEndpoint>(SessionManager.Instance.CurrentLoggedUser)
              .RegisterUser(userToRegister).ToObservable()
              .SubscribeOn(TaskPoolScheduler.Default)
              .InterpretingErrors();
 }
 /// <summary>
 /// Verifica si el usuario tiene cierto permiso en alguno de sus roles asignados
 /// </summary>
 /// <param name="user">usuario a verificar</param>
 /// <param name="permission">permiso a verificar</param>
 /// <returns>true si es que tiene el permiso</returns>
 public bool HasPermission(User user, Permission permission)
 {
     foreach (var role in user.Roles)
     {
         if (role.Permissions.Any(perm => perm.Name == permission.Name))
             return true;
     }
     return false;
 }
 /// <summary>
 /// Verifica que los parámetros de busqueda de un usuario coincidan con ese para
 /// que sea agregado o no a un filtro
 /// </summary>
 /// <param name="user"></param>
 /// <param name="searchQuery"></param>
 /// <returns></returns>
 public static bool MatchesSearchQuery(User user, string searchQuery)
 {
     bool resp = user.FirstName.ToLower().Contains(searchQuery) ||
                 user.LastName.ToLower().Contains(searchQuery) ||
                 user.Username.ToLower().Contains(searchQuery);
     if (!resp && searchQuery.Contains(' ')) // call recursive if not contained
     {
         var searchParams = searchQuery.Split(' ');
         foreach (var searchParam in searchParams)
         {
             resp = MatchesSearchQuery(user, searchParam);
             if (resp)
                 return resp;
         }
     }
     return resp;
 }
 public void ShowUserRegisteredSuccessfully(User user)
 {
     Dispatcher.InvokeAsync(() =>
     {
         var mainWindow = MainWindowService.Instance.MainWindow;
         mainWindow.StatusBarDefault();
         mainWindow.UsersView(true);
         mainWindow.NotifyUser(Properties.Resources.TitleSuccess,
             string.Format(Properties.Resources.MsgUserRegisteredSuccessfully, user.FullName));
     });
 }
 public UserDetails(User user)
 {
     InitializeComponent();
     DataContext = new UserDetailsPresenter(this, user);
 }
 /// <summary>
 /// Verifica si el usuario tiene acceso de administrador al sistema
 /// </summary>
 /// <param name="user">usuario a verificar</param>
 /// <returns>true si es que tiene el permiso</returns>
 public bool HasAdminAccessPermission(User user)
 {
     return HasPermission(user, Permission.ADMIN_ACCESS);
 }
 public void ShowUserDetails(User user)
 {
     var userDetails = new UserDetails(user);
     MainWindowService.Instance.MainWindow.CurrentView(userDetails);
 }
 public void NotifySuccessfulLogin(User loggedUser)
 {
     Dispatcher.InvokeAsync(() =>
     {
         _manualClosing = true;
         Close();
         _manualClosing = false;
         if (UserLoggedIn != null)
             UserLoggedIn(this, loggedUser);
     });
 }