using Gestor.Application.Servicos.Generic; using Gestor.Common.Validation; using Gestor.Model.Domain.Generic; using Gestor.Model.Domain.Seguros; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.Linq; using System.Runtime.CompilerServices; using System.Threading.Tasks; 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 this._enableGrid; } set { this._enableGrid = value; base.OnPropertyChanged("EnableGrid"); } } public List Usuarios { get { return this._usuarios; } set { this._usuarios = value; base.OnPropertyChanged("Usuarios"); } } public ObservableCollection UsuariosFiltrados { get { return this._usuariosFiltrados; } set { this._usuariosFiltrados = value; base.OnPropertyChanged("UsuariosFiltrados"); } } public DialogExportarPermissaoViewModel(long idUsuario) { this.Seleciona(idUsuario); } internal async Task> Filtrar(string value) { List usuarios = await Task.Run>(() => this.FiltrarUsuario(value)); return usuarios; } public List FiltrarUsuario(string filter) { this.UsuariosFiltrados = (string.IsNullOrWhiteSpace(filter) ? new ObservableCollection(this.Usuarios) : new ObservableCollection( from x in this.Usuarios where ValidationHelper.RemoveDiacritics(x.get_Nome().ToUpper().Trim()).Contains(ValidationHelper.RemoveDiacritics(filter)) orderby !x.get_Excluido() descending, x.get_Nome() select x)); return this.UsuariosFiltrados.ToList(); } private async void Seleciona(long idUsuario) { base.Loading(true); await this.SelecionaUsuarios(idUsuario); base.Loading(false); } public void Selecionar() { if (this.UsuariosFiltrados == null || this.UsuariosFiltrados.Count == 0) { return; } this.UsuariosFiltrados.ToList().ForEach((Usuario x) => x.set_Selecionado(!x.get_Selecionado())); this.UsuariosFiltrados = new ObservableCollection(this.UsuariosFiltrados); } private async Task SelecionaUsuarios(long idUsuario) { this.EnableGrid = false; base.Loading(true); List usuarios = await (new BaseServico()).BuscarUsuariosAsync(); DialogExportarPermissaoViewModel list = this; IEnumerable usuarios1 = usuarios.Where((Usuario x) => { if (x.get_Excluido()) { return false; } return x.get_Id() != idUsuario; }); list.Usuarios = ( from x in usuarios1 orderby x.get_Nome() select x).ToList(); this.UsuariosFiltrados = new ObservableCollection(this.Usuarios); base.Loading(false); this.EnableGrid = true; } } }