Exemplo n.º 1
0
		public async Task<IEnumerable<ScampResource>> GetResourcesByGroup(ScampUserReference user, string groupId)
		{
            if (!(await docdb.IsInitialized))
                return null;

            var resources = docdb.Client.CreateDocumentQuery<ScampResource>(docdb.Collection.SelfLink)
    				.Where(u => u.Type == "resource" && u.ResourceGroup.Id == groupId);

            // if not admin add where clause
            if (!await IsGroupAdminAsync(user, groupId))
				resources = resources.Where(u => u.Owners[0].Id == user.Id);

            return await resources.AsDocumentQuery().ToListAsync();
        }
Exemplo n.º 2
0
        private async Task <bool> IsGroupAdminAsync(ScampUserReference user, string groupId)
        {
            // check all group's admin
            var sql = new SqlQuerySpec
            {
                QueryText  = "SELECT g FROM Groups g JOIN u IN g.admins WHERE g.id = @groupId AND g.type='group' AND u.id = @userId",
                Parameters = new SqlParameterCollection()
                {
                    new SqlParameter("@groupId", groupId),
                    new SqlParameter("@userId", user.Id)
                }
            };
            var query = docdb.Client.CreateDocumentQuery <dynamic>(docdb.Collection.SelfLink, sql);
            var match = await query.AsDocumentQuery().FirstOrDefaultAsync();

            return(match != null);
        }
Exemplo n.º 3
0
        public async Task <IEnumerable <ScampResource> > GetResourcesByGroup(ScampUserReference user, string groupId)
        {
            if (!(await docdb.IsInitialized))
            {
                return(null);
            }

            var resources = docdb.Client.CreateDocumentQuery <ScampResource>(docdb.Collection.SelfLink)
                            .Where(u => u.Type == "resource" && u.ResourceGroup.Id == groupId);

            // if not admin add where clause
            if (!await IsGroupAdminAsync(user, groupId))
            {
                resources = resources.Where(u => u.Owners[0].Id == user.Id);
            }

            return(await resources.AsDocumentQuery().ToListAsync());
        }
Exemplo n.º 4
0
		private async Task<bool> IsGroupAdminAsync(ScampUserReference user, string groupId)
		{
            // check all group's admin
            var sql = new SqlQuerySpec
            {
                QueryText = "SELECT g FROM Groups g JOIN u IN g.admins WHERE g.id = @groupId AND g.type='group' AND u.id = @userId",
                Parameters = new SqlParameterCollection()
                    {
                          new SqlParameter("@groupId", groupId),
                          new SqlParameter("@userId", user.Id)
                    }
            };
            var query = docdb.Client.CreateDocumentQuery<dynamic>(docdb.Collection.SelfLink, sql);
            var match = await query.AsDocumentQuery().FirstOrDefaultAsync();
            return match != null;
		}