From 1f4e14b2e973ee7de337fd4866d9a5ceff5cb6d1 Mon Sep 17 00:00:00 2001 From: Lucas Faria Mendes Date: Mon, 30 Mar 2026 10:38:18 -0300 Subject: chore: location --- .../Ferramentas/StatusProspeccaoViewModel.cs | 326 +++++++++++++++++++++ 1 file changed, 326 insertions(+) create mode 100644 Codemerx/Gestor.Application/ViewModels/Ferramentas/StatusProspeccaoViewModel.cs (limited to 'Codemerx/Gestor.Application/ViewModels/Ferramentas/StatusProspeccaoViewModel.cs') diff --git a/Codemerx/Gestor.Application/ViewModels/Ferramentas/StatusProspeccaoViewModel.cs b/Codemerx/Gestor.Application/ViewModels/Ferramentas/StatusProspeccaoViewModel.cs new file mode 100644 index 0000000..4643cd1 --- /dev/null +++ b/Codemerx/Gestor.Application/ViewModels/Ferramentas/StatusProspeccaoViewModel.cs @@ -0,0 +1,326 @@ +using Gestor.Application.Helpers; +using Gestor.Application.Servicos; +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.Ferramentas; +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.Ferramentas +{ + public class StatusProspeccaoViewModel : BaseSegurosViewModel + { + private readonly StatusProspeccaoServico _servico; + + private readonly ProspeccaoServico _servicoProspeccao; + + public StatusDeProspeccao CancelStatusProspeccao; + + private ObservableCollection _statusProspeccaoFiltrados = new ObservableCollection(); + + private bool _isExpanded; + + private StatusDeProspeccao _selectedStatusProspeccao; + + public bool IsExpanded + { + get + { + return this._isExpanded; + } + set + { + this._isExpanded = value; + base.OnPropertyChanged("IsExpanded"); + } + } + + public StatusDeProspeccao SelectedStatusProspeccao + { + get + { + return this._selectedStatusProspeccao; + } + set + { + long? nullable; + this._selectedStatusProspeccao = value; + this.WorkOnSelectedStatusProspeccao(value, true); + if (value != null) + { + nullable = new long?(value.get_Id()); + } + else + { + nullable = null; + } + base.VerificarEnables(nullable); + base.OnPropertyChanged("SelectedStatusProspeccao"); + } + } + + public List StatusProspeccao + { + get; + set; + } + + public ObservableCollection StatusProspeccaoFiltrados + { + get + { + return this._statusProspeccaoFiltrados; + } + set + { + this._statusProspeccaoFiltrados = value; + this.IsExpanded = (value != null ? value.Count > 0 : false); + base.OnPropertyChanged("StatusProspeccaoFiltrados"); + } + } + + public StatusProspeccaoViewModel() + { + this._servico = new StatusProspeccaoServico(); + this._servicoProspeccao = new ProspeccaoServico(); + base.EnableMenu = true; + this.Seleciona(); + } + + public void CancelarAlteracao() + { + if (this.CancelStatusProspeccao == null || !this.StatusProspeccao.Any((StatusDeProspeccao x) => x.get_Id() == this.CancelStatusProspeccao.get_Id())) + { + this.Incluir(); + } + else + { + DomainBase.Copy(this.StatusProspeccao.First((StatusDeProspeccao x) => x.get_Id() == this.CancelStatusProspeccao.get_Id()), this.CancelStatusProspeccao); + if (this.StatusProspeccaoFiltrados.Count <= 0 || !this.StatusProspeccaoFiltrados.Any((StatusDeProspeccao x) => x.get_Id() == this.CancelStatusProspeccao.get_Id())) + { + this.StatusProspeccaoFiltrados.Add(this.CancelStatusProspeccao); + } + else + { + DomainBase.Copy(this.StatusProspeccaoFiltrados.First((StatusDeProspeccao x) => x.get_Id() == this.CancelStatusProspeccao.get_Id()), this.CancelStatusProspeccao); + } + this.StatusProspeccaoFiltrados = new ObservableCollection(this.StatusProspeccaoFiltrados); + this.SelectedStatusProspeccao = this.StatusProspeccaoFiltrados.First((StatusDeProspeccao x) => x.get_Id() == this.CancelStatusProspeccao.get_Id()); + } + base.Alterar(false); + } + + public async void Excluir() + { + object obj; + if (this.SelectedStatusProspeccao != null && this.SelectedStatusProspeccao.get_Id() != 0) + { + if (await this._servicoProspeccao.BuscarProspeccoesPorStatus(this.SelectedStatusProspeccao).Count > 0) + { + await base.ShowMessage(string.Concat("O STATUS ", this.SelectedStatusProspeccao.get_Nome(), ", NÃO PODE SER EXCLUÍDO, POIS ESTÁ CADASTRADO EM UMA PROSPECÇÃO"), "OK", "", false); + } + else if (await base.ShowMessage(string.Concat("DESEJA REALMENTE EXCLUIR O STATUS DE PROSPECÇÃO ", this.SelectedStatusProspeccao.get_Nome(), "?"), "SIM", "NÃO", false)) + { + base.Loading(true); + this.SelectedStatusProspeccao.set_Excluido(true); + this.SelectedStatusProspeccao.set_Ativo(false); + await this._servico.Save(this.SelectedStatusProspeccao); + if (this._servico.Sucesso) + { + StatusProspeccaoViewModel statusProspeccaoViewModel = this; + string str = string.Concat("EXCLUIU STATUS DE PROSPECÇÃO \"", this.SelectedStatusProspeccao.get_Nome(), "\""); + long id = this.SelectedStatusProspeccao.get_Id(); + TipoTela? nullable = new TipoTela?(57); + object id1 = this.SelectedStatusProspeccao.get_Id(); + obj = (this.SelectedStatusProspeccao.get_Ativo() ? "SIM" : "NÃO"); + statusProspeccaoViewModel.RegistrarAcao(str, id, nullable, string.Format("ID: {0}\nATIVO: {1}\nDESCRIÇÃO: \"{2}\"", id1, obj, this.SelectedStatusProspeccao.get_Descricao())); + this.StatusProspeccao.Remove(this.SelectedStatusProspeccao); + this.StatusProspeccaoFiltrados.Remove(this.SelectedStatusProspeccao); + Recursos.StatusProspeccao.Remove(this.SelectedStatusProspeccao); + this.SelectedStatusProspeccao = this.StatusProspeccaoFiltrados.FirstOrDefault(); + await this.SelecionaStatusProspeccao(); + base.Loading(false); + base.ToggleSnackBar("STATUS DE PROSPECÇÃO EXCLUÍDO COM SUCESSO", true); + } + else + { + base.Loading(false); + } + } + } + } + + public async Task> Filtrar(string value) + { + List statusDeProspeccaos = await Task.Run>(() => this.FiltrarStatusProspeccao(value)); + return statusDeProspeccaos; + } + + public List FiltrarStatusProspeccao(string filter) + { + this.StatusProspeccaoFiltrados = (string.IsNullOrWhiteSpace(filter) ? new ObservableCollection(this.StatusProspeccao) : new ObservableCollection( + from x in this.StatusProspeccao + where ValidationHelper.RemoveDiacritics(x.get_Nome().Trim()).ToUpper().Contains(ValidationHelper.RemoveDiacritics(filter)) + orderby x.get_Ativo() descending, x.get_Nome() + select x)); + this.SelectedStatusProspeccao = this.StatusProspeccaoFiltrados.FirstOrDefault(); + return this.StatusProspeccaoFiltrados.ToList(); + } + + public void Incluir() + { + StatusDeProspeccao statusDeProspeccao = new StatusDeProspeccao(); + statusDeProspeccao.set_Ativo(true); + statusDeProspeccao.set_Excluido(false); + this.SelectedStatusProspeccao = statusDeProspeccao; + base.Alterar(true); + } + + public async Task>> Salvar() + { + List> keyValuePairs; + string str; + object obj; + string str1; + List> keyValuePairs1 = this.SelectedStatusProspeccao.Validate(); + keyValuePairs1.AddRange(this.Validate()); + if (keyValuePairs1.Count <= 0) + { + str = (this.SelectedStatusProspeccao.get_Id() == 0 ? "INCLUIU" : "ALTEROU"); + str1 = str; + StatusDeProspeccao statusDeProspeccao = await this._servico.Save(this.SelectedStatusProspeccao); + if (this._servico.Sucesso) + { + StatusProspeccaoViewModel statusProspeccaoViewModel = this; + string str2 = string.Concat(str1, " STATUS DE PROSPECÇÃO \"", statusDeProspeccao.get_Nome(), "\""); + long id = statusDeProspeccao.get_Id(); + TipoTela? nullable = new TipoTela?(57); + object id1 = statusDeProspeccao.get_Id(); + obj = (statusDeProspeccao.get_Ativo() ? "SIM" : "NÃO"); + statusProspeccaoViewModel.RegistrarAcao(str2, id, nullable, string.Format("ID: {0}\nATIVO: {1}\nDESCRIÇÃO: \"{2}\"", id1, obj, statusDeProspeccao.get_Descricao())); + if (!this.StatusProspeccao.Any((StatusDeProspeccao x) => x.get_Id() == statusDeProspeccao.get_Id())) + { + this.StatusProspeccao.Add(statusDeProspeccao); + } + else + { + DomainBase.Copy(this.StatusProspeccao.First((StatusDeProspeccao x) => x.get_Id() == statusDeProspeccao.get_Id()), statusDeProspeccao); + } + if (!this.StatusProspeccaoFiltrados.Any((StatusDeProspeccao x) => x.get_Id() == statusDeProspeccao.get_Id())) + { + this.StatusProspeccaoFiltrados.Add(statusDeProspeccao); + } + else + { + DomainBase.Copy(this.StatusProspeccaoFiltrados.First((StatusDeProspeccao x) => x.get_Id() == statusDeProspeccao.get_Id()), statusDeProspeccao); + } + this.StatusProspeccaoFiltrados = new ObservableCollection(this.StatusProspeccaoFiltrados); + this.WorkOnSelectedStatusProspeccao(statusDeProspeccao, false); + Recursos.StatusProspeccao = this.StatusProspeccao; + base.Alterar(false); + base.ToggleSnackBar("STATUS DE PROSPECÇÃO SALVO COM SUCESSO", true); + keyValuePairs = null; + } + else + { + keyValuePairs = null; + } + } + else + { + keyValuePairs = keyValuePairs1; + } + str1 = null; + return keyValuePairs; + } + + private async void Seleciona() + { + base.Loading(true); + await base.PermissaoTela(57); + await this.SelecionaStatusProspeccao(); + base.Loading(false); + } + + private async Task SelecionaStatusProspeccao() + { + base.Loading(true); + List statusDeProspeccaos = await this._servico.BuscarProspeccoes(); + StatusProspeccaoViewModel list = this; + List statusDeProspeccaos1 = statusDeProspeccaos; + IEnumerable excluido = + from x in statusDeProspeccaos1 + where !x.get_Excluido() + select x; + IOrderedEnumerable ativo = + from x in excluido + orderby x.get_Ativo() descending + select x; + list.StatusProspeccao = ativo.ThenBy((StatusDeProspeccao x) => x.get_Nome()).ToList(); + this.StatusProspeccaoFiltrados = new ObservableCollection(this.StatusProspeccao); + this.SelectedStatusProspeccao = this.StatusProspeccaoFiltrados.FirstOrDefault(); + base.Loading(false); + } + + public List> Validate() + { + List> keyValuePairs = new List>(); + if (string.IsNullOrWhiteSpace(this.SelectedStatusProspeccao.get_Nome())) + { + return keyValuePairs; + } + if (this.StatusProspeccao.Any((StatusDeProspeccao x) => { + if (!x.get_Nome().Contains(this.SelectedStatusProspeccao.get_Nome())) + { + return false; + } + return x.get_Id() != this.SelectedStatusProspeccao.get_Id(); + })) + { + keyValuePairs.Add(new KeyValuePair("Nome", "UM STATUS DE PROSPECÇÃO COM O MESMO NOME JÁ EXISTE.")); + } + return keyValuePairs; + } + + private void WorkOnSelectedStatusProspeccao(StatusDeProspeccao value, bool registrar = true) + { + long? nullable; + this.CancelStatusProspeccao = (value == null || value.get_Id() == 0 ? this.CancelStatusProspeccao : (StatusDeProspeccao)value.Clone()); + if (value == null || value.get_Id() == 0 || this.LastAccessId == value.get_Id() && this.LastAccessTela == 57) + { + return; + } + if (registrar) + { + base.RegistrarAcao(string.Concat("ACESSOU STATUS DE PROSPECÇÃO \"", value.get_Nome(), "\""), value.get_Id(), new TipoTela?(57), string.Format("ID: {0}\nATIVO: {1}\nDESCRIÇÃO: \"{2}\"", value.get_Id(), (value.get_Ativo() ? "SIM" : "NÃO"), value.get_Descricao())); + } + this.LastAccessId = value.get_Id(); + this.LastAccessTela = 57; + StatusDeProspeccao selectedStatusProspeccao = this.SelectedStatusProspeccao; + if (selectedStatusProspeccao != null) + { + nullable = new long?(selectedStatusProspeccao.get_Id()); + } + else + { + nullable = null; + } + long? nullable1 = nullable; + long id = value.get_Id(); + if (nullable1.GetValueOrDefault() != id | !nullable1.HasValue) + { + this.SelectedStatusProspeccao = this.StatusProspeccaoFiltrados.FirstOrDefault((StatusDeProspeccao x) => x.get_Id() == value.get_Id()); + } + } + } +} \ No newline at end of file -- cgit v1.2.3