using Metrolog_API.Models; using MongoDB.Driver; namespace Metrolog_API.Services { public class RoleService { private readonly IMongoCollection _roles; public RoleService(IConfiguration config) { var client = new MongoClient(System.Environment.GetEnvironmentVariable("MONGODB_CONNECTION_STRING")); var database = client.GetDatabase(System.Environment.GetEnvironmentVariable("MONGODB_DATABASE")); _roles = database.GetCollection("roles"); } /// /// Read all items in collection ordered by "Name" by page (100 items) /// /// Page number /// List of roles on specified page public async Task> GetPageAsync(int page = 1) => await _roles.Find(role => true).SortByDescending(x => x.Name).Skip((page - 1) * 100).Limit(100).ToListAsync(); /// /// Get Role by Name /// /// Role Name /// Role or null public async Task GetByNameAsync(string Name) => await _roles.Find(role => role.Name == Name).FirstAsync(); /// /// Get default role names /// /// Role Names public async Task> GetDefaultsAsync() { List names = new List(); foreach (RoleModel role in await _roles.Find(role => role.Default == true).ToListAsync()) { names.Add(role.Name); } return names; } } }