public async Task Execute(IJobExecutionContext context)
        {
            Egreso egreso = (Egreso)context.JobDetail.JobDataMap.Get("egreso");

            ValidadorDeEgreso.egresoValido(egreso);
            await Console.Out.WriteLineAsync("validacion de egreso realizada");
        }
 static private bool cumpleCantidadDePresupuestosExigibles(Egreso egreso)
 {
     if (egreso.proyecto != null)
     {
         return(egreso.proyecto.cantPresupuestosExigibles <= egreso.presupuestos.Count);
     }
     else
     {
         return(false);
     }
 }
 static private bool criterioDeSeleccion(Egreso egreso)
 {
     if (egreso.presupuestos.Count == 0)
     {
         return(false);
     }
     else
     {
         return(egreso.criterioDeSeleccion.Criterio(egreso.presupuestos) == egreso.presupuestoElegido);
     }
 }
 static private bool presupuestoCoincidente(Egreso egreso)
 {
     if (egreso.presupuestoElegido == null)
     {
         return(false);
     }
     else
     {
         Presupuesto presupuesto_elegido = egreso.presupuestoElegido;
         return(egreso.presupuestos.Any(Presupuesto => presupuesto_elegido.id_presupuesto == Presupuesto.id_presupuesto));
     }
 }
 static private bool cantidadCorrecta(Egreso egreso)
 {
     return(egreso.cantPresupuestos == egreso.presupuestos.Count());
 }
        static public bool egresoValido(Egreso egreso)
        {
            egreso.bandejaDeMensajes.agregarMensaje("-----------------Comienzo validacion:");

            if (egreso.cantPresupuestos == 0)
            {
                egreso.bandejaDeMensajes.agregarMensaje("La compra no requiere presupuestos!");
                return(true);
            }
            else
            {
                if (cantidadCorrecta(egreso))
                {
                    egreso.bandejaDeMensajes.agregarMensaje("Se encuentra cargada la cantidad indicada de presupuestos");
                }
                else
                {
                    egreso.bandejaDeMensajes.agregarMensaje("No se encuentra cargada la cantidad indicada de presupuestos");
                }

                if (presupuestoCoincidente(egreso))
                {
                    egreso.bandejaDeMensajes.agregarMensaje("La compra se realizo en base a la lista de presupuestos");
                }
                else
                {
                    if (egreso.presupuestoElegido == null)
                    {
                        egreso.bandejaDeMensajes.agregarMensaje("No se selecciono un presupuesto para comprobar si se encuentra entre los presupuestos asignados");
                    }
                    else
                    {
                        egreso.bandejaDeMensajes.agregarMensaje("La compra no se realizo en base a lista de presupuestos");
                    }
                }


                if (criterioDeSeleccion(egreso))
                {
                    egreso.bandejaDeMensajes.agregarMensaje("La eleccion del presupuesto coincide con el criterio de seleccion");
                }
                else
                {
                    if (egreso.presupuestos.Count() == 0)
                    {
                        egreso.bandejaDeMensajes.agregarMensaje("El egreso no tiene presupuestos asignados para analizar el criterio de seleccion");
                    }
                    else
                    {
                        if (egreso.presupuestoElegido == null)
                        {
                            egreso.bandejaDeMensajes.agregarMensaje("No se selecciono un presupuesto para analizar el criterio");
                        }
                        else
                        {
                            egreso.bandejaDeMensajes.agregarMensaje("La eleccion del presupuesto no coincide con el criterio de seleccion");
                        }
                    }
                }


                if (egreso.proyecto != null)
                {
                    if (cumpleCantidadDePresupuestosExigibles(egreso))
                    {
                        egreso.bandejaDeMensajes.agregarMensaje("El egreso cumple con los presupuestos del proyecto financiamiento");
                    }
                    else
                    {
                        egreso.bandejaDeMensajes.agregarMensaje("El egreso no posee la cantidad de presupuestos exigibles del proyecto financiamiento");
                    }
                }
                else
                {
                    egreso.bandejaDeMensajes.agregarMensaje("El egreso no tiene un proyecto de financiamiento");
                }
            }


            return(cantidadCorrecta(egreso) &&
                   presupuestoCoincidente(egreso) &&
                   criterioDeSeleccion(egreso) &&
                   cumpleCantidadDePresupuestosExigibles(egreso));
        }