summaryrefslogtreecommitdiff
path: root/Codemerx/Gestor.Application/ViewModels/Ferramentas/StatusProspeccaoViewModel.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Codemerx/Gestor.Application/ViewModels/Ferramentas/StatusProspeccaoViewModel.cs')
-rw-r--r--Codemerx/Gestor.Application/ViewModels/Ferramentas/StatusProspeccaoViewModel.cs326
1 files changed, 326 insertions, 0 deletions
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<StatusDeProspeccao> _statusProspeccaoFiltrados = new ObservableCollection<StatusDeProspeccao>();
+
+ 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<StatusDeProspeccao> StatusProspeccao
+ {
+ get;
+ set;
+ }
+
+ public ObservableCollection<StatusDeProspeccao> 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>((StatusDeProspeccao x) => x.get_Id() == this.CancelStatusProspeccao.get_Id()))
+ {
+ this.Incluir();
+ }
+ else
+ {
+ DomainBase.Copy<StatusDeProspeccao, StatusDeProspeccao>(this.StatusProspeccao.First<StatusDeProspeccao>((StatusDeProspeccao x) => x.get_Id() == this.CancelStatusProspeccao.get_Id()), this.CancelStatusProspeccao);
+ if (this.StatusProspeccaoFiltrados.Count <= 0 || !this.StatusProspeccaoFiltrados.Any<StatusDeProspeccao>((StatusDeProspeccao x) => x.get_Id() == this.CancelStatusProspeccao.get_Id()))
+ {
+ this.StatusProspeccaoFiltrados.Add(this.CancelStatusProspeccao);
+ }
+ else
+ {
+ DomainBase.Copy<StatusDeProspeccao, StatusDeProspeccao>(this.StatusProspeccaoFiltrados.First<StatusDeProspeccao>((StatusDeProspeccao x) => x.get_Id() == this.CancelStatusProspeccao.get_Id()), this.CancelStatusProspeccao);
+ }
+ this.StatusProspeccaoFiltrados = new ObservableCollection<StatusDeProspeccao>(this.StatusProspeccaoFiltrados);
+ this.SelectedStatusProspeccao = this.StatusProspeccaoFiltrados.First<StatusDeProspeccao>((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<StatusDeProspeccao>();
+ await this.SelecionaStatusProspeccao();
+ base.Loading(false);
+ base.ToggleSnackBar("STATUS DE PROSPECÇÃO EXCLUÍDO COM SUCESSO", true);
+ }
+ else
+ {
+ base.Loading(false);
+ }
+ }
+ }
+ }
+
+ public async Task<List<StatusDeProspeccao>> Filtrar(string value)
+ {
+ List<StatusDeProspeccao> statusDeProspeccaos = await Task.Run<List<StatusDeProspeccao>>(() => this.FiltrarStatusProspeccao(value));
+ return statusDeProspeccaos;
+ }
+
+ public List<StatusDeProspeccao> FiltrarStatusProspeccao(string filter)
+ {
+ this.StatusProspeccaoFiltrados = (string.IsNullOrWhiteSpace(filter) ? new ObservableCollection<StatusDeProspeccao>(this.StatusProspeccao) : new ObservableCollection<StatusDeProspeccao>(
+ 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<StatusDeProspeccao>();
+ return this.StatusProspeccaoFiltrados.ToList<StatusDeProspeccao>();
+ }
+
+ public void Incluir()
+ {
+ StatusDeProspeccao statusDeProspeccao = new StatusDeProspeccao();
+ statusDeProspeccao.set_Ativo(true);
+ statusDeProspeccao.set_Excluido(false);
+ this.SelectedStatusProspeccao = statusDeProspeccao;
+ base.Alterar(true);
+ }
+
+ public async Task<List<KeyValuePair<string, string>>> Salvar()
+ {
+ List<KeyValuePair<string, string>> keyValuePairs;
+ string str;
+ object obj;
+ string str1;
+ List<KeyValuePair<string, string>> 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>((StatusDeProspeccao x) => x.get_Id() == statusDeProspeccao.get_Id()))
+ {
+ this.StatusProspeccao.Add(statusDeProspeccao);
+ }
+ else
+ {
+ DomainBase.Copy<StatusDeProspeccao, StatusDeProspeccao>(this.StatusProspeccao.First<StatusDeProspeccao>((StatusDeProspeccao x) => x.get_Id() == statusDeProspeccao.get_Id()), statusDeProspeccao);
+ }
+ if (!this.StatusProspeccaoFiltrados.Any<StatusDeProspeccao>((StatusDeProspeccao x) => x.get_Id() == statusDeProspeccao.get_Id()))
+ {
+ this.StatusProspeccaoFiltrados.Add(statusDeProspeccao);
+ }
+ else
+ {
+ DomainBase.Copy<StatusDeProspeccao, StatusDeProspeccao>(this.StatusProspeccaoFiltrados.First<StatusDeProspeccao>((StatusDeProspeccao x) => x.get_Id() == statusDeProspeccao.get_Id()), statusDeProspeccao);
+ }
+ this.StatusProspeccaoFiltrados = new ObservableCollection<StatusDeProspeccao>(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<StatusDeProspeccao> statusDeProspeccaos = await this._servico.BuscarProspeccoes();
+ StatusProspeccaoViewModel list = this;
+ List<StatusDeProspeccao> statusDeProspeccaos1 = statusDeProspeccaos;
+ IEnumerable<StatusDeProspeccao> excluido =
+ from x in statusDeProspeccaos1
+ where !x.get_Excluido()
+ select x;
+ IOrderedEnumerable<StatusDeProspeccao> ativo =
+ from x in excluido
+ orderby x.get_Ativo() descending
+ select x;
+ list.StatusProspeccao = ativo.ThenBy<StatusDeProspeccao, string>((StatusDeProspeccao x) => x.get_Nome()).ToList<StatusDeProspeccao>();
+ this.StatusProspeccaoFiltrados = new ObservableCollection<StatusDeProspeccao>(this.StatusProspeccao);
+ this.SelectedStatusProspeccao = this.StatusProspeccaoFiltrados.FirstOrDefault<StatusDeProspeccao>();
+ base.Loading(false);
+ }
+
+ public List<KeyValuePair<string, string>> Validate()
+ {
+ List<KeyValuePair<string, string>> keyValuePairs = new List<KeyValuePair<string, string>>();
+ if (string.IsNullOrWhiteSpace(this.SelectedStatusProspeccao.get_Nome()))
+ {
+ return keyValuePairs;
+ }
+ if (this.StatusProspeccao.Any<StatusDeProspeccao>((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<string, string>("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>((StatusDeProspeccao x) => x.get_Id() == value.get_Id());
+ }
+ }
+ }
+} \ No newline at end of file