using Gestor.Model.Common; using Gestor.Model.Domain.Generic; 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.Globalization; using System.Runtime.CompilerServices; namespace Gestor.Model.Domain.Seguros { public class Patrimonial : EnderecoBase, IDomain { private string _bens; private string _imobiliaria; private string _locatario; private string _locatario2; private string _locatario3; private string _cpfLocatario1; private string _cpfLocatario2; private string _cpfLocatario3; private string _contato; private string _prefixo; private string _telefone; private Gestor.Model.Common.TipoMoradia _tipoResidencia; public string Bens { get { string str = this._bens; if (str != null) { return str.ToUpper(); } return null; } set { this._bens = value; } } public string Contato { get { string str = this._contato; if (str != null) { return str.ToUpper(); } return null; } set { this._contato = value; } } public string CpfLocatario1 { get { string str = this._cpfLocatario1; if (str != null) { return str.ToUpper(); } return null; } set { this._cpfLocatario1 = value; } } public string CpfLocatario2 { get { string str = this._cpfLocatario2; if (str != null) { return str.ToUpper(); } return null; } set { this._cpfLocatario2 = value; } } public string CpfLocatario3 { get { string str = this._cpfLocatario3; if (str != null) { return str.ToUpper(); } return null; } set { this._cpfLocatario3 = value; } } public string Imobiliaria { get { string str = this._imobiliaria; if (str != null) { return str.ToUpper(); } return null; } set { this._imobiliaria = value; } } public Gestor.Model.Domain.Seguros.Item Item { get; set; } public string Locatario1 { get { string str = this._locatario; if (str != null) { return str.ToUpper(); } return null; } set { this._locatario = value; } } public string Locatario2 { get { string str = this._locatario2; if (str != null) { return str.ToUpper(); } return null; } set { this._locatario2 = value; } } public string Locatario3 { get { string str = this._locatario3; if (str != null) { return str.ToUpper(); } return null; } set { this._locatario3 = value; } } public string Prefixo { get { string str = this._prefixo; if (str == null) { return null; } return str.ToUpper().Trim(); } set { this._prefixo = value; } } public string PrefixoLocatario1 { get; set; } public string PrefixoLocatario2 { get; set; } public string PrefixoLocatario3 { get; set; } public string Telefone { get { string str = this._telefone; if (str == null) { return null; } return str.ToUpper().Trim(); } set { this._telefone = value; } } public string TelefoneLocatario1 { get; set; } public string TelefoneLocatario2 { get; set; } public string TelefoneLocatario3 { get; set; } public TipoTelefone? Tipo { get; set; } public Gestor.Model.Common.TipoMoradia TipoMoradia { get { return this._tipoResidencia; } set { this._tipoResidencia = value; } } public Gestor.Model.Common.Utilizacao? Utilizacao { get; set; } [JsonIgnore] public Func>> ValidationEvent { get { Patrimonial patrimonial = this; return new Func>>(patrimonial.Validate); } } public Patrimonial() { } public static List Log(Gestor.Model.Domain.Seguros.Item item) { string description; string str; List tupleLists = new List() { new TupleList() { Tuples = new ObservableCollection>() { new Tuple("CEP", (string.IsNullOrWhiteSpace(item.Patrimonial.Cep) ? "" : item.Patrimonial.Cep), ""), new Tuple("ENDEREÇO", (string.IsNullOrWhiteSpace(item.Patrimonial.Endereco) ? "" : item.Patrimonial.Endereco.ToUpper()), ""), new Tuple("NÚMERO", (string.IsNullOrWhiteSpace(item.Patrimonial.Numero) ? "" : item.Patrimonial.Numero), ""), new Tuple("COMPLEMENTO", (string.IsNullOrWhiteSpace(item.Patrimonial.Complemento) ? "" : item.Patrimonial.Complemento.ToUpper()), ""), new Tuple("BAIRRO", (string.IsNullOrWhiteSpace(item.Patrimonial.Bairro) ? "" : item.Patrimonial.Bairro.ToUpper()), ""), new Tuple("CIDADE", (string.IsNullOrWhiteSpace(item.Patrimonial.Cidade) ? "" : item.Patrimonial.Cidade.ToUpper()), ""), new Tuple("ESTADO", (string.IsNullOrWhiteSpace(item.Patrimonial.Estado) ? "" : item.Patrimonial.Estado.ToUpper()), ""), new Tuple("BENS", (string.IsNullOrWhiteSpace(item.Patrimonial.Bens) ? "" : item.Patrimonial.Bens.ToUpper()), ""), new Tuple("OBSERVAÇÕES", (string.IsNullOrWhiteSpace(item.Patrimonial.Item.Observacao) ? "" : item.Patrimonial.Item.Observacao.ToUpper()), "") } } }; if (item.Documento.Controle.Ramo.Id == (long)15) { ObservableCollection> tuples = tupleLists[0].Tuples; Gestor.Model.Common.Utilizacao? utilizacao = item.Patrimonial.Utilizacao; if (!utilizacao.HasValue) { description = ""; } else { utilizacao = item.Patrimonial.Utilizacao; if (utilizacao.HasValue) { description = utilizacao.GetValueOrDefault().GetDescription(); } else { description = null; } } tuples.Add(new Tuple("UTILIZAÇÃO", description, "")); tupleLists[0].Tuples.Add(new Tuple("IMOBILIÁRIA", (string.IsNullOrWhiteSpace(item.Patrimonial.Imobiliaria) ? "" : item.Patrimonial.Imobiliaria.ToUpper()), "")); tupleLists[0].Tuples.Add(new Tuple("CONTATO", (string.IsNullOrWhiteSpace(item.Patrimonial.Contato) ? "" : item.Patrimonial.Contato.ToUpper()), "")); ObservableCollection> observableCollection = tupleLists[0].Tuples; TipoTelefone? tipo = item.Patrimonial.Tipo; if (!tipo.HasValue) { str = ""; } else { tipo = item.Patrimonial.Tipo; if (tipo.HasValue) { str = tipo.GetValueOrDefault().GetDescription(); } else { str = null; } } observableCollection.Add(new Tuple("TIPO TELEFONE", str, "")); tupleLists[0].Tuples.Add(new Tuple("PREFIXO", (string.IsNullOrWhiteSpace(item.Patrimonial.Prefixo) ? "" : item.Patrimonial.Prefixo.ToUpper()), "")); tupleLists[0].Tuples.Add(new Tuple("NÚMERO", (string.IsNullOrWhiteSpace(item.Patrimonial.Telefone) ? "" : item.Patrimonial.Telefone.ToUpper()), "")); tupleLists[0].Tuples.Add(new Tuple("LOCATÁRIO 1", (string.IsNullOrWhiteSpace(item.Patrimonial.Locatario1) ? "" : item.Patrimonial.Locatario1.ToUpper()), "")); tupleLists[0].Tuples.Add(new Tuple("PREFIXO LOCATÁRIO 1", (string.IsNullOrWhiteSpace(item.Patrimonial.PrefixoLocatario1) ? "" : item.Patrimonial.PrefixoLocatario1), "")); tupleLists[0].Tuples.Add(new Tuple("NÚMERO LOCATÁRIO 1", (string.IsNullOrWhiteSpace(item.Patrimonial.TelefoneLocatario1) ? "" : item.Patrimonial.TelefoneLocatario1), "")); tupleLists[0].Tuples.Add(new Tuple("LOCATÁRIO 2", (string.IsNullOrWhiteSpace(item.Patrimonial.Locatario2) ? "" : item.Patrimonial.Locatario2.ToUpper()), "")); tupleLists[0].Tuples.Add(new Tuple("PREFIXO LOCATÁRIO 2", (string.IsNullOrWhiteSpace(item.Patrimonial.PrefixoLocatario2) ? "" : item.Patrimonial.PrefixoLocatario2), "")); tupleLists[0].Tuples.Add(new Tuple("NÚMERO LOCATÁRIO 2", (string.IsNullOrWhiteSpace(item.Patrimonial.TelefoneLocatario2) ? "" : item.Patrimonial.TelefoneLocatario2), "")); tupleLists[0].Tuples.Add(new Tuple("LOCATÁRIO 3", (string.IsNullOrWhiteSpace(item.Patrimonial.Locatario3) ? "" : item.Patrimonial.Locatario3.ToUpper()), "")); tupleLists[0].Tuples.Add(new Tuple("PREFIXO LOCATÁRIO 3", (string.IsNullOrWhiteSpace(item.Patrimonial.PrefixoLocatario3) ? "" : item.Patrimonial.PrefixoLocatario3), "")); tupleLists[0].Tuples.Add(new Tuple("NÚMERO LOCATÁRIO 3", (string.IsNullOrWhiteSpace(item.Patrimonial.TelefoneLocatario3) ? "" : item.Patrimonial.TelefoneLocatario3), "")); } ObservableCollection> observableCollection1 = new ObservableCollection>() { new Tuple("COBERTURAS$", "", "") }; foreach (Cobertura cobertura in item.Coberturas) { observableCollection1.Add(new Tuple(string.Format(" COBERTURA {0}$", item.Coberturas.IndexOf(cobertura) + 1), "", "")); observableCollection1.Add(new Tuple(" OBSERVAÇÃO", (string.IsNullOrWhiteSpace(cobertura.Observacao) ? "" : cobertura.Observacao.ToUpper()), "")); decimal premio = cobertura.Premio; observableCollection1.Add(new Tuple(" PRÊMIO", premio.ToString("C", new CultureInfo("pt-BR", false)), "")); premio = cobertura.Franquia; observableCollection1.Add(new Tuple(" FRANQUIA", premio.ToString("C", new CultureInfo("pt-BR", false)), "")); premio = cobertura.Lmi; observableCollection1.Add(new Tuple(" L.M.I.", premio.ToString("C", new CultureInfo("pt-BR", false)), "")); } tupleLists.Add(new TupleList() { Tuples = observableCollection1 }); return tupleLists; } public List> Validate() { List> keyValuePairs = ValidationHelper.AddValue(); if (!string.IsNullOrWhiteSpace(this.Imobiliaria) && this.Imobiliaria.Length > 60) { keyValuePairs.AddValue("Imobiliaria", string.Format(Messages.MaiorQueLimite, 60), true); } if (!string.IsNullOrWhiteSpace(this.Locatario1) && this.Locatario1.Length > 100) { keyValuePairs.AddValue("Locatario1", string.Format(Messages.MaiorQueLimite, 100), true); } if (!string.IsNullOrWhiteSpace(this.Locatario2) && this.Locatario2.Length > 100) { keyValuePairs.AddValue("Locatario2", string.Format(Messages.MaiorQueLimite, 100), true); } if (!string.IsNullOrWhiteSpace(this.Locatario3) && this.Locatario3.Length > 100) { keyValuePairs.AddValue("Locatario3", string.Format(Messages.MaiorQueLimite, 100), true); } if (!string.IsNullOrWhiteSpace(this.CpfLocatario1) && !this.CpfLocatario1.ValidacaoDocumento()) { keyValuePairs.AddValue("CpfLocatario1", Messages.Invalido, true); } if (!string.IsNullOrWhiteSpace(this.CpfLocatario2) && !this.CpfLocatario2.ValidacaoDocumento()) { keyValuePairs.AddValue("CpfLocatario2", Messages.Invalido, true); } if (!string.IsNullOrWhiteSpace(this.CpfLocatario3) && !this.CpfLocatario3.ValidacaoDocumento()) { keyValuePairs.AddValue("CpfLocatario3", Messages.Invalido, true); } if (!string.IsNullOrWhiteSpace(this.Contato) && this.Contato.Length > 60) { keyValuePairs.AddValue("Contato", string.Format(Messages.MaiorQueLimite, 60), true); } if (!string.IsNullOrWhiteSpace(this.Prefixo) && !this.Prefixo.ValidacaoPrefixo()) { keyValuePairs.AddValue("Prefixo", Messages.Invalido, true); } if (!string.IsNullOrWhiteSpace(this.Telefone) && !this.Telefone.ValidacaoTelefone()) { keyValuePairs.AddValue("Telefone", Messages.Invalido, true); } if (!string.IsNullOrWhiteSpace(this.PrefixoLocatario1) && !this.PrefixoLocatario1.ValidacaoPrefixo()) { keyValuePairs.AddValue("PrefixoLocatario1", Messages.Invalido, true); } if (!string.IsNullOrWhiteSpace(this.TelefoneLocatario1) && !this.TelefoneLocatario1.ValidacaoTelefone()) { keyValuePairs.AddValue("TelefoneLocatario1", Messages.Invalido, true); } if (!string.IsNullOrWhiteSpace(this.PrefixoLocatario2) && !this.PrefixoLocatario2.ValidacaoPrefixo()) { keyValuePairs.AddValue("PrefixoLocatario2", Messages.Invalido, true); } if (!string.IsNullOrWhiteSpace(this.TelefoneLocatario2) && !this.TelefoneLocatario2.ValidacaoTelefone()) { keyValuePairs.AddValue("TelefoneLocatario2", Messages.Invalido, true); } if (!string.IsNullOrWhiteSpace(this.PrefixoLocatario3) && !this.PrefixoLocatario3.ValidacaoPrefixo()) { keyValuePairs.AddValue("PrefixoLocatario3", Messages.Invalido, true); } if (!string.IsNullOrWhiteSpace(this.TelefoneLocatario3) && !this.TelefoneLocatario3.ValidacaoTelefone()) { keyValuePairs.AddValue("TelefoneLocatario3", Messages.Invalido, true); } if (!string.IsNullOrWhiteSpace(base.Bairro) && base.Bairro.Length > 60) { keyValuePairs.AddValue("Bairro", string.Format(Messages.MaiorQueLimite, 60), true); } if (!string.IsNullOrWhiteSpace(base.Cidade) && base.Cidade.Length > 30) { keyValuePairs.AddValue("Cidade", string.Format(Messages.MaiorQueLimite, 30), true); } if (!string.IsNullOrWhiteSpace(base.Numero) && base.Numero.Length > 10) { keyValuePairs.AddValue("Numero", string.Format(Messages.MaiorQueLimite, 10), true); } if (string.IsNullOrWhiteSpace(base.Cep)) { keyValuePairs.AddValue("Cep", Messages.Obrigatorio, true); } else if (!base.Cep.ValidacaoCep()) { keyValuePairs.AddValue("Cep", Messages.Invalido, true); } if (string.IsNullOrWhiteSpace(base.Endereco)) { keyValuePairs.AddValue("Endereco", Messages.Obrigatorio, true); } if (string.IsNullOrWhiteSpace(base.Numero)) { keyValuePairs.AddValue("Numero", Messages.Obrigatorio, true); } if (string.IsNullOrWhiteSpace(base.Bairro)) { keyValuePairs.AddValue("Bairro", Messages.Obrigatorio, true); } if (string.IsNullOrWhiteSpace(base.Cidade)) { keyValuePairs.AddValue("Cidade", Messages.Obrigatorio, true); } if (string.IsNullOrWhiteSpace(base.Estado)) { keyValuePairs.AddValue("Estado", Messages.Obrigatorio, true); } else if (!base.Estado.ValidacaoEstado()) { keyValuePairs.AddValue("Estado", Messages.Invalido, true); } return keyValuePairs; } public List> ValidateGarantia() { List> keyValuePairs = ValidationHelper.AddValue(); if (!string.IsNullOrWhiteSpace(this.Locatario1) && this.Locatario1.Length > 100) { keyValuePairs.AddValue("Locatario1", string.Format(Messages.MaiorQueLimite, 100), true); } if (!string.IsNullOrWhiteSpace(this.Locatario2) && this.Locatario2.Length > 100) { keyValuePairs.AddValue("Locatario2", string.Format(Messages.MaiorQueLimite, 100), true); } if (!string.IsNullOrWhiteSpace(this.Locatario3) && this.Locatario3.Length > 100) { keyValuePairs.AddValue("Locatario3", string.Format(Messages.MaiorQueLimite, 100), true); } if (!string.IsNullOrWhiteSpace(this.CpfLocatario1) && !this.CpfLocatario1.ValidacaoDocumento()) { keyValuePairs.AddValue("CpfLocatario1", Messages.Invalido, true); } if (!string.IsNullOrWhiteSpace(this.CpfLocatario2) && !this.CpfLocatario2.ValidacaoDocumento()) { keyValuePairs.AddValue("CpfLocatario2", Messages.Invalido, true); } if (!string.IsNullOrWhiteSpace(this.CpfLocatario3) && !this.CpfLocatario3.ValidacaoDocumento()) { keyValuePairs.AddValue("CpfLocatario3", Messages.Invalido, true); } if (!string.IsNullOrWhiteSpace(this.PrefixoLocatario1) && !this.PrefixoLocatario1.ValidacaoPrefixo()) { keyValuePairs.AddValue("PrefixoLocatario1", Messages.Invalido, true); } if (!string.IsNullOrWhiteSpace(this.TelefoneLocatario1) && !this.TelefoneLocatario1.ValidacaoTelefone()) { keyValuePairs.AddValue("TelefoneLocatario1", Messages.Invalido, true); } if (!string.IsNullOrWhiteSpace(this.PrefixoLocatario2) && !this.PrefixoLocatario2.ValidacaoPrefixo()) { keyValuePairs.AddValue("PrefixoLocatario2", Messages.Invalido, true); } if (!string.IsNullOrWhiteSpace(this.TelefoneLocatario2) && !this.TelefoneLocatario2.ValidacaoTelefone()) { keyValuePairs.AddValue("TelefoneLocatario2", Messages.Invalido, true); } if (!string.IsNullOrWhiteSpace(this.PrefixoLocatario3) && !this.PrefixoLocatario3.ValidacaoPrefixo()) { keyValuePairs.AddValue("PrefixoLocatario3", Messages.Invalido, true); } if (!string.IsNullOrWhiteSpace(this.TelefoneLocatario3) && !this.TelefoneLocatario3.ValidacaoTelefone()) { keyValuePairs.AddValue("TelefoneLocatario3", Messages.Invalido, true); } return keyValuePairs; } } }