using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Globalization; 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 Sinistro : DomainBase, IDomain { private string _numero; private DateTime? _dataReclamacao; private string _itemSinistrado; private string _descricao; private string _observacao; private string _motivo; private string _auxiliar; private string _observacaoInterna; private DateTime? _horaReclamacao; public ControleSinistro ControleSinistro { get; set; } [Log(true)] public SinistroAuto SinistroAuto { get; set; } [Log(true)] public SinistroVida SinistroVida { get; set; } [Log(true)] public string Numero { get { return _numero?.ToUpper(); } set { _numero = value; } } [Log(true)] [Description("DATA RECLAMAÇÃO")] public DateTime? DataReclamacao { get { return _dataReclamacao; } set { if (value.HasValue) { if (!HoraReclamacao.HasValue) { HoraReclamacao = value; } _dataReclamacao = DateTime.Parse($"{value.Value:d} {HoraReclamacao.Value:T}"); } else { _dataReclamacao = null; } } } public DateTime? HoraReclamacao { get { return _horaReclamacao; } set { _horaReclamacao = value; if (value.HasValue) { DataReclamacao = (DataReclamacao.HasValue ? new DateTime?(DateTime.Parse($"{DataReclamacao.Value:d} {value:T}")) : null); } } } [Log(true)] [Description("DATA LIQUIDAÇÃO")] public DateTime? DataLiquidacao { get; set; } public bool Ativo { get; set; } [Log(true)] [Description("ITEM SINISTRADO")] public string ItemSinistrado { get { return _itemSinistrado?.ToUpper(); } set { _itemSinistrado = value; } } [Log(true)] [Description("DESCRIÇÃO")] public string Descricao { get { return _descricao?.ToUpper(); } set { _descricao = value; } } public string Observacao { get { return _observacao; } set { _observacao = value; } } [Log(true)] [Description("VALOR")] public decimal Valor { get; set; } [Log(true)] [Description("MOTIVO")] public string Motivo { get { return _motivo?.ToUpper(); } set { _motivo = value; } } [Log(true)] [Description("VALOR ORÇADO")] public decimal ValorOrcado { get; set; } [Log(true)] [Description("VALOR LIBERADO")] public decimal ValorLiberado { get; set; } [Log(true)] [Description("VALOR PAGO")] public decimal ValorPago { get; set; } [Log(true)] [Description("VALOR FRANQUIA")] public decimal ValorFranquia { get; set; } [Log(true)] [Description("AUXILIAR")] public string Auxiliar { get { return _auxiliar?.ToUpper(); } set { _auxiliar = value; } } [Log(true)] [Description("VALOR SALVADO")] public decimal? ValorSalvado { get; set; } public string ObservacaoInterna { get { return _observacaoInterna; } set { _observacaoInterna = value; } } [Log(true)] [Description("STATUS")] public StatusSinistro? StatusSinistro { get; set; } [Log(true)] [Description("TIPO")] public TipoSinistro? TipoSinistro { get; set; } [Log(true)] [Description("STATUS PERSONALIZADO")] public string StatusPersonalizado { get; set; } [Log(true)] [Description("DATA CRIACAO")] public DateTime? DataCriacao { get; set; } [Log(true)] [Description("USUARIO CRIACAO")] public long IdUsuarioCriacao { get; set; } [Log(true)] [Description("DATA CRIAÇÃO")] public DateTime? DataAlteracao { get; set; } [Log(true)] [Description("USUARIO ALTERACAO")] public long IdUsuarioAlteracao { get; set; } [JsonIgnore] public Func>> ValidationEvent => Validate; public List> Validate() { List> list = ValidationHelper.AddValue(); if (DataReclamacao.HasValue && (DateTime.Compare(DataReclamacao.Value, new DateTime(1753, 1, 1)) < 0 || DateTime.Compare(DataReclamacao.Value, new DateTime(9999, 12, 31)) > 0)) { list.AddValue("DataReclamacao", string.Format(Messages.DataInvalida)); } if (HoraReclamacao.HasValue && (DateTime.Compare(HoraReclamacao.Value, new DateTime(1753, 1, 1)) < 0 || DateTime.Compare(HoraReclamacao.Value, new DateTime(9999, 12, 31)) > 0)) { list.AddValue("HoraReclamacao", string.Format(Messages.DataInvalida)); } if (DataLiquidacao.HasValue && (DateTime.Compare(DataLiquidacao.Value, new DateTime(1753, 1, 1)) < 0 || DateTime.Compare(DataLiquidacao.Value, new DateTime(9999, 12, 31)) > 0)) { list.AddValue("DataLiquidacao", string.Format(Messages.DataInvalida)); } if (ControleSinistro != null) { list.AddRange(ControleSinistro.Validate()); } if (!DataReclamacao.HasValue) { list.AddValue("DataReclamacao", Messages.Obrigatorio); } if (StatusSinistro.GetValueOrDefault() != Gestor.Model.Common.StatusSinistro.EmAndamento && !DataLiquidacao.HasValue) { list.AddValue("DataLiquidacao", Messages.Obrigatorio); } return list; } public List Log() { List list = new List(); TupleList tupleList = new TupleList(); ObservableCollection> observableCollection = new ObservableCollection>(); object item; if (TipoSinistro.HasValue) { TipoSinistro? tipoSinistro = TipoSinistro; item = (tipoSinistro.HasValue ? tipoSinistro.GetValueOrDefault().GetDescription() : null); } else { item = ""; } observableCollection.Add(new Tuple("TIPO DO SINISTRO", (string)item, "")); observableCollection.Add(new Tuple("ITEM SINISTRADO", string.IsNullOrWhiteSpace(ItemSinistrado) ? "" : ItemSinistrado, "")); observableCollection.Add(new Tuple("NÚMERO DO SINISTRO", string.IsNullOrWhiteSpace(Numero) ? "" : Numero, "")); observableCollection.Add(new Tuple("DATA DO SINISTRO", (ControleSinistro == null) ? "" : ControleSinistro?.DataSinistro?.ToShortDateString(), "")); observableCollection.Add(new Tuple("HORA DO SINISTRO", (ControleSinistro == null) ? "" : ControleSinistro?.HoraSinistro?.ToShortTimeString(), "")); observableCollection.Add(new Tuple("DATA DA RECLAMAÇÃO", (!DataReclamacao.HasValue) ? "" : DataReclamacao?.ToShortDateString(), "")); observableCollection.Add(new Tuple("HORA DA RECLAMAÇÃO", (!HoraReclamacao.HasValue) ? "" : HoraReclamacao?.ToShortTimeString(), "")); observableCollection.Add(new Tuple("DATA DE LIQUIDAÇÃO", (!DataLiquidacao.HasValue) ? "" : DataLiquidacao?.ToShortDateString(), "")); object item2; if (StatusSinistro.HasValue) { StatusSinistro? statusSinistro = StatusSinistro; item2 = (statusSinistro.HasValue ? statusSinistro.GetValueOrDefault().GetDescription() : null); } else { item2 = ""; } observableCollection.Add(new Tuple("SITUAÇÃO", (string)item2, "")); observableCollection.Add(new Tuple("VALOR", Valor.ToString(new CultureInfo("pt-BR")), "")); observableCollection.Add(new Tuple("VALOR ORÇADO", ValorOrcado.ToString(new CultureInfo("pt-BR")), "")); observableCollection.Add(new Tuple("VALOR LIBERADO", ValorLiberado.ToString(new CultureInfo("pt-BR")), "")); observableCollection.Add(new Tuple("VALOR PAGO", ValorPago.ToString(new CultureInfo("pt-BR")), "")); observableCollection.Add(new Tuple("VALOR SALVADO", ValorSalvado.ToString(), "")); observableCollection.Add(new Tuple("VALOR FRANQUIA", ValorFranquia.ToString(new CultureInfo("pt-BR")), "")); observableCollection.Add(new Tuple("MOTIVO", string.IsNullOrWhiteSpace(Motivo) ? "" : Motivo, "")); observableCollection.Add(new Tuple("AUXILIAR", string.IsNullOrWhiteSpace(Auxiliar) ? "" : Auxiliar, "")); observableCollection.Add(new Tuple("DESCRIÇÃO", string.IsNullOrWhiteSpace(Descricao) ? "" : Descricao, "")); tupleList.Tuples = observableCollection; list.Add(tupleList); List list2 = list; ObservableCollection> tuples2; object item4; if (SinistroAuto != null) { list2[0].Tuples.Add(new Tuple("NÚMERO DO B.O.", string.IsNullOrWhiteSpace(SinistroAuto?.NumeroBo) ? "" : SinistroAuto?.NumeroBo, "")); ObservableCollection> tuples = list2[0].Tuples; object item3; if (SinistroAuto.TipoPerda.HasValue) { SinistroAuto sinistroAuto = SinistroAuto; if (sinistroAuto == null) { item3 = null; } else { TipoPerda? tipoPerda = sinistroAuto.TipoPerda; item3 = (tipoPerda.HasValue ? tipoPerda.GetValueOrDefault().GetDescription() : null); } } else { item3 = ""; } tuples.Add(new Tuple("TIPO DE PERDA", (string)item3, "")); tuples2 = list2[0].Tuples; if (SinistroAuto.Culpado.HasValue) { SinistroAuto sinistroAuto2 = SinistroAuto; if (sinistroAuto2 == null || sinistroAuto2.Culpado != false) { item4 = "SIM"; goto IL_0571; } } item4 = "NÃO"; goto IL_0571; } goto IL_0912; IL_0912: if (SinistroVida != null) { ObservableCollection> tuples3 = list2[0].Tuples; SinistroVida sinistroVida = SinistroVida; object item5; if (sinistroVida != null && sinistroVida.TipoPerda.HasValue) { SinistroVida sinistroVida2 = SinistroVida; if (sinistroVida2 == null) { item5 = null; } else { TipoPerda? tipoPerda = sinistroVida2.TipoPerda; item5 = (tipoPerda.HasValue ? tipoPerda.GetValueOrDefault().GetDescription() : null); } } else { item5 = ""; } tuples3.Add(new Tuple("TIPO DE PERDA", (string)item5, "")); ObservableCollection> tuples4 = list2[0].Tuples; SinistroVida sinistroVida3 = SinistroVida; tuples4.Add(new Tuple("AUXÍLIO FUNERAL", (sinistroVida3 == null || !sinistroVida3.AuxFuneral.HasValue) ? "" : ((SinistroVida?.AuxFuneral.Value).Value ? "SIM" : "NÃO"), "")); ObservableCollection> tuples5 = list2[0].Tuples; SinistroVida sinistroVida4 = SinistroVida; object item6; if (sinistroVida4 != null && sinistroVida4.EstadoCivil.HasValue) { SinistroVida sinistroVida5 = SinistroVida; if (sinistroVida5 == null) { item6 = null; } else { EstadoCivil? estadoCivil = sinistroVida5.EstadoCivil; item6 = (estadoCivil.HasValue ? estadoCivil.GetValueOrDefault().GetDescription() : null); } } else { item6 = ""; } tuples5.Add(new Tuple("ESTADO CIVIL", (string)item6, "")); list2[0].Tuples.Add(new Tuple("CERTIDÃO DE ÓBITO", string.IsNullOrWhiteSpace(SinistroVida?.CertObito) ? "" : SinistroVida?.CertObito, "")); list2[0].Tuples.Add(new Tuple("BENEFICIÁRIO", string.IsNullOrWhiteSpace(SinistroVida?.Beneficiario) ? "" : SinistroVida?.Beneficiario, "")); } return list2; IL_0571: tuples2.Add(new Tuple("CONSIDERA-SE CULPADO?", (string)item4, "")); list2[0].Tuples.Add(new Tuple("ÚLTIMO DOC. ENVIADO", (!SinistroAuto.UltimoDocEnviado.HasValue) ? "" : SinistroAuto?.UltimoDocEnviado?.ToShortDateString(), "")); list2[0].Tuples.Add(new Tuple("ENDEREÇO", string.IsNullOrWhiteSpace(SinistroAuto?.Endereco) ? "" : SinistroAuto?.Endereco, "")); list2[0].Tuples.Add(new Tuple("ENVOLVIDO/PROPRIETÁRIO", string.IsNullOrWhiteSpace(SinistroAuto?.Envolvido) ? "" : SinistroAuto?.Envolvido, "")); list2[0].Tuples.Add(new Tuple("MOTORISTA", string.IsNullOrWhiteSpace(SinistroAuto?.Motorista) ? "" : SinistroAuto?.Motorista, "")); list2[0].Tuples.Add(new Tuple("DDD", string.IsNullOrWhiteSpace(SinistroAuto?.Ddd) ? "" : SinistroAuto?.Ddd, "")); list2[0].Tuples.Add(new Tuple("TELEFONE", string.IsNullOrWhiteSpace(SinistroAuto?.Telefone) ? "" : SinistroAuto?.Telefone, "")); list2[0].Tuples.Add(new Tuple("E-MAIL", string.IsNullOrWhiteSpace(SinistroAuto?.Email) ? "" : SinistroAuto?.Email, "")); list2[0].Tuples.Add(new Tuple("VALOR MECÂNICA", SinistroAuto?.ValorMecanica.ToString(new CultureInfo("pt-BR")), "")); list2[0].Tuples.Add(new Tuple("PARCEIRO MECÂNICA", (SinistroAuto?.ParceiroMecanica == null) ? "" : SinistroAuto?.ParceiroMecanica?.Nome, "")); list2[0].Tuples.Add(new Tuple("VALOR FUNILARIA", SinistroAuto?.ValorFunilaria.ToString(new CultureInfo("pt-BR")), "")); list2[0].Tuples.Add(new Tuple("PARCEIRO FUNILARIA", (SinistroAuto?.ParceiroFunilaria == null) ? "" : SinistroAuto?.ParceiroFunilaria?.Nome, "")); goto IL_0912; } }