using Gestor.Model.Common; using Gestor.Model.Domain.Generic; using Gestor.Model.Domain.Seguros; using Gestor.Model.Helper; using Gestor.Model.Resources; using Gestor.Model.Validation; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Runtime.CompilerServices; namespace Gestor.Model.Domain.Ferramentas { public class Agenda : DomainBase, IDomain { public string Bairro { get; set; } public string Cep { get; set; } public string Cidade { get; set; } public string Complemento { get; set; } public ObservableCollection Emails { get; set; } public string Endereco { get; set; } public string Estado { get; set; } public string Nome { get; set; } public string Numero { get; set; } public string Observacao { get; set; } public ObservableCollection Telefones { get; set; } [JsonIgnore] public Func>> ValidationEvent { get { Agenda agenda = this; return new Func>>(agenda.Validate); } } public Agenda() { } public List Log() { string description; List tupleLists = new List() { new TupleList() { Tuples = new ObservableCollection>() { new Tuple("NOME", (string.IsNullOrWhiteSpace(this.Nome) ? "" : this.Nome), ""), new Tuple("CEP", (string.IsNullOrWhiteSpace(this.Cep) ? "" : this.Cep), ""), new Tuple("ENDEREÇO", (string.IsNullOrWhiteSpace(this.Endereco) ? "" : this.Endereco), ""), new Tuple("NÚMERO", (string.IsNullOrWhiteSpace(this.Numero) ? "" : this.Numero), ""), new Tuple("COMPLEMENTO", (string.IsNullOrWhiteSpace(this.Complemento) ? "" : this.Complemento), ""), new Tuple("BAIRRO", (string.IsNullOrWhiteSpace(this.Bairro) ? "" : this.Bairro), ""), new Tuple("CIDADE", (string.IsNullOrWhiteSpace(this.Cidade) ? "" : this.Cidade), ""), new Tuple("ESTADO", (string.IsNullOrWhiteSpace(this.Estado) ? "" : this.Estado), ""), new Tuple("OBSERVAÇÕES", (string.IsNullOrWhiteSpace(this.Observacao) ? "" : this.Observacao), "") } } }; ObservableCollection> observableCollection = new ObservableCollection>() { new Tuple("TELEFONES$", "", "") }; foreach (AgendaTelefone telefone in this.Telefones) { observableCollection.Add(new Tuple(string.Format(" TELEFONE {0}$", this.Telefones.IndexOf(telefone) + 1), "", "")); ObservableCollection> observableCollection1 = observableCollection; TipoTelefone? tipo = telefone.Tipo; if (!tipo.HasValue) { description = ""; } else { tipo = telefone.Tipo; if (tipo.HasValue) { description = tipo.GetValueOrDefault().GetDescription(); } else { description = null; } } observableCollection1.Add(new Tuple(" TIPO", description, "")); observableCollection.Add(new Tuple(" PREFIXO", (string.IsNullOrWhiteSpace(telefone.Prefixo) ? "" : telefone.Prefixo.ToUpper()), "")); observableCollection.Add(new Tuple(" NÚMERO", (string.IsNullOrWhiteSpace(telefone.Numero) ? "" : telefone.Numero), "")); observableCollection.Add(new Tuple(" DESCRIÇÃO", (string.IsNullOrWhiteSpace(telefone.Observacao) ? "" : telefone.Observacao), "")); } tupleLists.Add(new TupleList() { Tuples = observableCollection }); ObservableCollection> observableCollection2 = new ObservableCollection>() { new Tuple("EMAILS$", "", "") }; foreach (AgendaEmail email in this.Emails) { observableCollection2.Add(new Tuple(string.Format(" EMAIL {0}$", this.Emails.IndexOf(email) + 1), "", "")); observableCollection2.Add(new Tuple(" ENDEREÇO DE EMAIL", (string.IsNullOrWhiteSpace(email.Email) ? "" : email.Email), "")); } tupleLists.Add(new TupleList() { Tuples = observableCollection2 }); return tupleLists; } public List> Validate() { List> keyValuePairs = ValidationHelper.AddValue(); if (string.IsNullOrWhiteSpace(this.Nome)) { keyValuePairs.AddValue("Nome", Messages.Obrigatorio, true); } return keyValuePairs; } } }