99 lines
3.2 KiB
C#
99 lines
3.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using T3k3rg0.Helpers.Data;
|
|
using T3k3rg0.Helpers.Models;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace T3k3rg0.Helpers
|
|
{
|
|
public static class ReactionRoleService
|
|
{
|
|
public static ulong? GetRoleId(ulong messageId, string emoji)
|
|
{
|
|
using var db = new RolesDbContext();
|
|
var entry = db.ReactionRoles
|
|
.FirstOrDefault(r => r.MessageId == messageId && r.Emoji == emoji);
|
|
|
|
return entry?.RoleId;
|
|
}
|
|
|
|
public static List<(string Emoji, ulong RoleId)> GetAllRolesForMessage(ulong messageId)
|
|
{
|
|
using var db = new RolesDbContext();
|
|
return db.ReactionRoles
|
|
.Where(r => r.MessageId == messageId)
|
|
.ToList()
|
|
.Select(r => (r.Emoji, r.RoleId))
|
|
.ToList();
|
|
}
|
|
|
|
public static void AddReactionRole(ulong messageId, string emoji, ulong roleId)
|
|
{
|
|
using var db = new RolesDbContext();
|
|
db.ReactionRoles.Add(new ReactionRole
|
|
{
|
|
MessageId = messageId,
|
|
Emoji = emoji,
|
|
RoleId = roleId
|
|
});
|
|
db.SaveChanges();
|
|
}
|
|
|
|
public static void RemoveReactionRole(ulong messageId, string emoji)
|
|
{
|
|
using var db = new RolesDbContext();
|
|
var entry = db.ReactionRoles
|
|
.FirstOrDefault(r => r.MessageId == messageId && r.Emoji == emoji);
|
|
|
|
if (entry != null)
|
|
{
|
|
db.ReactionRoles.Remove(entry);
|
|
db.SaveChanges();
|
|
}
|
|
}
|
|
|
|
public static List<ReactionRole> GetAllReactionRoles()
|
|
{
|
|
using var db = new RolesDbContext();
|
|
return db.ReactionRoles.ToList(); // Minden rekord lekérése az adatbázisból
|
|
}
|
|
public static async Task<List<ReactionRole>> GetAllReactionRolesAsync()
|
|
{
|
|
await using var db = new RolesDbContext();
|
|
return await db.ReactionRoles
|
|
.OrderBy(r => r.MessageId)
|
|
.ThenBy(r => r.Emoji)
|
|
.ToListAsync();
|
|
}
|
|
|
|
public static async Task<(bool Success, string? Message, string? Emoji, ulong? RoleId)> RemoveReactionRoleByIdAsync(int id)
|
|
{
|
|
try
|
|
{
|
|
await using var db = new RolesDbContext();
|
|
|
|
var allRoles = (await db.ReactionRoles.ToListAsync())
|
|
.OrderBy(r => r.MessageId)
|
|
.ThenBy(r => r.Emoji)
|
|
.ToList();
|
|
|
|
if (id < 1 || id > allRoles.Count)
|
|
return (false, "❌ Érvénytelen ID.", null, null);
|
|
|
|
var toRemove = allRoles[id - 1];
|
|
db.ReactionRoles.Remove(toRemove);
|
|
await db.SaveChangesAsync();
|
|
|
|
return (true, null, toRemove.Emoji, toRemove.RoleId);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine(ex.ToString());
|
|
return (false, "❌ Hiba történt az eltávolítás során.", null, null);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|