using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Globalization; 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 Aeronautico : DomainBase, IDomain { private string _fabricante; private string _modelo; private string _serie; private string _prefixo; private string _marinaAero; private string _certificado; private string _casco; private string _navegacao; private string _observacao; public Item Item { get; set; } public TipoAeronautico Tipo { get; set; } public string Fabricante { get { return _fabricante?.ToUpper(); } set { _fabricante = value; } } public string Modelo { get { return _modelo?.ToUpper(); } set { _modelo = value; } } public string Serie { get { return _serie?.ToUpper(); } set { _serie = value; } } public string Prefixo { get { return _prefixo?.ToUpper(); } set { _prefixo = value; } } public int? Fabricacao { get; set; } public int? Tripulantes { get; set; } public int? Passageiros { get; set; } public string MarinaAero { get { return _marinaAero?.ToUpper(); } set { _marinaAero = value; } } public long? Peso { get; set; } public string Certificado { get { return _certificado?.ToUpper(); } set { _certificado = value; } } public DateTime? Vistoria { get; set; } public string Casco { get { return _casco?.ToUpper(); } set { _casco = value; } } public string Navegacao { get { return _navegacao?.ToUpper(); } set { _navegacao = value; } } public string Observacao { get { return _observacao?.ToUpper(); } set { _observacao = value; } } [JsonIgnore] public Func>> ValidationEvent => Validate; public List> Validate() { List> list = ValidationHelper.AddValue(); if (string.IsNullOrWhiteSpace(Fabricante)) { list.AddValue("Fabricante", Messages.Obrigatorio); } else if (Fabricante != null && Fabricante.Length > 60) { list.AddValue("Fabricante", string.Format(Messages.MaiorQueLimite, 60)); } if (Tipo == (TipoAeronautico)0) { list.AddValue("Tipo", Messages.Obrigatorio); } if (string.IsNullOrWhiteSpace(Modelo)) { list.AddValue("Modelo", Messages.Obrigatorio); } else if (Modelo.Length > 60) { list.AddValue("Modelo", string.Format(Messages.MaiorQueLimite, 60)); } if (Vistoria.HasValue && (DateTime.Compare(Vistoria.Value, new DateTime(1753, 1, 1)) < 0 || DateTime.Compare(Vistoria.Value, new DateTime(9999, 12, 31)) > 0)) { list.AddValue("Vistoria", string.Format(Messages.DataInvalida)); } if (string.IsNullOrWhiteSpace(Serie)) { list.AddValue("Serie", Messages.Obrigatorio); } else if (Serie.Length > 30) { list.AddValue("Serie", string.Format(Messages.MaiorQueLimite, 30)); } if (string.IsNullOrWhiteSpace(Prefixo)) { list.AddValue("Prefixo", Messages.Obrigatorio); } else if (Prefixo.Length > 30) { list.AddValue("Prefixo", string.Format(Messages.MaiorQueLimite, 30)); } if (!Fabricacao.HasValue) { list.AddValue("Fabricacao", Messages.Obrigatorio); } else if (!Fabricacao.Value.ToString().ValidacaoFabricacao()) { list.AddValue("Fabricacao", Messages.Invalido); } if (!Tripulantes.HasValue) { list.AddValue("Tripulantes", Messages.Obrigatorio); } if (!Passageiros.HasValue) { list.AddValue("Passageiros", Messages.Obrigatorio); } if (string.IsNullOrWhiteSpace(MarinaAero)) { list.AddValue("MarinaAero", Messages.Obrigatorio); } else if (MarinaAero.Length > 60) { list.AddValue("MarinaAero", string.Format(Messages.MaiorQueLimite, 60)); } if (!string.IsNullOrWhiteSpace(Certificado) && Certificado.Length > 60) { list.AddValue("Certificado", string.Format(Messages.MaiorQueLimite, 60)); } if (string.IsNullOrWhiteSpace(Casco) && Tipo.Categoria() == "Aero") { list.AddValue("Casco", Messages.Obrigatorio); } else if (Tipo.Categoria() != "Aero" && Casco != null && Casco.Length > 60) { list.AddValue("Casco", string.Format(Messages.MaiorQueLimite, 60)); } if (!string.IsNullOrWhiteSpace(Navegacao) && Tipo.Categoria() != "Aero" && Navegacao.Length > 60) { list.AddValue("Navegacao", string.Format(Messages.MaiorQueLimite, 60)); } if (!Vistoria.HasValue && Tipo.Categoria() == "Aero") { list.AddValue("Vistoria", Messages.Obrigatorio); } if (!Peso.HasValue && Tipo.Categoria() == "Aero") { list.AddValue("Peso", Messages.Obrigatorio); } return list; } public static List Log(Item item) { List list = new List { new TupleList { Tuples = new ObservableCollection> { new Tuple("TIPO DE AERONAVE", item.Aeronautico.Tipo.GetDescription(), ""), new Tuple("FABRICANTE", string.IsNullOrWhiteSpace(item.Aeronautico.Fabricante) ? "" : item.Aeronautico.Fabricante.ToUpper(), ""), new Tuple("MODELO", string.IsNullOrWhiteSpace(item.Aeronautico.Modelo) ? "" : item.Aeronautico.Modelo.ToUpper(), ""), new Tuple("REGISTRO", string.IsNullOrWhiteSpace(item.Aeronautico.Serie) ? "" : item.Aeronautico.Serie.ToUpper(), ""), new Tuple("PREFIXO", string.IsNullOrWhiteSpace(item.Aeronautico.Prefixo) ? "" : item.Aeronautico.Prefixo.ToUpper(), ""), new Tuple("ANO DE FABRICAÇÃO", (!item.Aeronautico.Fabricacao.HasValue) ? "" : item.Aeronautico.Fabricacao?.ToString(), ""), new Tuple("TRIPULANTES", (!item.Aeronautico.Tripulantes.HasValue) ? "" : item.Aeronautico.Tripulantes?.ToString(), ""), new Tuple("PASSAGEIROS", (!item.Aeronautico.Passageiros.HasValue) ? "" : item.Aeronautico.Passageiros?.ToString(), ""), new Tuple("AERÓDROMO", string.IsNullOrWhiteSpace(item.Aeronautico.MarinaAero) ? "" : item.Aeronautico.MarinaAero.ToUpper(), ""), new Tuple("PESO", (!item.Aeronautico.Peso.HasValue) ? "" : item.Aeronautico.Peso?.ToString(), ""), new Tuple("NAVEGAÇÃO", string.IsNullOrWhiteSpace(item.Aeronautico.Navegacao) ? "" : item.Aeronautico.Navegacao.ToUpper(), ""), new Tuple("CERTIFICADO", string.IsNullOrWhiteSpace(item.Aeronautico.Certificado) ? "" : item.Aeronautico.Certificado.ToUpper(), ""), new Tuple("MATERIAL DO CASCO", string.IsNullOrWhiteSpace(item.Aeronautico.Casco) ? "" : item.Aeronautico.Casco.ToUpper(), ""), new Tuple("VALIDADE DA VISTORIA", (!item.Aeronautico.Vistoria.HasValue) ? "" : item.Aeronautico.Vistoria?.ToShortDateString(), ""), new Tuple("OBSERVAÇÃO", string.IsNullOrWhiteSpace(item.Aeronautico.Observacao) ? "" : item.Aeronautico.Observacao.ToUpper(), "") } } }; ObservableCollection> observableCollection = new ObservableCollection> { new Tuple("COBERTURAS$", "", "") }; foreach (Cobertura cobertura in item.Coberturas) { observableCollection.Add(new Tuple($" COBERTURA {item.Coberturas.IndexOf(cobertura) + 1}$", "", "")); observableCollection.Add(new Tuple(" OBSERVAÇÃO", string.IsNullOrWhiteSpace(cobertura.Observacao) ? "" : cobertura.Observacao.ToUpper(), "")); observableCollection.Add(new Tuple(" PRÊMIO", cobertura.Premio.ToString("C", new CultureInfo("pt-BR", useUserOverride: false)), "")); observableCollection.Add(new Tuple(" FRANQUIA", cobertura.Franquia.ToString("C", new CultureInfo("pt-BR", useUserOverride: false)), "")); observableCollection.Add(new Tuple(" L.M.I.", cobertura.Lmi.ToString("C", new CultureInfo("pt-BR", useUserOverride: false)), "")); } list.Add(new TupleList { Tuples = observableCollection }); return list; } }