summaryrefslogtreecommitdiff
path: root/Gestor.Application/ViewModels/Drawer/AgendaViewModel.cs
diff options
context:
space:
mode:
authorLucas Faria Mendes <lucas.fariamo08@gmail.com>2026-03-30 13:35:25 +0000
committerLucas Faria Mendes <lucas.fariamo08@gmail.com>2026-03-30 13:35:25 +0000
commit674ca83ba9243a9e95a7568c797668dab6aee26a (patch)
tree4a905b3fb1d827665a34d63f67bc5559f8e7235b /Gestor.Application/ViewModels/Drawer/AgendaViewModel.cs
downloadgestor-674ca83ba9243a9e95a7568c797668dab6aee26a.tar.gz
gestor-674ca83ba9243a9e95a7568c797668dab6aee26a.zip
feat: upload files
Diffstat (limited to 'Gestor.Application/ViewModels/Drawer/AgendaViewModel.cs')
-rw-r--r--Gestor.Application/ViewModels/Drawer/AgendaViewModel.cs427
1 files changed, 427 insertions, 0 deletions
diff --git a/Gestor.Application/ViewModels/Drawer/AgendaViewModel.cs b/Gestor.Application/ViewModels/Drawer/AgendaViewModel.cs
new file mode 100644
index 0000000..4701416
--- /dev/null
+++ b/Gestor.Application/ViewModels/Drawer/AgendaViewModel.cs
@@ -0,0 +1,427 @@
+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 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.Drawer
+{
+ public class AgendaViewModel : BaseSegurosViewModel
+ {
+ private readonly AgendaServico _servico;
+
+ private Agenda _selectedAgenda;
+
+ private ObservableCollection<AgendaTelefone> _telefones = new ObservableCollection<AgendaTelefone>();
+
+ private ObservableCollection<AgendaEmail> _emails = new ObservableCollection<AgendaEmail>();
+
+ private long _ultimoId;
+
+ public Agenda CancelAgenda;
+
+ private ObservableCollection<Agenda> _agendasFiltradas = new ObservableCollection<Agenda>();
+
+ private bool _carregando;
+
+ public List<Agenda> Agendas
+ {
+ get;
+ set;
+ }
+
+ public ObservableCollection<Agenda> AgendasFiltradas
+ {
+ get
+ {
+ return this._agendasFiltradas;
+ }
+ set
+ {
+ this._agendasFiltradas = value;
+ base.OnPropertyChanged("AgendasFiltradas");
+ }
+ }
+
+ public bool Carregando
+ {
+ get
+ {
+ return this._carregando;
+ }
+ set
+ {
+ this._carregando = value;
+ base.IsEnabled = !value;
+ base.EnableMenu = !value;
+ base.OnPropertyChanged("Carregando");
+ }
+ }
+
+ public ObservableCollection<AgendaEmail> Emails
+ {
+ get
+ {
+ return this._emails;
+ }
+ set
+ {
+ this._emails = value;
+ base.OnPropertyChanged("Emails");
+ }
+ }
+
+ public Agenda SelectedAgenda
+ {
+ get
+ {
+ return this._selectedAgenda;
+ }
+ set
+ {
+ long? nullable;
+ this._selectedAgenda = value;
+ if (value != null)
+ {
+ nullable = new long?(value.get_Id());
+ }
+ else
+ {
+ nullable = null;
+ }
+ base.VerificarEnables(nullable);
+ base.OnPropertyChanged("SelectedAgenda");
+ }
+ }
+
+ public ObservableCollection<AgendaTelefone> Telefones
+ {
+ get
+ {
+ return this._telefones;
+ }
+ set
+ {
+ this._telefones = value;
+ base.OnPropertyChanged("Telefones");
+ }
+ }
+
+ public AgendaViewModel()
+ {
+ this._servico = new AgendaServico();
+ this.Seleciona();
+ }
+
+ public void CancelarAlteracao()
+ {
+ this.Carregando = true;
+ if (this.SelectedAgenda.get_Id() != 0)
+ {
+ DomainBase.Copy<Agenda, Agenda>(this.Agendas.First<Agenda>((Agenda x) => x.get_Id() == this.CancelAgenda.get_Id()), this.CancelAgenda);
+ if (this.AgendasFiltradas.Count <= 0 || !this.AgendasFiltradas.Any<Agenda>((Agenda x) => x.get_Id() == this.CancelAgenda.get_Id()))
+ {
+ this.AgendasFiltradas.Add(this.CancelAgenda);
+ }
+ else
+ {
+ DomainBase.Copy<Agenda, Agenda>(this.AgendasFiltradas.First<Agenda>((Agenda x) => x.get_Id() == this.CancelAgenda.get_Id()), this.CancelAgenda);
+ }
+ this.AgendasFiltradas = new ObservableCollection<Agenda>(this.AgendasFiltradas);
+ this.SelectedAgenda = this.AgendasFiltradas.First<Agenda>((Agenda x) => x.get_Id() == this.CancelAgenda.get_Id());
+ }
+ else if (this.AgendasFiltradas.Count <= 0 || !this.AgendasFiltradas.Any<Agenda>((Agenda x) => x.get_Id() == this._ultimoId))
+ {
+ if (this.Agendas.Count <= 0 || !this.Agendas.Any<Agenda>((Agenda x) => x.get_Id() == this._ultimoId))
+ {
+ this.SelectedAgenda = new Agenda();
+ ObservableCollection<AgendaTelefone> observableCollection = new ObservableCollection<AgendaTelefone>();
+ AgendaTelefone agendaTelefone = new AgendaTelefone();
+ agendaTelefone.set_Agenda(this.SelectedAgenda);
+ agendaTelefone.set_Tipo(new TipoTelefone?(1));
+ observableCollection.Add(agendaTelefone);
+ this.Telefones = observableCollection;
+ ObservableCollection<AgendaEmail> observableCollection1 = new ObservableCollection<AgendaEmail>();
+ AgendaEmail agendaEmail = new AgendaEmail();
+ agendaEmail.set_Agenda(this.SelectedAgenda);
+ observableCollection1.Add(agendaEmail);
+ this.Emails = observableCollection1;
+ base.Alterar(false);
+ this.Carregando = false;
+ return;
+ }
+ this.AgendasFiltradas.Add(this.Agendas.First<Agenda>((Agenda x) => x.get_Id() == this._ultimoId));
+ this.SelectedAgenda = this.AgendasFiltradas.First<Agenda>((Agenda x) => x.get_Id() == this._ultimoId);
+ }
+ else
+ {
+ this.SelectedAgenda = this.AgendasFiltradas.First<Agenda>((Agenda x) => x.get_Id() == this._ultimoId);
+ }
+ base.Alterar(false);
+ this.Carregando = false;
+ }
+
+ public async Task<bool> Excluir()
+ {
+ bool flag;
+ if (this.SelectedAgenda == null || this.SelectedAgenda.get_Id() == 0)
+ {
+ flag = false;
+ }
+ else if (await base.ShowMessage("DESEJA EXCLUIR?", "SIM", "NÃO", false))
+ {
+ this.Carregando = true;
+ if (await this._servico.Delete(this.SelectedAgenda))
+ {
+ int num = this.AgendasFiltradas.IndexOf(this.SelectedAgenda);
+ this.Agendas.Remove(this.SelectedAgenda);
+ this.AgendasFiltradas.Remove(this.SelectedAgenda);
+ this.AgendasFiltradas = new ObservableCollection<Agenda>(this.AgendasFiltradas);
+ if (this.AgendasFiltradas.Count <= 0)
+ {
+ this.SelectedAgenda = new Agenda();
+ this.Telefones = new ObservableCollection<AgendaTelefone>();
+ this.Emails = new ObservableCollection<AgendaEmail>();
+ base.Alterar(false);
+ }
+ else if (num >= this.AgendasFiltradas.Count)
+ {
+ await this.SelecionaAgenda(this.AgendasFiltradas.Last<Agenda>());
+ }
+ else
+ {
+ await this.SelecionaAgenda(this.AgendasFiltradas.ElementAt<Agenda>(num));
+ }
+ this.Carregando = false;
+ flag = true;
+ }
+ else
+ {
+ base.Alterar(false);
+ this.Carregando = false;
+ flag = false;
+ }
+ }
+ else
+ {
+ flag = false;
+ }
+ return flag;
+ }
+
+ public void ExcluirEmail(AgendaEmail email)
+ {
+ this.Emails.Remove(email);
+ }
+
+ public void ExcluirTelefone(AgendaTelefone telefone)
+ {
+ this.Telefones.Remove(telefone);
+ }
+
+ internal async Task<List<Agenda>> Filtrar(string value)
+ {
+ List<Agenda> agendas = await Task.Run<List<Agenda>>(() => this.FiltrarAgenda(value));
+ return agendas;
+ }
+
+ public List<Agenda> FiltrarAgenda(string filter)
+ {
+ this.AgendasFiltradas = (string.IsNullOrWhiteSpace(filter) ? new ObservableCollection<Agenda>(this.Agendas) : new ObservableCollection<Agenda>(
+ from x in this.Agendas
+ where ValidationHelper.RemoveDiacritics(x.get_Nome().Trim()).ToUpper().Contains(ValidationHelper.RemoveDiacritics(filter))
+ orderby x.get_Nome()
+ select x));
+ return this.AgendasFiltradas.ToList<Agenda>();
+ }
+
+ public void Incluir()
+ {
+ if (this.SelectedAgenda != null)
+ {
+ this._ultimoId = this.SelectedAgenda.get_Id();
+ }
+ this.SelectedAgenda = new Agenda();
+ ObservableCollection<AgendaTelefone> observableCollection = new ObservableCollection<AgendaTelefone>();
+ AgendaTelefone agendaTelefone = new AgendaTelefone();
+ agendaTelefone.set_Agenda(this.SelectedAgenda);
+ agendaTelefone.set_Tipo(new TipoTelefone?(1));
+ observableCollection.Add(agendaTelefone);
+ this.Telefones = observableCollection;
+ ObservableCollection<AgendaEmail> observableCollection1 = new ObservableCollection<AgendaEmail>();
+ AgendaEmail agendaEmail = new AgendaEmail();
+ agendaEmail.set_Agenda(this.SelectedAgenda);
+ observableCollection1.Add(agendaEmail);
+ this.Emails = observableCollection1;
+ base.Alterar(true);
+ }
+
+ public void IncluirEmail()
+ {
+ if (this.SelectedAgenda == null)
+ {
+ return;
+ }
+ if (this.Emails == null)
+ {
+ this.Emails = new ObservableCollection<AgendaEmail>();
+ }
+ AgendaEmail agendaEmail = new AgendaEmail();
+ agendaEmail.set_Agenda(this.SelectedAgenda);
+ this.Emails.Add(agendaEmail);
+ base.OnPropertyChanged("IncluirEmail");
+ }
+
+ public void IncluirTelefone()
+ {
+ if (this.SelectedAgenda == null)
+ {
+ return;
+ }
+ if (this.Telefones == null)
+ {
+ this.Telefones = new ObservableCollection<AgendaTelefone>();
+ }
+ AgendaTelefone agendaTelefone = new AgendaTelefone();
+ agendaTelefone.set_Agenda(this.SelectedAgenda);
+ agendaTelefone.set_Tipo(new TipoTelefone?(1));
+ this.Telefones.Add(agendaTelefone);
+ base.OnPropertyChanged("IncluirTelefone");
+ }
+
+ public async Task<List<KeyValuePair<string, string>>> Salvar()
+ {
+ List<KeyValuePair<string, string>> keyValuePairs;
+ int num;
+ List<KeyValuePair<string, string>> keyValuePairs1 = this.SelectedAgenda.Validate();
+ ObservableCollection<AgendaTelefone> telefones = this.Telefones;
+ List<AgendaTelefone> list = (
+ from x in telefones
+ where !string.IsNullOrEmpty(x.get_Numero())
+ select x).ToList<AgendaTelefone>();
+ ObservableCollection<AgendaEmail> emails = this.Emails;
+ List<AgendaEmail> agendaEmails = (
+ from x in emails
+ where !string.IsNullOrEmpty(x.get_Email())
+ select x).ToList<AgendaEmail>();
+ foreach (AgendaTelefone agendaTelefone in list)
+ {
+ keyValuePairs1.AddRange(agendaTelefone.Validate());
+ }
+ foreach (AgendaEmail agendaEmail in agendaEmails)
+ {
+ keyValuePairs1.AddRange(agendaEmail.Validate());
+ }
+ if (keyValuePairs1.Count <= 0)
+ {
+ this.SelectedAgenda.set_Telefones(new ObservableCollection<AgendaTelefone>(list));
+ this.SelectedAgenda.set_Emails(new ObservableCollection<AgendaEmail>(agendaEmails));
+ if (this.SelectedAgenda.get_Id() != 0)
+ {
+ this.SelectedAgenda = await this._servico.Save(this.SelectedAgenda);
+ if (this._servico.Sucesso)
+ {
+ this.Telefones = new ObservableCollection<AgendaTelefone>(this.SelectedAgenda.get_Telefones());
+ this.Emails = new ObservableCollection<AgendaEmail>(this.SelectedAgenda.get_Emails());
+ DomainBase.Copy<Agenda, Agenda>(this.Agendas.First<Agenda>((Agenda x) => x.get_Id() == this.SelectedAgenda.get_Id()), this.SelectedAgenda);
+ if (this.AgendasFiltradas.Count <= 0 || !this.AgendasFiltradas.Any<Agenda>((Agenda x) => x.get_Id() == this.SelectedAgenda.get_Id()))
+ {
+ this.AgendasFiltradas.Add(this.SelectedAgenda);
+ }
+ else
+ {
+ DomainBase.Copy<Agenda, Agenda>(this.AgendasFiltradas.First<Agenda>((Agenda x) => x.get_Id() == this.SelectedAgenda.get_Id()), this.SelectedAgenda);
+ }
+ }
+ else
+ {
+ keyValuePairs = null;
+ return keyValuePairs;
+ }
+ }
+ else
+ {
+ this.SelectedAgenda = await this._servico.Save(this.SelectedAgenda);
+ if (this._servico.Sucesso)
+ {
+ this.Telefones = new ObservableCollection<AgendaTelefone>(this.SelectedAgenda.get_Telefones());
+ this.Emails = new ObservableCollection<AgendaEmail>(this.SelectedAgenda.get_Emails());
+ this.Agendas.Add(this.SelectedAgenda);
+ ObservableCollection<Agenda> agendasFiltradas = this.AgendasFiltradas;
+ num = (this._ultimoId == 0 ? 0 : this.AgendasFiltradas.IndexOf(this.AgendasFiltradas.First<Agenda>((Agenda x) => x.get_Id() == this._ultimoId)));
+ agendasFiltradas.Insert(num, this.SelectedAgenda);
+ }
+ else
+ {
+ keyValuePairs = null;
+ return keyValuePairs;
+ }
+ }
+ this.AgendasFiltradas = new ObservableCollection<Agenda>(this.AgendasFiltradas);
+ this.SelectedAgenda = this.AgendasFiltradas.First<Agenda>((Agenda x) => x.get_Id() == this.SelectedAgenda.get_Id());
+ base.Alterar(false);
+ keyValuePairs = null;
+ }
+ else
+ {
+ keyValuePairs = keyValuePairs1;
+ }
+ return keyValuePairs;
+ }
+
+ private async void Seleciona()
+ {
+ base.Loading(true);
+ await base.PermissaoTela(34);
+ await this.SelecionaAgendas();
+ base.Loading(false);
+ }
+
+ public async Task SelecionaAgenda(Agenda agenda = null)
+ {
+ Agenda agenda1;
+ this.Carregando = true;
+ AgendaViewModel agendaViewModel = this;
+ agenda1 = (agenda == null ? this.AgendasFiltradas.FirstOrDefault<Agenda>() : this.AgendasFiltradas.FirstOrDefault<Agenda>((Agenda x) => x.get_Id() == agenda.get_Id()));
+ agendaViewModel.SelectedAgenda = agenda1;
+ if (this.SelectedAgenda == null)
+ {
+ this.Emails = null;
+ this.Telefones = null;
+ }
+ else
+ {
+ this.Emails = await this._servico.BuscarEmailsAsync(this.SelectedAgenda.get_Id());
+ this.Telefones = await this._servico.BuscarTelefonesAsync(this.SelectedAgenda.get_Id());
+ }
+ this.Carregando = false;
+ }
+
+ private async Task SelecionaAgendas()
+ {
+ Agenda agenda;
+ this.Carregando = true;
+ List<Agenda> agendas = await (new BaseServico()).BuscarAgendasAsync();
+ AgendaViewModel list = this;
+ List<Agenda> agendas1 = agendas;
+ list.Agendas = (
+ from x in agendas1
+ orderby x.get_Nome()
+ select x).ToList<Agenda>();
+ this.AgendasFiltradas = new ObservableCollection<Agenda>(this.Agendas);
+ AgendaViewModel agendaViewModel = this;
+ agenda = (this.AgendasFiltradas.Count > 0 ? this.AgendasFiltradas.First<Agenda>() : new Agenda());
+ agendaViewModel.SelectedAgenda = agenda;
+ this.Carregando = false;
+ }
+ }
+} \ No newline at end of file