Ejemplo n.º 1
0
        /// <summary>
        /// Verifica si las autorizaciones requeridas del detalle de autorización están negadas para un registro de una tabla específica.
        /// </summary>
        /// <param name="id_tabla">Id de Tabla</param>
        /// <param name="id_registro">Id de Registro</param>
        /// <returns></returns>
        public RetornoOperacion ValidaAutorizacionNegada(int id_tabla, int id_registro)
        {
            //Definiendo objeto de retorno sin error
            RetornoOperacion resultado = new RetornoOperacion(id_registro);

            //Obteniendo los bloques de nivel inicial del detalle de autorización
            DataTable bloques = AutorizacionDetalleBloque.CargaBloquesAutorizacionDetalle(this._id_autorizacion_detalle, 0);

            //Si existen bloques
            if (Validacion.ValidaOrigenDatos(bloques))
            {
                //Recuperando el bloque raíz
                AutorizacionDetalleBloque bRaiz = new AutorizacionDetalleBloque((from DataRow r in bloques.Rows
                                                                                 select r.Field <int>("IdAutorizacionDetalleBloque")).FirstOrDefault());

                //Si la raíz fue encontrada
                if (bRaiz.id_autorizacion_detalle_bloque > 0)
                {
                    //Realizando validación
                    resultado = bRaiz.ValidaAutorizacionNegadasResponsables(id_tabla, id_registro);
                }
                else
                {
                    //Indicando error
                    resultado = new RetornoOperacion("No pudo ser encontrado el bloque inicial de autorizaciones.");
                }
            }

            //Devolviendo resultado
            return(resultado);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Realiza la validación de las autorizaciones de un bloque, dado un registro de tabla específica. Devuelve error en caso de existir autorizaciones negadas (acorde al operador AND / OR)
        /// </summary>
        /// <param name="id_tabla">Id de Tabla</param>
        /// <param name="id_registro">Id de Registro</param>
        /// <returns></returns>
        public RetornoOperacion ValidaAutorizacionNegadasResponsables(int id_tabla, int id_registro)
        {
            //Definiendo objeto de retorno
            RetornoOperacion resultado = new RetornoOperacion(id_registro);

            //Cargando los bloques pertenecientes a este bloque (sub bloques)
            DataTable subBloques = AutorizacionDetalleBloque.CargaBloquesAutorizacionDetalle(this._id_autorizacion_detalle, this._id_autorizacion_detalle_bloque);

            //Validando la existencia de sub bloques
            if (Validacion.ValidaOrigenDatos(subBloques))
            {
                //Para cada uno de estos sub bloques
                foreach (DataRow sb in subBloques.Rows)
                {
                    //Instanciando bloque
                    using (AutorizacionDetalleBloque sBloque = new AutorizacionDetalleBloque(sb.Field <int>("IdAutorizacionDetalleBloque")))
                    {
                        //Si el bloque se instanció correctamente
                        if (sBloque.id_autorizacion_detalle_bloque > 0)
                        {
                            //Realizando validación del bloque
                            resultado = sBloque.ValidaAutorizacionNegadasResponsables(id_tabla, id_registro);
                        }

                        //Si existe error
                        if (!resultado.OperacionExitosa)
                        {
                            //Saliendo del ciclo
                            break;
                        }
                    }
                }
            }

            //Si no existen errores
            if (resultado.OperacionExitosa)
            {
                //Obteniendo los resultados de autorización de los responsables del bloque actual
                DataTable autorizaciones = AutorizacionDetalleBloqueResponsable.CargaAutorizacionResponsablesBloque(this._id_autorizacion_detalle_bloque, id_tabla, id_registro);

                //Validando que existan autorizaciones
                if (Validacion.ValidaOrigenDatos(autorizaciones))
                {
                    //Determinando el uso de resultados en base al operador lógico que rige al bloque
                    switch (this.operador)
                    {
                    case TipoOperador.AND:
                        //Si alguno de los elementos NO se ha autorizado aún
                        if ((from DataRow a in autorizaciones.Rows
                             select a.Field <bool?>("Autorizado")).Any(au => au.Equals(false)))
                        {
                            //Señalando el error
                            resultado = new RetornoOperacion("Existen autorizaciones rechazadas.");
                        }
                        break;

                    case TipoOperador.OR:
                        //Si todos los elementos NO se han autorizado aún
                        if ((from DataRow a in autorizaciones.Rows
                             select a.Field <bool?>("Autorizado")).All(au => au.Equals(false)))
                        {
                            //Señalando el error
                            resultado = new RetornoOperacion("Existen autorizaciones rechazadas.");
                        }
                        break;
                    }
                }
            }

            //Devolviendo resultado
            return(resultado);
        }