public async Task <DeclaracionOutput> Execute(Guid declaracionID) { var declaracion = await _declaracionReadOnlyRepository.Get(declaracionID); var funcionario = await _funcionarioReadOnlyRepository.GetByCodigo(declaracion.FuncionarioID); var depositos = new List <DepositoOutput>(); foreach (var item in declaracion.Depositos.Items) { depositos.Add(new DepositoOutput(item.ID, item.DeclaracionID, item.InstitucionFinanciera, item.TipoDeCuenta, item.Saldo)); } var deudasBancarias = new List <DeudaBancariaOutput>(); foreach (var item in declaracion.DeudasBancarias.Items) { deudasBancarias.Add(new DeudaBancariaOutput(item.ID, item.DeclaracionID, item.InstitucionFinanciera, item.Monto, item.Tipo)); } var inmuebles = new List <InmuebleOutput>(); foreach (var item in declaracion.Inmuebles.Items) { inmuebles.Add(new InmuebleOutput(item.ID, item.DeclaracionID, item.Direccion, item.TipoDeInmueble, item.PorcentajeParticipacion.Valor, item.ValorComercial, item.SaldoHipoteca, item.Banco)); } var otrosIngresos = new List <OtroIngresoOutput>(); foreach (var item in declaracion.OtrosIngresos.Items) { otrosIngresos.Add(new OtroIngresoOutput(item.ID, item.DeclaracionID, item.Concepto, item.IngresoMensual)); } var valoresNegociables = new List <ValorNegociableOutput>(); foreach (var item in declaracion.ValoresNegociables.Items) { valoresNegociables.Add(new ValorNegociableOutput(item.ID, item.DeclaracionID, item.Descripcion, item.TipoValor, item.ValorAproximado)); } var vehiculos = new List <VehiculoOutput>(); foreach (var item in declaracion.Vehiculos.Items) { vehiculos.Add(new VehiculoOutput(item.ID, item.DeclaracionID, item.Marca, item.TipoVehiculo, item.Anio, item.ValorAproximado, item.SaldoDeudor, item.Banco)); } var output = new DeclaracionOutput(declaracion, funcionario, depositos, deudasBancarias, inmuebles, otrosIngresos, valoresNegociables, vehiculos, declaracion.PatrimonioNeto, new List <string> { MENSAJE_IMPORTANTE1, MENSAJE_IMPORTANTE2 }); return(output); }
public async Task <DeclaracionResumenOutput> Execute(int anio, int funcionarioID) { var gestion = await _gestionReadOnlyRepository.Get(anio); if (gestion == null) { throw new ApplicationException("La gestión '" + anio.ToString() + "' no existe."); } var declaracionActual = await _declaracionReadOnlyRepository.Get(Gestion.For(gestion.Anio, gestion.FechaInicio, gestion.FechaFinal, gestion.Vigente), funcionarioID); if (declaracionActual == null) { throw new ApplicationException("No exsiste Declaración para el FuncionarioID '" + funcionarioID.ToString() + "' en la gestión '" + anio.ToString() + "'"); } var declaraciones = await _declaracionReadOnlyRepository.GetDeclaracionesResumen(anio, funcionarioID); var declaracionesAnteriores = new List <DeclaracionResumenOutput>(); foreach (var declaracionAnterior in declaraciones.Where(c => c.ID != declaracionActual.ID)) { declaracionesAnteriores.Add(new DeclaracionResumenOutput( declaracionAnterior.ID, declaracionAnterior.Gestion, declaracionAnterior.Estado.ToString(), new List <DeclaracionResumenOutput>())); } return(new DeclaracionResumenOutput( declaracionActual.ID, declaracionActual.Gestion.Anio, declaracionActual.Estado.ToString(), declaracionesAnteriores)); }
public async Task <ICollection <AlertaGeneralOutput> > ExecuteList(int gestion, decimal monto, string operador, decimal porcentaje) { var declaracionesAlerta = await _alertaGeneralReadOnlyRepository.GetFromGestion(gestion); var result = new List <AlertaGeneralOutput>(); foreach (var item in declaracionesAlerta) { var declaracionActual = await _declaracionReadOnlyRepository.Get(item.DeclaracionID); var declaracionAnterior = await _declaracionReadOnlyRepository.Get(item.DeclaracionAnteriorID); var declaracion = Declaracion.Load(declaracionActual.ID, declaracionActual.FuncionarioID, declaracionActual.Gestion, declaracionActual.FechaLlenado, declaracionActual.Estado, declaracionActual.Depositos, declaracionActual.DeudasBancarias, declaracionActual.Inmuebles, declaracionActual.OtrosIngresos, declaracionActual.ValoresNegociables, declaracionActual.Vehiculos, declaracionAnterior); item.SetMontosPatrimonio(declaracion.PatrimonioNeto, declaracion.PatrimonioNetoGestionAnterior, declaracion.DiferenciaPatrimonio, declaracion.VariacionPorcentual); result.Add(item); } if (monto > 0 && porcentaje > 0 && !String.IsNullOrEmpty(operador)) { var condicionAlerta = new CondicionAlerta(operador); switch (condicionAlerta.Operador) { case Domain.Enumerations.OperadorAlerta.Y: result = result.Where(c => c.DiferenciaPatrimonio > monto && c.VariacionPorcentual > porcentaje).ToList(); break; case Domain.Enumerations.OperadorAlerta.O: result = result.Where(c => c.DiferenciaPatrimonio > monto || c.VariacionPorcentual > porcentaje).ToList(); break; default: break; } } return(result); }
public async Task Execute(Guid declaracionID) { var declaracion = await _declaracionReadOnlyRepository.Get(declaracionID, true); var gestiones = await _gestionReadOnlyRepository.GetAll(); var gestionVigente = gestiones.Where(c => c.Vigente).FirstOrDefault(); declaracion.CambiarEstado(EstadoDeclaracion.Anulada); await _declaracionWriteOnlyRepository.UpdateEstado(declaracionID, EstadoDeclaracion.Anulada); var declaracionAnterior = declaracion.DeclaracionAnterior != null ? declaracion.DeclaracionAnterior : Declaracion.Load(Guid.NewGuid(), declaracion.FuncionarioID, Gestion.For(gestionVigente.Anio, gestionVigente.FechaInicio, gestionVigente.FechaFinal, gestionVigente.Vigente), DateTime.Now, EstadoDeclaracion.Pendiente, new DepositoCollection(), new DeudaBancariaCollection(), new InmuebleCollection(), new OtroIngresoCollection(), new ValorNegociableCollection(), new VehiculoCollection(), null); var declaracionNueva = Declaracion.Load(Guid.NewGuid(), declaracionAnterior.FuncionarioID, Gestion.For(gestionVigente.Anio, gestionVigente.FechaInicio, gestionVigente.FechaFinal, gestionVigente.Vigente), DateTime.Now, EstadoDeclaracion.Pendiente, declaracionAnterior.Depositos, declaracionAnterior.DeudasBancarias, declaracionAnterior.Inmuebles, declaracionAnterior.OtrosIngresos, declaracionAnterior.ValoresNegociables, declaracionAnterior.Vehiculos, declaracionAnterior); await _declaracionWriteOnlyRepository.Add(declaracionNueva); foreach (var item in declaracionAnterior.Depositos.GetItems()) { await _depositoWriteOnlyRepository.Add(new Domain.Depositos.DepositoMayor10K(declaracionNueva.ID, item.InstitucionFinanciera, item.TipoDeCuenta, item.Saldo)); } foreach (var item in declaracionAnterior.Inmuebles.GetItems()) { await _inmuebleWriteOnlyRepository.Add(new Domain.Inmuebles.Inmueble(declaracionNueva.ID, item.Direccion, item.TipoDeInmueble, item.PorcentajeParticipacion, item.ValorComercial, item.SaldoHipoteca, item.Banco)); } foreach (var item in declaracionAnterior.Vehiculos.GetItems()) { await _vehiculoWriteOnlyRepository.Add(new Domain.Vehiculos.Vehiculo(declaracionNueva.ID, item.Marca, item.TipoVehiculo, item.Anio, item.ValorAproximado, item.SaldoDeudor, item.Banco)); } foreach (var item in declaracionAnterior.OtrosIngresos.GetItems()) { await _otroIngresoWriteOnlyRepository.Add(new Domain.OtrosIngresos.OtroIngreso(declaracionNueva.ID, item.Concepto, item.IngresoMensual)); } foreach (var item in declaracionAnterior.ValoresNegociables.GetItems()) { await _valorNegociableWriteOnlyRepository.Add(new Domain.ValoresNegociables.ValorNegociableMayor10K(declaracionNueva.ID, item.Descripcion, item.TipoValor, item.ValorAproximado)); } foreach (var item in declaracionAnterior.DeudasBancarias.GetItems()) { await _deudaBancariaWriteOnlyRepository.Add(new Domain.DeudasBancarias.DeudaBancariaMayor10K(declaracionNueva.ID, item.InstitucionFinanciera, item.Monto, item.Tipo)); } }
public async Task <ICollection <AlertaIndividualOutput> > ExecuteList(int gestion, decimal monto, string operador, decimal porcentaje) { var declaracionesAlerta = await _alertaIndividualReadOnlyRepository.GetFromGestion(gestion); var gestionOutput = await _gestionReadOnlyRepository.Get(gestion); var result = new List <AlertaIndividualOutput>(); foreach (var item in declaracionesAlerta) { var declaracionActual = await _declaracionReadOnlyRepository.Get(item.DeclaracionID); Declaracion declaracionAnterior = null; try { if (item.DeclaracionAnteriorID == null) { declaracionAnterior = Declaracion.Load(Guid.NewGuid(), item.FuncionarioID, Gestion.For(gestionOutput.Anio, gestionOutput.FechaInicio, gestionOutput.FechaFinal, gestionOutput.Vigente), DateTime.Now, Domain.Enumerations.EstadoDeclaracion.Completado, new DepositoCollection(), new DeudaBancariaCollection(), new InmuebleCollection(), new OtroIngresoCollection(), new ValorNegociableCollection(), new VehiculoCollection(), null); } else { declaracionAnterior = await _declaracionReadOnlyRepository.Get(item.DeclaracionAnteriorID); if (declaracionAnterior == null) { declaracionAnterior = Declaracion.Load(Guid.NewGuid(), item.FuncionarioID, Gestion.For(gestionOutput.Anio, gestionOutput.FechaInicio, gestionOutput.FechaFinal, gestionOutput.Vigente), DateTime.Now, Domain.Enumerations.EstadoDeclaracion.Completado, new DepositoCollection(), new DeudaBancariaCollection(), new InmuebleCollection(), new OtroIngresoCollection(), new ValorNegociableCollection(), new VehiculoCollection(), null); } } var declaracion = Declaracion.Load(declaracionActual.ID, declaracionActual.FuncionarioID, declaracionActual.Gestion, declaracionActual.FechaLlenado, declaracionActual.Estado, declaracionActual.Depositos, declaracionActual.DeudasBancarias, declaracionActual.Inmuebles, declaracionActual.OtrosIngresos, declaracionActual.ValoresNegociables, declaracionActual.Vehiculos, declaracionAnterior); if (declaracionAnterior.Depositos.ValorNeto > 0) { item.SetMontosDepositos(declaracionActual.Depositos.ValorNeto, declaracionAnterior.Depositos.ValorNeto, declaracionActual.Depositos.ValorNeto - declaracionAnterior.Depositos.ValorNeto, (declaracionActual.Depositos.ValorNeto - declaracionAnterior.Depositos.ValorNeto) / declaracionAnterior.Depositos.ValorNeto * 100); } if (declaracionAnterior.DeudasBancarias.ValorNeto > 0) { item.SetMontosDeudaBancaria(declaracionActual.DeudasBancarias.ValorNeto, declaracionAnterior.DeudasBancarias.ValorNeto, declaracionActual.DeudasBancarias.ValorNeto - declaracionAnterior.DeudasBancarias.ValorNeto, (declaracionActual.DeudasBancarias.ValorNeto - declaracionAnterior.DeudasBancarias.ValorNeto) / declaracionAnterior.DeudasBancarias.ValorNeto * 100); } if (declaracionAnterior.Inmuebles.ValorNeto > 0) { item.SetMontosInmuebles(declaracionActual.Inmuebles.ValorNeto, declaracionAnterior.Inmuebles.ValorNeto, declaracionActual.Inmuebles.ValorNeto - declaracionAnterior.Inmuebles.ValorNeto, (declaracionActual.Inmuebles.ValorNeto - declaracionAnterior.Inmuebles.ValorNeto) / declaracionAnterior.Inmuebles.ValorNeto * 100); } if (declaracionAnterior.OtrosIngresos.ValorNeto > 0) { item.SetMontosOtrosIngresos(declaracionActual.OtrosIngresos.ValorNeto, declaracionAnterior.OtrosIngresos.ValorNeto, declaracionActual.OtrosIngresos.ValorNeto - declaracionAnterior.OtrosIngresos.ValorNeto, (declaracionActual.OtrosIngresos.ValorNeto - declaracionAnterior.OtrosIngresos.ValorNeto) / declaracionAnterior.OtrosIngresos.ValorNeto * 100); } if (declaracionAnterior.ValoresNegociables.ValorNeto > 0) { item.SetMontosValoresNegociables(declaracionActual.ValoresNegociables.ValorNeto, declaracionAnterior.ValoresNegociables.ValorNeto, declaracionActual.ValoresNegociables.ValorNeto - declaracionAnterior.ValoresNegociables.ValorNeto, (declaracionActual.ValoresNegociables.ValorNeto - declaracionAnterior.ValoresNegociables.ValorNeto) / declaracionAnterior.ValoresNegociables.ValorNeto * 100); } if (declaracionAnterior.Vehiculos.ValorNeto > 0) { item.SetMontosVehiculos(declaracionActual.Vehiculos.ValorNeto, declaracionAnterior.Vehiculos.ValorNeto, declaracionActual.Vehiculos.ValorNeto - declaracionAnterior.Vehiculos.ValorNeto, (declaracionActual.Vehiculos.ValorNeto - declaracionAnterior.Vehiculos.ValorNeto) / declaracionAnterior.Vehiculos.ValorNeto * 100); } item.SetMontosPatrimonioTotal(declaracion.PatrimonioNeto, declaracion.PatrimonioNetoGestionAnterior, declaracion.DiferenciaPatrimonio, declaracion.VariacionPorcentual); result.Add(item); } catch (Exception ex) { var exception = new InvalidOperationException(String.Format("Error en Declaraion '{0}' FuncionarioID '{1}'", item.DeclaracionID, declaracionActual.FuncionarioID), ex); throw exception; } } if (monto > 0 && porcentaje > 0 && !String.IsNullOrEmpty(operador)) { var condicionAlerta = new CondicionAlerta(operador); switch (condicionAlerta.Operador) { case Domain.Enumerations.OperadorAlerta.Y: result = result.Where(c => c.DiferenciaPatrimonio > monto && c.VariacionPorcentual > porcentaje).ToList(); break; case Domain.Enumerations.OperadorAlerta.O: result = result.Where(c => c.DiferenciaPatrimonio > monto || c.VariacionPorcentual > porcentaje).ToList(); break; default: break; } } return(result); }