コード例 #1
0
 public ReglaAlerta(int gestion, string descripcion, decimal porcentajeVariacion, CondicionAlerta condicion, decimal monto)
 {
     ID                  = Guid.NewGuid();
     Gestion             = gestion;
     Descripcion         = descripcion;
     PorcentajeVariacion = porcentajeVariacion;
     Condicion           = condicion;
     Monto               = monto;
 }
コード例 #2
0
        public async Task <ReglaAlerta> Get(Guid id)
        {
            using (IDbConnection db = new SqlConnection(connectionString))
            {
                string sqlCommand = "SELECT * FROM ReglasAlerta WHERE ID = @id";

                var reglaAlerta = await db.QueryFirstOrDefaultAsync <Entities.ReglaAlerta>(sqlCommand, new { id });

                if (reglaAlerta == null)
                {
                    return(null);
                }
                var condicion = new CondicionAlerta(reglaAlerta.Operador);
                return(ReglaAlerta.Load(reglaAlerta.ID, reglaAlerta.Gestion, reglaAlerta.Descripcion, reglaAlerta.Porcentaje, condicion, reglaAlerta.Monto));
            }
        }
コード例 #3
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);
        }
コード例 #4
0
        public async Task <ICollection <ReglaAlerta> > GetByGestion(int gestion)
        {
            using (IDbConnection db = new SqlConnection(connectionString))
            {
                string sqlCommand = "SELECT * FROM ReglasAlerta WHERE Gestion = @gestion";

                var reglas = await db.QueryAsync <Entities.ReglaAlerta>(sqlCommand, new { gestion });

                var outputResult = new List <ReglaAlerta>();

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

                foreach (var reglaAlerta in reglas)
                {
                    var condicion = new CondicionAlerta(reglaAlerta.Operador);
                    outputResult.Add(ReglaAlerta.Load(reglaAlerta.ID, reglaAlerta.Gestion, reglaAlerta.Descripcion, reglaAlerta.Porcentaje, condicion, reglaAlerta.Monto));
                }
                return(outputResult);
            }
        }
コード例 #5
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);
        }
コード例 #6
0
 public static ReglaAlerta Load(Guid id, int gestion, string descripcion, decimal porcentajeVariacion, CondicionAlerta condicion, decimal monto)
 {
     return(new ReglaAlerta
     {
         ID = id,
         Gestion = gestion,
         Descripcion = descripcion,
         PorcentajeVariacion = porcentajeVariacion,
         Condicion = condicion,
         Monto = monto
     });
 }