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; } }