using Gestor.Application.Helpers; using Gestor.Application.Servicos.Configuracoes; using Gestor.Application.ViewModels.Generic; using Gestor.Common.Validation; using Gestor.Model.Common; using Gestor.Model.Domain.Configuracoes; using Gestor.Model.Domain.Generic; 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.Configuracoes { public class ConfiguracoesViewModel : BaseViewModel { private bool _hasRows; private ObservableCollection _configuracoes; private Configuracao _selectedConfiguracao; private string _descricao; private bool _carregando; private ObservableCollection _configuracoesAdicionadas; private ConfuguracoesServico _servico { get; set; } public bool Carregando { get { return this._carregando; } set { this._carregando = value; base.OnPropertyChanged("Carregando"); } } public ObservableCollection Configuracoes { get { return this._configuracoes; } set { this._configuracoes = value; base.EnableFields = (value != null ? value.Count > 0 : false); base.OnPropertyChanged("Configuracoes"); } } public ObservableCollection ConfiguracoesAdicionadas { get { return this._configuracoesAdicionadas; } set { this._configuracoesAdicionadas = value; this.HasRows = (value != null ? value.Count > 0 : false); this.PopularConfiguracoes(value); base.OnPropertyChanged("ConfiguracoesAdicionadas"); } } public string Descricao { get { return this._descricao; } set { this._descricao = value; base.OnPropertyChanged("Descricao"); } } public bool HasRows { get { return this._hasRows; } set { this._hasRows = value; base.OnPropertyChanged("HasRows"); } } public Configuracao SelectedConfiguracao { get { return this._selectedConfiguracao; } set { this._selectedConfiguracao = value; this.Descricao = ValidationHelper.GetCategory(value); base.OnPropertyChanged("SelectedConfiguracao"); } } public ConfiguracoesViewModel() { this._servico = new ConfuguracoesServico(); base.EnableMenu = true; } public async Task BuscarConfiguracoes() { List configuracaoSistemas = await this._servico.Buscar(); List configuracaoSistemas1 = configuracaoSistemas; Recursos.Configuracoes = ( from x in configuracaoSistemas1 orderby ValidationHelper.GetDescription(x.get_Configuracao()) select x).ToList(); this.ConfiguracoesAdicionadas = new ObservableCollection(configuracaoSistemas); } public async Task Excluir(ConfiguracaoSistema configuracao) { if (await this._servico.Excluir(configuracao)) { await this.BuscarConfiguracoes(); } } private void PopularConfiguracoes(ObservableCollection configuracoes) { if (configuracoes == null) { return; } List configuracaos = new List(); foreach (Configuracao configuracao in from x in (Configuracao[])Enum.GetValues(typeof(Configuracao)) orderby ValidationHelper.GetDescription(x) select x) { if (configuracoes.Any((ConfiguracaoSistema x) => x.get_Configuracao() == configuracao)) { continue; } configuracaos.Add(configuracao); } this.Configuracoes = new ObservableCollection(configuracaos); this.SelectedConfiguracao = this.Configuracoes.FirstOrDefault(); } public async Task Salvar() { ConfuguracoesServico confuguracoesServico = this._servico; ConfiguracaoSistema configuracaoSistema = new ConfiguracaoSistema(); configuracaoSistema.set_Configuracao(this.SelectedConfiguracao); if (await confuguracoesServico.Salvar(configuracaoSistema).get_Id() != 0) { await this.BuscarConfiguracoes(); } } } }