using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Threading.Tasks; using Gestor.Application.Servicos.Generic; using Gestor.Common.Validation; using Gestor.Model.Domain.Generic; using Gestor.Model.Domain.Seguros; namespace Gestor.Application.ViewModels.Generic; public class DialogExportarPermissaoViewModel : BaseSegurosViewModel { private bool _enableGrid = true; private List _usuarios; private ObservableCollection _usuariosFiltrados = new ObservableCollection(); public bool EnableGrid { get { return _enableGrid; } set { _enableGrid = value; OnPropertyChanged("EnableGrid"); } } public List Usuarios { get { return _usuarios; } set { _usuarios = value; OnPropertyChanged("Usuarios"); } } public ObservableCollection UsuariosFiltrados { get { return _usuariosFiltrados; } set { _usuariosFiltrados = value; OnPropertyChanged("UsuariosFiltrados"); } } public DialogExportarPermissaoViewModel(long idUsuario) { Seleciona(idUsuario); } private async void Seleciona(long idUsuario) { Loading(isLoading: true); await SelecionaUsuarios(idUsuario); Loading(isLoading: false); } private async Task SelecionaUsuarios(long idUsuario) { EnableGrid = false; Loading(isLoading: true); Usuarios = (from x in await new BaseServico().BuscarUsuariosAsync() where !x.Excluido && ((DomainBase)x).Id != idUsuario orderby x.Nome select x).ToList(); UsuariosFiltrados = new ObservableCollection(Usuarios); Loading(isLoading: false); EnableGrid = true; } internal async Task> Filtrar(string value) { return await Task.Run(() => FiltrarUsuario(value)); } public List FiltrarUsuario(string filter) { UsuariosFiltrados = (string.IsNullOrWhiteSpace(filter) ? new ObservableCollection(Usuarios) : new ObservableCollection(from x in Usuarios where ValidationHelper.RemoveDiacritics(x.Nome.ToUpper().Trim()).Contains(ValidationHelper.RemoveDiacritics(filter)) orderby !x.Excluido descending, x.Nome select x)); return UsuariosFiltrados.ToList(); } public void Selecionar() { if (UsuariosFiltrados != null && UsuariosFiltrados.Count != 0) { UsuariosFiltrados.ToList().ForEach(delegate(Usuario x) { x.Selecionado = !x.Selecionado; }); UsuariosFiltrados = new ObservableCollection(UsuariosFiltrados); } } }