Esempio n. 1
0
        public async Task <Declaracion> Get(Gestion gestion, int funcionarioID)
        {
            using (IDbConnection db = new SqlConnection(connectionString))
            {
                string declaracionSQL = "SELECT * FROM Declaraciones WHERE Gestion = @Anio AND FuncionarioID = @funcionarioID Order by FechaActualización DESC";
                Entities.DeclaracionPatrimonial declaracion = await db
                                                              .QueryFirstOrDefaultAsync <Entities.DeclaracionPatrimonial>(declaracionSQL, new { gestion.Anio, funcionarioID });

                if (declaracion == null)
                {
                    return(null);
                }

                var declaracionID = declaracion.ID;
                DepositoCollection depositosCollection = await ReadDepositoCollection(declaracionID, db);

                DeudaBancariaCollection deudasCollection = await ReadDeudasCollection(declaracionID, db);

                InmuebleCollection inmueblesCollection = await ReadInmueblesCollection(declaracionID, db);

                OtroIngresoCollection otrosIngresosCollection = await ReadOtrosIngresosCollection(declaracionID, db);

                ValorNegociableCollection valoresNegociablesCollection = await ReadValoresNegociablesCollection(declaracionID, db);

                VehiculoCollection vehiculosCollection = await ReadVehiculosCollection(declaracionID, db);

                Declaracion result = Declaracion.Load(declaracion.ID, declaracion.FuncionarioID, gestion, declaracion.FechaLlenado, (EstadoDeclaracion)Enum.Parse(typeof(EstadoDeclaracion), declaracion.Estado),
                                                      depositosCollection, deudasCollection, inmueblesCollection, otrosIngresosCollection, valoresNegociablesCollection, vehiculosCollection, null);
                return(result);
            }
        }
Esempio n. 2
0
        public async Task <Declaracion> Get(Guid declaracionID, bool loadDeclaracionAnterior = false)
        {
            using (IDbConnection db = new SqlConnection(connectionString))
            {
                string declaracionSQL = "SELECT * FROM Declaraciones WHERE ID = @declaracionID";
                var    declaracion    = await db
                                        .QueryFirstOrDefaultAsync <Entities.DeclaracionPatrimonial>(declaracionSQL, new { declaracionID });

                if (declaracion == null)
                {
                    return(null);
                }

                var gestion = await db.QueryFirstOrDefaultAsync <Entities.GestionSchema>("SELECT * FROM Gestiones WHERE Gestion = @gestion", new { declaracion.Gestion });

                DepositoCollection depositosCollection = await ReadDepositoCollection(declaracionID, db);

                DeudaBancariaCollection deudasCollection = await ReadDeudasCollection(declaracionID, db);

                InmuebleCollection inmueblesCollection = await ReadInmueblesCollection(declaracionID, db);

                OtroIngresoCollection otrosIngresosCollection = await ReadOtrosIngresosCollection(declaracionID, db);

                ValorNegociableCollection valoresNegociablesCollection = await ReadValoresNegociablesCollection(declaracionID, db);

                VehiculoCollection vehiculosCollection = await ReadVehiculosCollection(declaracionID, db);

                Declaracion declaracionAnterior = null;

                if (loadDeclaracionAnterior && declaracion.DeclaracionAnteriorID != Guid.Empty)
                {
                    var declaracionAnteriorID = declaracion.DeclaracionAnteriorID;

                    DepositoCollection depositosAnteriorCollection = await ReadDepositoCollection(declaracionAnteriorID, db);

                    DeudaBancariaCollection deudasAnteriorCollection = await ReadDeudasCollection(declaracionAnteriorID, db);

                    InmuebleCollection inmueblesAnteriorCollection = await ReadInmueblesCollection(declaracionAnteriorID, db);

                    OtroIngresoCollection otrosAnteriorIngresosCollection = await ReadOtrosIngresosCollection(declaracionAnteriorID, db);

                    ValorNegociableCollection valoresAnteriorNegociablesCollection = await ReadValoresNegociablesCollection(declaracionAnteriorID, db);

                    VehiculoCollection vehiculosAnteriorCollection = await ReadVehiculosCollection(declaracionAnteriorID, db);

                    declaracionAnterior = Declaracion.Load(declaracionAnteriorID, declaracion.FuncionarioID, Gestion.For(gestion.Gestion,
                                                                                                                         gestion.FechaInicio, gestion.FechaFinal, gestion.Vigente), declaracion.FechaLlenado, (EstadoDeclaracion)Enum.Parse(typeof(EstadoDeclaracion), declaracion.Estado),
                                                           depositosAnteriorCollection, deudasAnteriorCollection, inmueblesAnteriorCollection, otrosAnteriorIngresosCollection, valoresAnteriorNegociablesCollection,
                                                           vehiculosAnteriorCollection, null);
                }

                Declaracion result = Declaracion.Load(declaracion.ID, declaracion.FuncionarioID, Gestion.For(gestion.Gestion,
                                                                                                             gestion.FechaInicio, gestion.FechaFinal, gestion.Vigente), declaracion.FechaLlenado, (EstadoDeclaracion)Enum.Parse(typeof(EstadoDeclaracion), declaracion.Estado),
                                                      depositosCollection, deudasCollection, inmueblesCollection, otrosIngresosCollection, valoresNegociablesCollection, vehiculosCollection, declaracionAnterior);
                return(result);
            }
        }
Esempio n. 3
0
        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));
            }
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        public async Task <ICollection <Declaracion> > GetByGestion(Gestion gestion)
        {
            using (IDbConnection db = new SqlConnection(connectionString))
            {
                string declaracionSQL = "SELECT * FROM Declaraciones WHERE Gestion = @Anio";
                var    declaraciones  = await db.QueryAsync <Entities.DeclaracionPatrimonial>(declaracionSQL, new { gestion.Anio });

                var outputResult = new List <Declaracion>();

                if (declaraciones == null)
                {
                    return(outputResult);
                }

                foreach (var declaracion in declaraciones)
                {
                    outputResult.Add(Declaracion.Load(declaracion.ID, declaracion.FuncionarioID, gestion, declaracion.FechaLlenado,
                                                      (EstadoDeclaracion)Enum.Parse(typeof(EstadoDeclaracion), declaracion.Estado),
                                                      new DepositoCollection(), new DeudaBancariaCollection(), new InmuebleCollection(), new OtroIngresoCollection(),
                                                      new ValorNegociableCollection(), new VehiculoCollection(), null));
                }
                return(outputResult);
            }
        }
Esempio n. 6
0
        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);
        }