1
Fork 0
mirror of https://gitlab.com/Kwoth/nadekobot.git synced 2024-10-02 20:13:13 +00:00

fix: Fixed currency rewards in patronage service

This commit is contained in:
Kwoth 2024-05-29 09:54:05 +00:00
parent d9e52038ac
commit a6adf73ecf
2 changed files with 15 additions and 16 deletions

View file

@ -1,6 +1,7 @@
#nullable disable
using LinqToDB;
using LinqToDB.EntityFrameworkCore;
using NadekoBot.Common.ModuleBehaviors;
using NadekoBot.Modules.Gambling.Services;
using NadekoBot.Modules.Patronage;
using NadekoBot.Services.Currency;
@ -8,7 +9,7 @@ using NadekoBot.Db.Models;
namespace NadekoBot.Modules.Utility;
public sealed class CurrencyRewardService : INService, IDisposable
public sealed class CurrencyRewardService : INService, IReadyExecutor
{
private readonly ICurrencyService _cs;
private readonly IPatronageService _ps;
@ -32,16 +33,14 @@ public sealed class CurrencyRewardService : INService, IDisposable
_config = config;
_client = client;
}
public Task OnReadyAsync()
{
_ps.OnNewPatronPayment += OnNewPayment;
_ps.OnPatronRefunded += OnPatronRefund;
_ps.OnPatronUpdated += OnPatronUpdate;
}
public void Dispose()
{
_ps.OnNewPatronPayment -= OnNewPayment;
_ps.OnPatronRefunded -= OnPatronRefund;
_ps.OnPatronUpdated -= OnPatronUpdate;
return Task.CompletedTask;
}
private async Task OnPatronUpdate(Patron oldPatron, Patron newPatron)

View file

@ -203,7 +203,8 @@ public sealed class PatronageService
// if his sub would end in teh future, extend it by one month.
// if it's not, just add 1 month to the last charge date
var count = await ctx.GetTable<PatronUser>()
.Where(x => x.UniquePlatformUserId == subscriber.UniquePlatformUserId)
.Where(x => x.UniquePlatformUserId
== subscriber.UniquePlatformUserId)
.UpdateAsync(old => new()
{
UserId = subscriber.UserId,
@ -215,14 +216,13 @@ public sealed class PatronageService
: dateInOneMonth,
});
// this should never happen
if (count == 0)
{
// await tran.RollbackAsync();
continue;
}
// await tran.CommitAsync();
dbPatron.UserId = subscriber.UserId;
dbPatron.AmountCents = subscriber.Cents;
dbPatron.LastCharge = lastChargeUtc;
dbPatron.ValidThru = dbPatron.ValidThru >= todayDate
? dbPatron.ValidThru.AddMonths(1)
: dateInOneMonth;
await OnNewPatronPayment(PatronUserToPatron(dbPatron));
}