예제 #1
0
 public async Task AddReminderToUser(ulong userId, string message, DateTime dueDate)
 => await _soraTransactor.DoInTransactionAsync(async context =>
 {
     var user = await context.Users.GetOrCreateUserNoSaveAsync(userId).ConfigureAwait(false);
     user.Reminders.Add(new Reminder(userId, message, dueDate));
     await context.SaveChangesAsync().ConfigureAwait(false);
 }).ConfigureAwait(false);
예제 #2
0
 public async Task AddSar(ulong roleId, ulong guildId)
 => await _soraTransactor.DoInTransactionAsync(async context =>
 {
     var sar = new Sar(roleId, guildId);
     context.Sars.Add(sar);
     await context.SaveChangesAsync().ConfigureAwait(false);
 }).ConfigureAwait(false);
예제 #3
0
 public async Task RemoveGuild(ulong id)
 => await _soraTransactor.DoInTransactionAsync(async context =>
 {
     var guild = await context.Guilds.FindAsync(id).ConfigureAwait(false);
     if (guild == null)
     {
         return;
     }
     context.Guilds.Remove(guild);
     await context.SaveChangesAsync().ConfigureAwait(false);
 }).ConfigureAwait(false);
예제 #4
0
        public async Task RemoveUserAfk(ulong userId)
        => await _soraTransactor.DoInTransactionAsync(async context =>
        {
            var afk = await context.Afks.FindAsync(userId).ConfigureAwait(false);
            if (afk == null)
            {
                return;
            }

            context.Afks.Remove(afk);
            await context.SaveChangesAsync().ConfigureAwait(false);
        }).ConfigureAwait(false);
예제 #5
0
 public async Task SetUserHasBgBoolean(ulong userId, bool hasCustomBg)
 {
     await _soraTransactor.DoInTransactionAsync(async context =>
     {
         var user = await context.Users.GetOrCreateUserNoSaveAsync(userId).ConfigureAwait(false);
         user.HasCustomProfileBg = hasCustomBg;
         await context.SaveChangesAsync().ConfigureAwait(false);
     }).ConfigureAwait(false);
 }
예제 #6
0
 public async Task TryAddUserExp(ulong userId, uint expToAdd)
 {
     await _soraTransactor.DoInTransactionAsync(async context =>
     {
         var user  = await context.Users.GetOrCreateUserNoSaveAsync(userId);
         user.Exp += expToAdd;
         await context.SaveChangesAsync().ConfigureAwait(false);
     }).ConfigureAwait(false);
 }
예제 #7
0
        public async Task SetStarboardChannelId(ulong guildId, ulong starboardChannelId)
        => await _soraTransactor.DoInTransactionAsync(async context =>
        {
            // We have to create a guild if it doesnt exist, bcs the starboard is a weak entity.
            await GuildRepository.GetOrSetAndGetGuild(guildId, context).ConfigureAwait(false);

            // Then we try and get or create the starboard
            var starboard = await context.Starboards.FindAsync(guildId).ConfigureAwait(false);
            if (starboard == null)
            {
                // Create it
                starboard = new Starboard(guildId, starboardChannelId);
                // ReSharper disable once MethodHasAsyncOverload
                context.Starboards.Add(starboard);
            }
            else
            {
                starboard.StarboardChannelId = starboardChannelId;
            }

            await context.SaveChangesAsync();
        }).ConfigureAwait(false);
예제 #8
0
 public async Task RemoveWaifu(int waifuId)
 {
     await _soraTransactor.DoInTransactionAsync(async context =>
     {
         var waifu = await context.Waifus.FindAsync(waifuId).ConfigureAwait(false);
         if (waifu == null)
         {
             return;
         }
         context.Waifus.Remove(waifu);
         await context.SaveChangesAsync().ConfigureAwait(false);
     }).ConfigureAwait(false);
 }
예제 #9
0
        public async Task GiveAmount(ulong userId, uint amount)
        {
            await _soraTransactor.DoInTransactionAsync(async context =>
            {
                var user = await context.Users.GetOrCreateUserNoSaveAsync(userId);
                if (user == null)
                {
                    return;
                }

                user.Coins += amount;

                await context.SaveChangesAsync();
            }).ConfigureAwait(false);
        }
예제 #10
0
        public async Task ChangeRequestStatus(uint requestId, RequestState requestState, string rejectReason = null)
        => await _soraTransactor.DoInTransactionAsync(async context =>
        {
            var req = await context.WaifuRequests.FindAsync(requestId).ConfigureAwait(false);
            if (req == null)
            {
                return;
            }

            req.RequestState  = requestState;
            req.ProcessedTime = DateTime.UtcNow;
            if (requestState == RequestState.Rejected && !string.IsNullOrWhiteSpace(rejectReason))
            {
                req.RejectReason = rejectReason;
            }
            await context.SaveChangesAsync().ConfigureAwait(false);
        }).ConfigureAwait(false);
예제 #11
0
        public async Task CreateClan(string name, ulong ownerId) =>
        await _soraTransactor.DoInTransactionAsync(async context =>
        {
            // Check if user is in clan already
            if (await context.ClanMembers
                .Where(x => x.UserId == ownerId)
                .CountAsync() > 0)
            {
                return;
            }
            // Check if clan with this name already exists, abort if it does
            if (await context.Clans.Where(x => x.Name == name)
                .CountAsync() > 0)
            {
                return;
            }

            // Now get or create user we attach to the clan
            var _    = await context.Users.GetOrCreateUserNoSaveAsync(ownerId);
            var clan = new Clan()
            {
                Name    = name,
                OwnerId = ownerId,
                Created = DateTime.UtcNow,
                Level   = 0
            };

            context.Clans.Add(clan);
            await context.SaveChangesAsync();

            // Create clan member for the owner
            var member = new ClanMember()
            {
                ClanId = clan.Id,
                UserId = ownerId
            };
            context.ClanMembers.Add(member);

            await context.SaveChangesAsync();
        });