Metrolog/Metrolog-API/Services/RoleService.cs

56 lines
1.5 KiB
C#
Raw Permalink Normal View History

2025-02-15 20:43:28 +01:00
using Metrolog_API.Models;
using MongoDB.Driver;
namespace Metrolog_API.Services
{
public class RoleService
{
private readonly IMongoCollection<RoleModel> _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<RoleModel>("roles");
}
/// <summary>
/// Read all items in collection ordered by "Name" by page (100 items)
/// </summary>
/// <param name="page">Page number</param>
/// <returns>List of roles on specified page</returns>
public async Task<List<RoleModel>> GetPageAsync(int page = 1) =>
await _roles.Find<RoleModel>(role => true).SortByDescending(x => x.Name).Skip((page - 1) * 100).Limit(100).ToListAsync();
/// <summary>
/// Get Role by Name
/// </summary>
/// <param name="Name">Role Name</param>
/// <returns>Role or null</returns>
public async Task<RoleModel?> GetByNameAsync(string Name) =>
await _roles.Find<RoleModel>(role => role.Name == Name).FirstAsync();
/// <summary>
/// Get default role names
/// </summary>
/// <returns>Role Names</returns>
public async Task<List<string>> GetDefaultsAsync()
{
List<string> names = new List<string>();
foreach (RoleModel role in await _roles.Find<RoleModel>(role => role.Default == true).ToListAsync())
{
names.Add(role.Name);
}
return names;
}
}
}