public virtual async Task <Versioned <PermissionsForClientViews> > PermissionsForClient(CancellationToken cancellation) { // Retrieve the user permissions and their current version var(version, permissions) = await _repo.Permissions__Load(cancellation); // Arrange the permission in a DTO that is easy for clients to consume var permissionsForClient = new PermissionsForClientViews(); foreach (var gView in permissions.GroupBy(e => e.View)) { string view = gView.Key; Dictionary <string, bool> viewActions = gView .GroupBy(e => e.Action) .ToDictionary(g => g.Key, g => true); permissionsForClient[view] = viewActions; } // Tag the permissions for client with their current version var result = new Versioned <PermissionsForClientViews> ( version: version.ToString(), data: permissionsForClient ); // Return the result return(result); }
public async Task <Versioned <PermissionsForClient> > PermissionsForClient(CancellationToken cancellation) { // Retrieve the user permissions and their current version var(version, permissions, reportIds, dashboardIds) = await _repo.Permissions__Load(true, cancellation); // Arrange the permission in a DTO that is easy for clients to consume var views = new PermissionsForClientViews(); foreach (var gView in permissions.GroupBy(e => e.View)) { string view = gView.Key; Dictionary <string, bool> viewActions = gView .GroupBy(e => e.Action) .ToDictionary(g => g.Key, g => true); views[view] = viewActions; } // Include the report Ids and definitionIds var permissionsForClient = new PermissionsForClient { Views = views, ReportIds = reportIds, DashboardIds = dashboardIds }; // Tag the permissions for client with their current version var result = new Versioned <PermissionsForClient> ( version: version.ToString(), data: permissionsForClient ); // Return the result return(result); }