From 674ca83ba9243a9e95a7568c797668dab6aee26a Mon Sep 17 00:00:00 2001 From: Lucas Faria Mendes Date: Mon, 30 Mar 2026 10:35:25 -0300 Subject: feat: upload files --- .../ViewModels/Ferramentas/StatusViewModel.cs | 367 +++++++++++++++++++++ 1 file changed, 367 insertions(+) create mode 100644 Gestor.Application/ViewModels/Ferramentas/StatusViewModel.cs (limited to 'Gestor.Application/ViewModels/Ferramentas/StatusViewModel.cs') diff --git a/Gestor.Application/ViewModels/Ferramentas/StatusViewModel.cs b/Gestor.Application/ViewModels/Ferramentas/StatusViewModel.cs new file mode 100644 index 0000000..93b36c1 --- /dev/null +++ b/Gestor.Application/ViewModels/Ferramentas/StatusViewModel.cs @@ -0,0 +1,367 @@ +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; +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 StatusViewModel : BaseSegurosViewModel + { + private readonly StatusServico _servico; + + private Gestor.Model.Domain.Seguros.Status _selectedStatus; + + public Gestor.Model.Domain.Seguros.Status CancelStatus; + + private ObservableCollection _statusFiltrados = new ObservableCollection(); + + private bool _isExpanded; + + public bool IsExpanded + { + get + { + return this._isExpanded; + } + set + { + this._isExpanded = value; + base.OnPropertyChanged("IsExpanded"); + } + } + + public Gestor.Model.Domain.Seguros.Status SelectedStatus + { + get + { + return this._selectedStatus; + } + set + { + long? nullable; + this._selectedStatus = value; + this.WorkOnSelectedStatus(value, true); + if (value != null) + { + nullable = new long?(value.get_Id()); + } + else + { + nullable = null; + } + base.VerificarEnables(nullable); + base.OnPropertyChanged("SelectedStatus"); + } + } + + public List Status + { + get; + set; + } + + public ObservableCollection StatusFiltrados + { + get + { + return this._statusFiltrados; + } + set + { + this._statusFiltrados = value; + this.IsExpanded = (value != null ? value.Count > 0 : false); + base.OnPropertyChanged("StatusFiltrados"); + } + } + + public StatusViewModel() + { + this._servico = new StatusServico(); + base.EnableMenu = true; + this.Seleciona(); + } + + public void CancelarAlteracao() + { + if (this.CancelStatus == null || !this.Status.Any((Gestor.Model.Domain.Seguros.Status x) => x.get_Id() == this.CancelStatus.get_Id())) + { + this.Incluir(); + } + else + { + DomainBase.Copy(this.Status.First((Gestor.Model.Domain.Seguros.Status x) => x.get_Id() == this.CancelStatus.get_Id()), this.CancelStatus); + if (this.StatusFiltrados.Count <= 0 || !this.StatusFiltrados.Any((Gestor.Model.Domain.Seguros.Status x) => x.get_Id() == this.CancelStatus.get_Id())) + { + this.StatusFiltrados.Add(this.CancelStatus); + } + else + { + DomainBase.Copy(this.StatusFiltrados.First((Gestor.Model.Domain.Seguros.Status x) => x.get_Id() == this.CancelStatus.get_Id()), this.CancelStatus); + } + this.StatusFiltrados = new ObservableCollection(this.StatusFiltrados); + this.SelectedStatus = this.StatusFiltrados.First((Gestor.Model.Domain.Seguros.Status x) => x.get_Id() == this.CancelStatus.get_Id()); + } + base.Alterar(false); + } + + public async void Excluir() + { + object obj; + Gestor.Model.Domain.Seguros.Status statu; + if (this.SelectedStatus != null && this.SelectedStatus.get_Id() != 0) + { + base.Loading(true); + List documentos = await (new BaseServico()).BuscarDocumentosPorStatus(this.SelectedStatus.get_Id()); + base.Loading(false); + if (documentos.Count > 0) + { + string str = "ESTIPULANTE NÃO PODE SER EXCLUÍDO POIS ESTÁ VINCULADO AOS SEGUINTES DOCUMENTOS:"; + foreach (Documento documento in documentos) + { + if (!string.IsNullOrWhiteSpace(documento.get_Apolice())) + { + object[] newLine = new object[] { Environment.NewLine, documentos.IndexOf(documento) + 1, documento.get_Proposta(), documento.get_Apolice() }; + str = string.Concat(str, string.Format("{0}DOCUMENTO {1} (NÚMERO DA PROPOSTA: {2}, NÚMERO DA APÓLICE: {3})", newLine)); + } + else + { + str = string.Concat(str, string.Format("{0}DOCUMENTO {1} (NÚMERO DA PROPOSTA: {2})", Environment.NewLine, documentos.IndexOf(documento) + 1, documento.get_Proposta())); + } + } + await base.ShowMessage(str, "OK", "", false); + } + else if (await base.ShowMessage("DESEJA EXCLUIR?", "SIM", "NÃO", false)) + { + base.Loading(true); + if (await this._servico.Delete(this.SelectedStatus)) + { + StatusViewModel statusViewModel = this; + string str1 = string.Concat("EXCLUIU STATUS \"", this.SelectedStatus.get_Nome(), "\""); + long id = this.SelectedStatus.get_Id(); + TipoTela? nullable = new TipoTela?(11); + object id1 = this.SelectedStatus.get_Id(); + obj = (this.SelectedStatus.get_Ativo() ? "SIM" : "NÃO"); + statusViewModel.RegistrarAcao(str1, id, nullable, string.Format("ID: {0}\nATIVO: {1}", id1, obj)); + int num = this.StatusFiltrados.IndexOf(this.SelectedStatus); + this.Status.Remove(this.SelectedStatus); + this.StatusFiltrados.Remove(this.SelectedStatus); + this.StatusFiltrados = new ObservableCollection(this.StatusFiltrados); + if (this.StatusFiltrados.Count <= 0) + { + this.SelectedStatus = new Gestor.Model.Domain.Seguros.Status(); + base.Alterar(false); + base.EnableMenu = false; + } + else + { + StatusViewModel statusViewModel1 = this; + statu = (num < this.StatusFiltrados.Count ? this.StatusFiltrados.ElementAt(num) : this.StatusFiltrados.Last()); + statusViewModel1.SelectedStatus = statu; + } + base.Loading(false); + base.ToggleSnackBar("ESTIPULANTE EXCLUÍDO COM SUCESSO", true); + } + else + { + base.Loading(false); + } + } + } + } + + internal async Task> Filtrar(string value) + { + List statuses = await Task.Run>(() => this.FiltrarStatus(value)); + return statuses; + } + + public List FiltrarStatus(string filter) + { + this.StatusFiltrados = (string.IsNullOrWhiteSpace(filter) ? new ObservableCollection(this.Status) : new ObservableCollection( + from x in this.Status + where ValidationHelper.RemoveDiacritics(x.get_Nome().Trim()).ToUpper().Contains(ValidationHelper.RemoveDiacritics(filter)) + orderby x.get_Ativo() descending, x.get_Nome() + select x)); + return this.StatusFiltrados.ToList(); + } + + public void Incluir() + { + Gestor.Model.Domain.Seguros.Status statu = new Gestor.Model.Domain.Seguros.Status(); + statu.set_Ativo(true); + this.SelectedStatus = statu; + base.Alterar(true); + } + + public async Task>> Salvar() + { + List> keyValuePairs; + string str; + object obj; + string str1; + List> keyValuePairs1 = this.SelectedStatus.Validate(); + List> keyValuePairs2 = keyValuePairs1; + keyValuePairs2.AddRange(await this.Validate()); + keyValuePairs2 = null; + if (keyValuePairs1.Count <= 0) + { + str = (this.SelectedStatus.get_Id() == 0 ? "INCLUIU" : "ALTEROU"); + str1 = str; + Gestor.Model.Domain.Seguros.Status statu = await this._servico.Save(this.SelectedStatus); + if (this._servico.Sucesso) + { + StatusViewModel statusViewModel = this; + string str2 = string.Concat(str1, " STATUS ID \"", statu.get_Nome(), "\""); + long id = statu.get_Id(); + TipoTela? nullable = new TipoTela?(11); + object id1 = statu.get_Id(); + obj = (statu.get_Ativo() ? "SIM" : "NÃO"); + statusViewModel.RegistrarAcao(str2, id, nullable, string.Format("ID: {0}\nATIVO: {1}", id1, obj)); + if (!this.Status.Any((Gestor.Model.Domain.Seguros.Status x) => x.get_Id() == statu.get_Id())) + { + this.Status.Add(statu); + } + else + { + DomainBase.Copy(this.Status.First((Gestor.Model.Domain.Seguros.Status x) => x.get_Id() == statu.get_Id()), statu); + } + if (!this.StatusFiltrados.Any((Gestor.Model.Domain.Seguros.Status x) => x.get_Id() == statu.get_Id())) + { + this.StatusFiltrados.Add(statu); + } + else + { + DomainBase.Copy(this.StatusFiltrados.First((Gestor.Model.Domain.Seguros.Status x) => x.get_Id() == statu.get_Id()), statu); + } + this.StatusFiltrados = new ObservableCollection(this.StatusFiltrados); + this.WorkOnSelectedStatus(statu, false); + Recursos.Status = this.Status; + base.Alterar(false); + base.ToggleSnackBar("STATUS SALVO COM SUCESSO", true); + keyValuePairs = null; + } + else + { + keyValuePairs = null; + } + } + else + { + keyValuePairs = keyValuePairs1; + } + keyValuePairs1 = null; + str1 = null; + return keyValuePairs; + } + + private async void Seleciona() + { + base.Loading(true); + await base.PermissaoTela(11); + await this.SelecionaStatuses(); + base.Loading(false); + } + + public async void SelecionaStatus(Gestor.Model.Domain.Seguros.Status status) + { + Gestor.Model.Domain.Seguros.Status statu = await this._servico.BuscarStatusPorId(status.get_Id()); + DomainBase.Copy(this.StatusFiltrados.First((Gestor.Model.Domain.Seguros.Status x) => x.get_Id() == status.get_Id()), statu); + this.SelectedStatus = this.StatusFiltrados.First((Gestor.Model.Domain.Seguros.Status x) => x.get_Id() == status.get_Id()); + } + + private async Task SelecionaStatuses() + { + base.Loading(true); + List statuses = await (new BaseServico()).BuscarStatusAsync(); + StatusViewModel list = this; + List statuses1 = statuses; + IOrderedEnumerable ativo = + from x in statuses1 + orderby x.get_Ativo() descending + select x; + list.Status = ativo.ThenBy((Gestor.Model.Domain.Seguros.Status x) => x.get_Nome()).ToList(); + this.StatusFiltrados = new ObservableCollection(this.Status); + this.SelectedStatus = this.StatusFiltrados.FirstOrDefault(); + Recursos.Status = this.Status; + base.Loading(false); + } + + public async Task>> Validate() + { + List> keyValuePairs; + List> keyValuePairs1; + if (!string.IsNullOrWhiteSpace(this.SelectedStatus.get_Nome())) + { + keyValuePairs1 = new List>(); + bool flag = true; + List statuses = await (new BaseServico()).BuscarStatus(this.SelectedStatus.get_Nome()); + if (statuses.Count > 0) + { + statuses.ForEach((Gestor.Model.Domain.Seguros.Status x) => { + if (x.get_Id() == this.SelectedStatus.get_Id()) + { + return; + } + if (x.get_Nome() == this.SelectedStatus.get_Nome()) + { + flag = false; + } + }); + } + if (!flag) + { + keyValuePairs1.Add(new KeyValuePair("Nome", "UM STATUS COM O MESMO NOME JÁ EXISTE.")); + } + keyValuePairs = keyValuePairs1; + } + else + { + keyValuePairs = new List>(); + } + keyValuePairs1 = null; + return keyValuePairs; + } + + private void WorkOnSelectedStatus(Gestor.Model.Domain.Seguros.Status value, bool registrar = true) + { + long? nullable; + this.CancelStatus = (value == null || value.get_Id() == 0 ? this.CancelStatus : (Gestor.Model.Domain.Seguros.Status)value.Clone()); + if (value == null || value.get_Id() == 0 || this.LastAccessId == value.get_Id() && this.LastAccessTela == 11) + { + return; + } + if (registrar) + { + base.RegistrarAcao(string.Concat("ACESSOU STATUS \"", value.get_Nome(), "\""), value.get_Id(), new TipoTela?(11), string.Format("ID: {0}\nATIVO: {1}", value.get_Id(), (value.get_Ativo() ? "SIM" : "NÃO"))); + } + this.LastAccessId = value.get_Id(); + this.LastAccessTela = 11; + Gestor.Model.Domain.Seguros.Status selectedStatus = this.SelectedStatus; + if (selectedStatus != null) + { + nullable = new long?(selectedStatus.get_Id()); + } + else + { + nullable = null; + } + long? nullable1 = nullable; + long id = value.get_Id(); + if (nullable1.GetValueOrDefault() != id | !nullable1.HasValue) + { + this.SelectedStatus = this.StatusFiltrados.FirstOrDefault((Gestor.Model.Domain.Seguros.Status x) => x.get_Id() == value.get_Id()); + } + } + } +} \ No newline at end of file -- cgit v1.2.3