Files

64 lines
1.8 KiB
C#
Raw Permalink Normal View History

using BotFramework;
using BotFramework.Attributes;
using BotFramework.Enums;
using Kruzya.TelegramBot.Core.Data;
using Kruzya.TelegramBot.Core.Service;
using Microsoft.EntityFrameworkCore;
using West.TelegramBot.Reputation.Data;
namespace West.TelegramBot.Reputation.Handler;
public class Debug : BotEventHandler
{
private readonly CoreContext _coreContext;
private readonly ReputationContext _reputationContext;
private readonly UserService _userService;
public Debug(CoreContext coreContext, ReputationContext reputationContext, UserService userService)
{
_coreContext = coreContext;
_reputationContext = reputationContext;
_userService = userService;
}
[Command(InChat.Public, "dbg_migrate", CommandParseMode.Both)]
public async Task HandleMigrate()
{
if (!_userService.IsUserSuper(From))
{
return;
}
var reputationValues = _coreContext.UserValues.AsNoTracking()
.Where(value => value.Name == "reputation").Include(v => v.BotUser);
foreach (var reputationValue in reputationValues)
{
var value = reputationValue.GetValue<double>();
if (value == 0D)
{
continue;
}
var userReputation = new UserReputation
{
ChatId = reputationValue.BotUser.ChatId,
UserId = reputationValue.BotUser.UserId,
Value = value
};
var repList = _reputationContext.UserReputation;
if (repList.Contains(userReputation))
{
repList.Update(userReputation);
}
else
{
repList.Add(userReputation);
}
}
await _reputationContext.SaveChangesAsync();
}
}