public async Task <OtroIngresoOutput> Execute(Guid otroIngresoID, Guid declaracionID, string concepto, decimal ingresoMensual) { if (otroIngresoID == null || otroIngresoID == Guid.Empty) { await _otroIngresoWriteOnlyRepository.Add(new OtroIngreso(declaracionID, concepto, ingresoMensual)); } else { await _otroIngresoWriteOnlyRepository.Update(OtroIngreso.Load(otroIngresoID, declaracionID, concepto, ingresoMensual)); } return(new OtroIngresoOutput(otroIngresoID, declaracionID, concepto, ingresoMensual)); }
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)); } }