using System.Collections.Generic; using System.Linq; using Gestor.Model.Common; using Gestor.Model.Domain.Generic; using Gestor.Model.Helper; using Gestor.Model.Resources; namespace Gestor.Model.Domain.Seguros; public class VinculoRepasse : DomainBase { public TipoVendedor TipoVendedor { get; set; } public long IdRepasse { get; set; } public TipoVendedor TipoVendedorVinculo { get; set; } public Repasse RepasseVinculo { get; set; } public List> Validate(List vinculos, Repasse repasse) { List> list = ValidationHelper.AddValue(); if (TipoVendedor == null) { list.AddValue("TipoVendedor|TIPO VENDEDOR DO REPASSE", Messages.Obrigatorio); } if (IdRepasse == 0L) { list.AddValue("IdRepasse|REPASSE", Messages.Obrigatorio); } if (TipoVendedorVinculo == null) { list.AddValue("TipoVendedorVinculo|TIPO VENDEDOR DO VÍNCULO", Messages.Obrigatorio); } if (RepasseVinculo == null) { list.AddValue("RepasseVinculo|REPASSE DO VÍNCULO", Messages.Obrigatorio); } if (TipoVendedor != null && TipoVendedorVinculo != null && TipoVendedor.Id == TipoVendedorVinculo.Id) { list.AddValue("TipoVendedor", "TIPO VENDEDOR SELECIONADO NÃO PODE SER O MESMO TIPO VENDEDOR DO VINCULO"); } if (IdRepasse > 0 && RepasseVinculo != null && IdRepasse == RepasseVinculo.Id) { list.AddValue("RepasseVinculo|REPASSE DO VÍNCULO", "NÃO É POSSÍVEL VINCULAR O MESMO REPASSE"); } decimal num = ((RepasseVinculo == null) ? 0m : ((RepasseVinculo.Tipo.GetValueOrDefault() == TipoRepasse.Percentual && RepasseVinculo.Incidencia.GetValueOrDefault() == TipoIncidencia.SobreComissao) ? RepasseVinculo.ValorNovo : 0m)); decimal num2 = ((repasse.Tipo.GetValueOrDefault() == TipoRepasse.Percentual && repasse.Incidencia.GetValueOrDefault() == TipoIncidencia.SobreComissao) ? repasse.ValorNovo : 0m) + num; num2 += ((TipoVendedor == null) ? 0m : (vinculos?.Where((VinculoRepasse x) => TipoVendedor.Id == x.TipoVendedor.Id && x.RepasseVinculo.Tipo.GetValueOrDefault() == TipoRepasse.Percentual && x.RepasseVinculo.Incidencia.GetValueOrDefault() == TipoIncidencia.SobreComissao).Sum((VinculoRepasse x) => x.RepasseVinculo.ValorNovo) ?? 0m)); decimal num3 = ((RepasseVinculo == null) ? 0m : ((RepasseVinculo.Tipo.GetValueOrDefault() == TipoRepasse.Percentual && RepasseVinculo.Incidencia.GetValueOrDefault() == TipoIncidencia.SobreComissao) ? RepasseVinculo.ValorRenovacao : 0m)); decimal num4 = ((repasse.Tipo.GetValueOrDefault() == TipoRepasse.Percentual && repasse.Incidencia.GetValueOrDefault() == TipoIncidencia.SobreComissao) ? repasse.ValorRenovacao : 0m) + num3 + ((TipoVendedor == null) ? 0m : (vinculos?.Where((VinculoRepasse x) => TipoVendedor.Id == x.TipoVendedor.Id && x.RepasseVinculo.Tipo.GetValueOrDefault() == TipoRepasse.Percentual && x.RepasseVinculo.Incidencia.GetValueOrDefault() == TipoIncidencia.SobreComissao).Sum((VinculoRepasse x) => x.RepasseVinculo.ValorRenovacao) ?? 0m)); if (num2 > 100m) { list.AddValue("RepasseVinculo|VALOR NOVO", "O VALOR DE REPASSE PARA SEGUROS NOVOS ULTRAPASSARÁ 100% DA COMISSÃO RECEBIDA"); } if (num4 > 100m) { list.AddValue("RepasseVinculo|VALOR RENOVAÇÃO", "O VALOR DE REPASSE PARA RENOVAÇÕES ULTRAPASSARÁ 100% DA COMISSÃO RECEBIDA"); } if (vinculos == null || vinculos.Count <= 0) { return list; } if (TipoVendedor != null && TipoVendedorVinculo != null && vinculos.Any((VinculoRepasse x) => x.TipoVendedor.Id == TipoVendedor.Id && x.TipoVendedorVinculo.Id == TipoVendedorVinculo.Id)) { list.AddValue("TipoVendedorVinculo|TIPO VENDEDOR DO VÍNCULO", "JÁ EXISTE UM VINCULO DE REPASSE PARA " + TipoVendedorVinculo.Descricao); } if (TipoVendedor != null && RepasseVinculo != null && vinculos.Any((VinculoRepasse x) => x.TipoVendedor.Id == TipoVendedor.Id && x.RepasseVinculo.Vendedor.Id == RepasseVinculo.Vendedor.Id)) { list.AddValue("TipoVendedorVinculo|VENDEDOR DO VÍNCULO", "JÁ EXISTE UM VINCULO DE REPASSE PARA PARA " + RepasseVinculo.Vendedor.Nome); } return list; } }