public Task <bool> CheckPermission(string functionId, string action, string[] roles)
        {
            var functions   = _functionRepository.FindAllAsNoTracking();
            var permissions = _permissionRepository.FindAllAsNoTracking();
            var query       = from f in functions
                              join p in permissions on f.Id equals p.FunctionId
                              join r in _roleManager.Roles on p.RoleId equals r.Id
                              where roles.Contains(r.Name) && f.Id == functionId &&
                              ((p.CanCreate && action == "Create") ||
                               (p.CanUpdate && action == "Update") ||
                               (p.CanDelete && action == "Delete") ||
                               (p.CanRead && action == "Read"))
                              select p;

            return(query.AnyAsync());
        }