Esempio n. 1
0
    public static bool GetEmisorHabilitado(string userID, int IDEmisor, out EmisoresHabilitados objEmisorHabilitado, FacturaPoliContext db = null)
    {
        if (db == null)
        {
            db = ParseExtensions.GetDatabaseContext(userID);
        }

        List <EmisoresHabilitados> colcEmisores = null;

        if (GetEmisoresHabilitados(userID, out colcEmisores, db))
        {
            IEnumerable <EmisoresHabilitados> lstEmisores = colcEmisores.Where(r => r.QuickEmisorModelID == IDEmisor);
            if (lstEmisores.Count() > 0)
            {
                if (lstEmisores.Count() == 1)
                {
                    objEmisorHabilitado = lstEmisores.ElementAt(0);
                    return(true);
                }
                else
                {
                    int min = lstEmisores.Min(r => (int)r.privilegiosAcceso);
                    objEmisorHabilitado = lstEmisores.SingleOrDefault(r => (int)r.privilegiosAcceso == min);
                    return(true);
                }
            }
        }
        objEmisorHabilitado = null;
        return(false);
    }
    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        //Obtiene el privilegio minimo requerido del parametro expuesto al interno
        PrivilegioMin = PrivilegioMinimoRequerido;

        string UserID  = filterContext.HttpContext.User.Identity.GetUserId();
        var    Session = filterContext.HttpContext.Session;

        FacturaPoliContext db = ParseExtensions.GetDatabaseContext(UserID);

        //rescata usuario
        UsuarioModel objUsuario = db.DBUsuarios.SingleOrDefault(r => r.IdentityID == UserID);

        if (objUsuario == null)
        {
            /*REDIRECT A EL PANEL DE SELECCION DE EMISOR*/
            filterContext.Result = RetornarSeleccionEmisor();
            return;
        }

        QuickEmisorModel objEmisor = PerfilamientoModule.GetEmisorSeleccionado(Session, UserID);

        if (objEmisor == null)
        {
            /*REDIRECT A EL PANEL DE SELECCION DE EMISOR*/
            filterContext.Result = RetornarSeleccionEmisor();
            return;
        }

        //Revisar su tabla de compañias autorizadas
        EmisoresHabilitados objEmisorHabilitado = db.DBEmisoresHabilitados.SingleOrDefault(r => r.QuickEmisorModelID == objEmisor.QuickEmisorModelID && r.UsuarioModelID == objUsuario.UsuarioModelID);

        if (objEmisorHabilitado == null)
        {
            /*REDIRECT A EL PANEL DE SELECCION DE EMISOR*/
            filterContext.Result = RetornarSeleccionEmisor();
            return;
        }

        Privilegios PrivilegioDelUsuario = objEmisorHabilitado.privilegiosAcceso;
        bool        EstaAutorizado       = ManejarPrivilegios(PrivilegioMin, PrivilegioDelUsuario);

        if (EstaAutorizado == false)
        {
            /*REDIRECT A EL PANEL DE SELECCION DE EMISOR*/
            filterContext.Result = RetornarSeleccionEmisor();
            return;
        }
    }