using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Runtime.CompilerServices; using Gestor.Model.Attributes; using Gestor.Model.Common; using Gestor.Model.Domain.Generic; using Gestor.Model.Helper; using Gestor.Model.Resources; using Gestor.Model.Validation; using Newtonsoft.Json; namespace Gestor.Model.Domain.Seguros; public class Estipulante : EnderecoBase, IDomain, INotifyPropertyChanged { private bool _selecionado; private string _nome; private string _documento; private string _primeiroPrefixo; private string _primeiroTelefone; private string _segundoPrefixo; private string _segundoTelefone; private string _email; private string _observacao; public bool Selecionado { get { return _selecionado; } set { if (value != _selecionado) { _selecionado = value; OnPropertyChanged("Selecionado"); } } } public long IdEmpresa { get; set; } [Log(true)] [Name(true)] public string Nome { get { return _nome?.ToUpper(); } set { _nome = value; } } [Log(true)] public string Documento { get { return _documento?.ToUpper().Trim(); } set { _documento = value; } } [Log(true)] [Description("TIPO TELEFONE")] public TipoTelefone? PrimeiroTipo { get; set; } [Log(true)] [Description("PREFIXO")] public string PrimeiroPrefixo { get { return _primeiroPrefixo?.ToUpper().Trim(); } set { _primeiroPrefixo = value; } } [Log(true)] [Description("TELEFONE")] public string PrimeiroTelefone { get { return _primeiroTelefone?.ToUpper().Trim(); } set { _primeiroTelefone = value; } } [Log(true)] [Description("TIPO TELEFONE")] public TipoTelefone? SegundoTipo { get; set; } [Log(true)] [Description("PREFIXO")] public string SegundoPrefixo { get { return _segundoPrefixo?.ToUpper().Trim(); } set { _segundoPrefixo = value; } } [Log(true)] [Description("TELEFONE")] public string SegundoTelefone { get { return _segundoTelefone?.ToUpper().Trim(); } set { _segundoTelefone = value; } } [Log(true)] public string Email { get { return _email?.ToLower().Trim(); } set { _email = value; } } [Log(true)] public string Observacao { get { return _observacao?.ToUpper(); } set { _observacao = value; } } [Log(true)] public bool Ativo { get; set; } [JsonIgnore] public Func>> ValidationEvent => Validate; public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } public List> Validate() { List> list = ValidationHelper.AddValue(); if (string.IsNullOrEmpty(Nome)) { list.AddValue("Nome", Messages.Obrigatorio); } else if (Nome.Length > 100) { list.AddValue("Nome", string.Format(Messages.MaiorQueLimite, 100)); } if (!string.IsNullOrEmpty(Documento) && !Documento.ValidacaoDocumento()) { list.AddValue("Documento", Messages.Invalido); } if (!string.IsNullOrWhiteSpace(PrimeiroPrefixo) && !PrimeiroPrefixo.ValidacaoPrefixo()) { list.AddValue("PrimeiroPrefixo|PRIMEIRO DDD", Messages.Invalido); } if (!string.IsNullOrWhiteSpace(PrimeiroTelefone) && !PrimeiroTelefone.ValidacaoTelefone()) { list.AddValue("PrimeiroTelefone|PRIMEIRO TELEFONE", Messages.Invalido); } if (!string.IsNullOrWhiteSpace(SegundoPrefixo) && !SegundoPrefixo.ValidacaoPrefixo()) { list.AddValue("SegundoPrefixo|SEGUNDO DDD", Messages.Invalido); } if (!string.IsNullOrWhiteSpace(SegundoTelefone) && !SegundoTelefone.ValidacaoTelefone()) { list.AddValue("SegundoTelefone|SEGUNDO TELEFONE", Messages.Invalido); } if (!string.IsNullOrEmpty(Email) && Email.Length > 100) { list.AddValue("Email|E-MAIL", string.Format(Messages.MaiorQueLimite, 100)); } if (!string.IsNullOrEmpty(Email) && !Email.ValidacaoEmail()) { list.AddValue("Email|E-MAIL", Messages.Invalido); } if (!string.IsNullOrEmpty(base.Cep) && !base.Cep.ValidacaoCep()) { list.AddValue("Cep|CEP", Messages.Invalido); } if (!string.IsNullOrEmpty(base.Estado) && !base.Estado.ValidacaoEstado()) { list.AddValue("Estado|ESTADO", Messages.Invalido); } return list; } public List Log() { List list = new List(); TupleList tupleList = new TupleList(); ObservableCollection> obj = new ObservableCollection> { new Tuple("NOME", string.IsNullOrWhiteSpace(Nome) ? "" : Nome, ""), new Tuple("CPF", string.IsNullOrWhiteSpace(Documento) ? "" : Documento, ""), new Tuple("ATIVO", Ativo ? "SIM" : "NÃO", "") }; object item; if (PrimeiroTipo.HasValue) { TipoTelefone? primeiroTipo = PrimeiroTipo; item = (primeiroTipo.HasValue ? primeiroTipo.GetValueOrDefault().GetDescription() : null); } else { item = ""; } obj.Add(new Tuple("PRIMEIRO TIPO", (string)item, "")); obj.Add(new Tuple("PRIMEIRO PREFIXO", string.IsNullOrWhiteSpace(PrimeiroPrefixo) ? "" : PrimeiroPrefixo, "")); obj.Add(new Tuple("PRIMEIRO TELEFONE", string.IsNullOrWhiteSpace(PrimeiroTelefone) ? "" : PrimeiroTelefone, "")); object item2; if (SegundoTipo.HasValue) { TipoTelefone? primeiroTipo = SegundoTipo; item2 = (primeiroTipo.HasValue ? primeiroTipo.GetValueOrDefault().GetDescription() : null); } else { item2 = ""; } obj.Add(new Tuple("SEGUNDO TIPO", (string)item2, "")); obj.Add(new Tuple("SEGUNDO PREFIXO", string.IsNullOrWhiteSpace(SegundoPrefixo) ? "" : SegundoPrefixo, "")); obj.Add(new Tuple("SEGUNDO TELEFONE", string.IsNullOrWhiteSpace(SegundoTelefone) ? "" : SegundoTelefone, "")); obj.Add(new Tuple("E-MAIL", string.IsNullOrWhiteSpace(Email) ? "" : Email, "")); obj.Add(new Tuple("CEP", string.IsNullOrWhiteSpace(base.Cep) ? "" : base.Cep, "")); obj.Add(new Tuple("ENDEREÇO", string.IsNullOrWhiteSpace(base.Endereco) ? "" : base.Endereco, "")); obj.Add(new Tuple("NÚMERO", string.IsNullOrWhiteSpace(base.Numero) ? "" : base.Numero, "")); obj.Add(new Tuple("COMPLEMENTO", string.IsNullOrWhiteSpace(base.Complemento) ? "" : base.Complemento, "")); obj.Add(new Tuple("BAIRRO", string.IsNullOrWhiteSpace(base.Bairro) ? "" : base.Bairro, "")); obj.Add(new Tuple("CIDADE", string.IsNullOrWhiteSpace(base.Cidade) ? "" : base.Cidade, "")); obj.Add(new Tuple("ESTADO", string.IsNullOrWhiteSpace(base.Estado) ? "" : base.Estado, "")); tupleList.Tuples = obj; list.Add(tupleList); return list; } }