public IQueryable <IProject> Get(int userId, Permission?permission = null) { return(_projectsDataAccessor.Get().Where(x => x.CreatorId == userId || _permissionsDataAccessor.Get().Any(y => y.ProjectId == x.Id && y.UserId == userId && (!permission.HasValue || permission == y.Permission || y.Permission == Permission.Admin)))); }
public async Task AddAsync(int userId, IFeatureInfo info) { if (await _projectsDataAccessor.Get().AnyAsync(x => x.Id == info.ProjectId && x.CreatorId == userId) || await _permissionsDataAccessor.HasPermission(userId, info.ProjectId, Permission.CreateFeature)) { await _featuresDataAccessor.AddAsync(info); return; } throw new NoPermissionsForOperationException(ErrorMessages.NoPermissionsForOperation); }