diff options
Diffstat (limited to 'Decompiler/Gestor.Application.ViewModels.Ferramentas/StatusViewModel.cs')
| -rw-r--r-- | Decompiler/Gestor.Application.ViewModels.Ferramentas/StatusViewModel.cs | 295 |
1 files changed, 295 insertions, 0 deletions
diff --git a/Decompiler/Gestor.Application.ViewModels.Ferramentas/StatusViewModel.cs b/Decompiler/Gestor.Application.ViewModels.Ferramentas/StatusViewModel.cs new file mode 100644 index 0000000..2f758d1 --- /dev/null +++ b/Decompiler/Gestor.Application.ViewModels.Ferramentas/StatusViewModel.cs @@ -0,0 +1,295 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Threading.Tasks; +using Gestor.Application.Helpers; +using Gestor.Application.Servicos.Ferramentas; +using Gestor.Application.Servicos.Generic; +using Gestor.Application.ViewModels.Generic; +using Gestor.Common.Validation; +using Gestor.Model.Common; +using Gestor.Model.Domain.Generic; +using Gestor.Model.Domain.Seguros; + +namespace Gestor.Application.ViewModels.Ferramentas; + +public class StatusViewModel : BaseSegurosViewModel +{ + private readonly StatusServico _servico; + + private Status _selectedStatus; + + public Status CancelStatus; + + private ObservableCollection<Status> _statusFiltrados = new ObservableCollection<Status>(); + + private bool _isExpanded; + + public Status SelectedStatus + { + get + { + return _selectedStatus; + } + set + { + _selectedStatus = value; + WorkOnSelectedStatus(value); + VerificarEnables((value != null) ? new long?(((DomainBase)value).Id) : null); + OnPropertyChanged("SelectedStatus"); + } + } + + public ObservableCollection<Status> StatusFiltrados + { + get + { + return _statusFiltrados; + } + set + { + _statusFiltrados = value; + IsExpanded = value != null && value.Count > 0; + OnPropertyChanged("StatusFiltrados"); + } + } + + public bool IsExpanded + { + get + { + return _isExpanded; + } + set + { + _isExpanded = value; + OnPropertyChanged("IsExpanded"); + } + } + + public List<Status> Status { get; set; } + + public StatusViewModel() + { + _servico = new StatusServico(); + base.EnableMenu = true; + Seleciona(); + } + + private async void Seleciona() + { + Loading(isLoading: true); + await PermissaoTela((TipoTela)11); + await SelecionaStatuses(); + Loading(isLoading: false); + } + + private async Task SelecionaStatuses() + { + Loading(isLoading: true); + Status = (from x in await new BaseServico().BuscarStatusAsync() + orderby x.Ativo descending, x.Nome + select x).ToList(); + StatusFiltrados = new ObservableCollection<Status>(Status); + SelectedStatus = StatusFiltrados.FirstOrDefault(); + Recursos.Status = Status; + Loading(isLoading: false); + } + + public async Task<List<KeyValuePair<string, string>>> Validate() + { + if (string.IsNullOrWhiteSpace(SelectedStatus.Nome)) + { + return new List<KeyValuePair<string, string>>(); + } + List<KeyValuePair<string, string>> errors = new List<KeyValuePair<string, string>>(); + bool valida = true; + List<Status> list = await new BaseServico().BuscarStatus(SelectedStatus.Nome); + if (list.Count > 0) + { + list.ForEach(delegate(Status x) + { + if (((DomainBase)x).Id != ((DomainBase)SelectedStatus).Id && x.Nome == SelectedStatus.Nome) + { + valida = false; + } + }); + } + if (!valida) + { + errors.Add(new KeyValuePair<string, string>("Nome", "UM STATUS COM O MESMO NOME JÁ EXISTE.")); + } + return errors; + } + + public async Task<List<KeyValuePair<string, string>>> Salvar() + { + List<KeyValuePair<string, string>> errorMessages = SelectedStatus.Validate(); + List<KeyValuePair<string, string>> list = errorMessages; + list.AddRange(await Validate()); + if (errorMessages.Count > 0) + { + return errorMessages; + } + string acao = ((((DomainBase)SelectedStatus).Id == 0L) ? "INCLUIU" : "ALTEROU"); + Status value = await _servico.Save(SelectedStatus); + if (!_servico.Sucesso) + { + return null; + } + RegistrarAcao(acao + " STATUS ID \"" + value.Nome + "\"", ((DomainBase)value).Id, (TipoTela)11, string.Format("ID: {0}\nATIVO: {1}", ((DomainBase)value).Id, value.Ativo ? "SIM" : "NÃO")); + if (Status.Any((Status x) => ((DomainBase)x).Id == ((DomainBase)value).Id)) + { + DomainBase.Copy<Status, Status>(Status.First((Status x) => ((DomainBase)x).Id == ((DomainBase)value).Id), value); + } + else + { + Status.Add(value); + } + if (StatusFiltrados.Any((Status x) => ((DomainBase)x).Id == ((DomainBase)value).Id)) + { + DomainBase.Copy<Status, Status>(StatusFiltrados.First((Status x) => ((DomainBase)x).Id == ((DomainBase)value).Id), value); + } + else + { + StatusFiltrados.Add(value); + } + StatusFiltrados = new ObservableCollection<Status>(StatusFiltrados); + WorkOnSelectedStatus(value, registrar: false); + Recursos.Status = Status; + Alterar(alterar: false); + ToggleSnackBar("STATUS SALVO COM SUCESSO"); + return null; + } + + public void CancelarAlteracao() + { + if (CancelStatus != null && Status.Any((Status x) => ((DomainBase)x).Id == ((DomainBase)CancelStatus).Id)) + { + DomainBase.Copy<Status, Status>(Status.First((Status x) => ((DomainBase)x).Id == ((DomainBase)CancelStatus).Id), CancelStatus); + if (StatusFiltrados.Count > 0 && StatusFiltrados.Any((Status x) => ((DomainBase)x).Id == ((DomainBase)CancelStatus).Id)) + { + DomainBase.Copy<Status, Status>(StatusFiltrados.First((Status x) => ((DomainBase)x).Id == ((DomainBase)CancelStatus).Id), CancelStatus); + } + else + { + StatusFiltrados.Add(CancelStatus); + } + StatusFiltrados = new ObservableCollection<Status>(StatusFiltrados); + SelectedStatus = StatusFiltrados.First((Status x) => ((DomainBase)x).Id == ((DomainBase)CancelStatus).Id); + } + else + { + Incluir(); + } + Alterar(alterar: false); + } + + public void Incluir() + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0006: Unknown result type (might be due to invalid IL or missing references) + //IL_0012: Expected O, but got Unknown + SelectedStatus = new Status + { + Ativo = true + }; + Alterar(alterar: true); + } + + internal async Task<List<Status>> Filtrar(string value) + { + return await Task.Run(() => FiltrarStatus(value)); + } + + public List<Status> FiltrarStatus(string filter) + { + StatusFiltrados = (string.IsNullOrWhiteSpace(filter) ? new ObservableCollection<Status>(Status) : new ObservableCollection<Status>(from x in Status + where ValidationHelper.RemoveDiacritics(x.Nome.Trim()).ToUpper().Contains(ValidationHelper.RemoveDiacritics(filter)) + orderby x.Ativo descending, x.Nome + select x)); + return StatusFiltrados.ToList(); + } + + public async void SelecionaStatus(Status status) + { + Status val = await _servico.BuscarStatusPorId(((DomainBase)status).Id); + DomainBase.Copy<Status, Status>(StatusFiltrados.First((Status x) => ((DomainBase)x).Id == ((DomainBase)status).Id), val); + SelectedStatus = StatusFiltrados.First((Status x) => ((DomainBase)x).Id == ((DomainBase)status).Id); + } + + public async void Excluir() + { + if (SelectedStatus == null || ((DomainBase)SelectedStatus).Id == 0L) + { + return; + } + Loading(isLoading: true); + List<Documento> list = await new BaseServico().BuscarDocumentosPorStatus(((DomainBase)SelectedStatus).Id); + Loading(isLoading: false); + if (list.Count > 0) + { + string text = "ESTIPULANTE NÃO PODE SER EXCLUÍDO POIS ESTÁ VINCULADO AOS SEGUINTES DOCUMENTOS:"; + foreach (Documento item in list) + { + text = ((!string.IsNullOrWhiteSpace(item.Apolice)) ? (text + $"{Environment.NewLine}DOCUMENTO {list.IndexOf(item) + 1} (NÚMERO DA PROPOSTA: {item.Proposta}, NÚMERO DA APÓLICE: {item.Apolice})") : (text + $"{Environment.NewLine}DOCUMENTO {list.IndexOf(item) + 1} (NÚMERO DA PROPOSTA: {item.Proposta})")); + } + await ShowMessage(text); + } + else + { + if (!(await ShowMessage("DESEJA EXCLUIR?", "SIM", "NÃO"))) + { + return; + } + Loading(isLoading: true); + if (!(await _servico.Delete(SelectedStatus))) + { + Loading(isLoading: false); + return; + } + RegistrarAcao("EXCLUIU STATUS \"" + SelectedStatus.Nome + "\"", ((DomainBase)SelectedStatus).Id, (TipoTela)11, string.Format("ID: {0}\nATIVO: {1}", ((DomainBase)SelectedStatus).Id, SelectedStatus.Ativo ? "SIM" : "NÃO")); + int num = StatusFiltrados.IndexOf(SelectedStatus); + Status.Remove(SelectedStatus); + StatusFiltrados.Remove(SelectedStatus); + StatusFiltrados = new ObservableCollection<Status>(StatusFiltrados); + if (StatusFiltrados.Count > 0) + { + SelectedStatus = ((num < StatusFiltrados.Count) ? StatusFiltrados.ElementAt(num) : StatusFiltrados.Last()); + } + else + { + SelectedStatus = new Status(); + Alterar(alterar: false); + base.EnableMenu = false; + } + Loading(isLoading: false); + ToggleSnackBar("ESTIPULANTE EXCLUÍDO COM SUCESSO"); + } + } + + private void WorkOnSelectedStatus(Status value, bool registrar = true) + { + //IL_002e: Unknown result type (might be due to invalid IL or missing references) + //IL_0069: Unknown result type (might be due to invalid IL or missing references) + //IL_0070: Invalid comparison between Unknown and I4 + //IL_00ef: Unknown result type (might be due to invalid IL or missing references) + CancelStatus = (Status)((value == null || ((DomainBase)value).Id == 0L) ? ((object)CancelStatus) : ((object)(Status)((DomainBase)value).Clone())); + if (value == null || ((DomainBase)value).Id == 0L || (LastAccessId == ((DomainBase)value).Id && (int)LastAccessTela == 11)) + { + return; + } + if (registrar) + { + RegistrarAcao("ACESSOU STATUS \"" + value.Nome + "\"", ((DomainBase)value).Id, (TipoTela)11, string.Format("ID: {0}\nATIVO: {1}", ((DomainBase)value).Id, value.Ativo ? "SIM" : "NÃO")); + } + LastAccessId = ((DomainBase)value).Id; + LastAccessTela = (TipoTela)11; + Status selectedStatus = SelectedStatus; + if (((selectedStatus != null) ? new long?(((DomainBase)selectedStatus).Id) : null) != ((DomainBase)value).Id) + { + SelectedStatus = ((IEnumerable<Status>)StatusFiltrados).FirstOrDefault((Func<Status, bool>)((Status x) => ((DomainBase)x).Id == ((DomainBase)value).Id)); + } + } +} |