added automatic deletion of polls
This commit is contained in:
parent
b6dd3ff9c4
commit
ac3cc69b68
7 changed files with 846 additions and 7 deletions
|
@ -46,7 +46,7 @@ namespace Lieb.Data
|
||||||
.Where(p => p.RaidId == raidId).ToList();
|
.Where(p => p.RaidId == raidId).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<int> CreatePoll(string question, List<string> options, int raidId)
|
public async Task<int> CreatePoll(string question, List<string> options, int raidId, bool isAutoPoll = false)
|
||||||
{
|
{
|
||||||
Poll poll = new Poll()
|
Poll poll = new Poll()
|
||||||
{
|
{
|
||||||
|
@ -62,10 +62,10 @@ namespace Lieb.Data
|
||||||
Name = option
|
Name = option
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return await CreatePoll(poll, raidId);
|
return await CreatePoll(poll, raidId, isAutoPoll);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<int> CreatePoll(Poll poll, int raidId)
|
public async Task<int> CreatePoll(Poll poll, int raidId, bool isAutoPoll = false)
|
||||||
{
|
{
|
||||||
using var context = _contextFactory.CreateDbContext();
|
using var context = _contextFactory.CreateDbContext();
|
||||||
Raid? raid = context.Raids
|
Raid? raid = context.Raids
|
||||||
|
@ -74,12 +74,13 @@ namespace Lieb.Data
|
||||||
|
|
||||||
if (raid == null) return 0;
|
if (raid == null) return 0;
|
||||||
HashSet<ulong> users = raid.SignUps.Where(s => s.LiebUserId != null && s.IsMessageSignUp).Select(s => (ulong)s.LiebUserId).ToHashSet();
|
HashSet<ulong> users = raid.SignUps.Where(s => s.LiebUserId != null && s.IsMessageSignUp).Select(s => (ulong)s.LiebUserId).ToHashSet();
|
||||||
return await CreatePoll(poll, users, raidId);
|
return await CreatePoll(poll, users, raidId, isAutoPoll);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<int> CreatePoll(Poll poll, HashSet<ulong> users, int? raidId = null)
|
public async Task<int> CreatePoll(Poll poll, HashSet<ulong> users, int? raidId = null, bool isAutoPoll = false)
|
||||||
{
|
{
|
||||||
poll.RaidId = raidId;
|
poll.RaidId = raidId;
|
||||||
|
poll.IsAutoPoll = isAutoPoll;
|
||||||
|
|
||||||
foreach(ulong user in users)
|
foreach(ulong user in users)
|
||||||
{
|
{
|
||||||
|
@ -170,5 +171,19 @@ namespace Lieb.Data
|
||||||
poll.Answers.Remove(answer);
|
poll.Answers.Remove(answer);
|
||||||
await context.SaveChangesAsync();
|
await context.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task DeleteAutoPolls()
|
||||||
|
{
|
||||||
|
using var context = _contextFactory.CreateDbContext();
|
||||||
|
List<Poll> polls = context.Polls.ToList();
|
||||||
|
|
||||||
|
foreach(Poll poll in polls)
|
||||||
|
{
|
||||||
|
if((poll.IsAutoPoll && poll.CreatedAt < DateTime.UtcNow.AddDays(-7)))
|
||||||
|
{
|
||||||
|
await DeletePoll(poll.PollId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -704,7 +704,7 @@ namespace Lieb.Data
|
||||||
{
|
{
|
||||||
raid.MinUserPollId = await _pollService.CreatePoll(
|
raid.MinUserPollId = await _pollService.CreatePoll(
|
||||||
"The raid has not the required users, do you want to raid anyway?",
|
"The raid has not the required users, do you want to raid anyway?",
|
||||||
new List<string>() {Constants.Polls.YES, Constants.Polls.NO }, raid.RaidId);
|
new List<string>() {Constants.Polls.YES, Constants.Polls.NO }, raid.RaidId, true);
|
||||||
await context.SaveChangesAsync();
|
await context.SaveChangesAsync();
|
||||||
await _discordService.PostRaidMessage(raid.RaidId);
|
await _discordService.PostRaidMessage(raid.RaidId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,6 +73,10 @@ namespace Lieb.Data
|
||||||
scope.ServiceProvider
|
scope.ServiceProvider
|
||||||
.GetRequiredService<UserService>();
|
.GetRequiredService<UserService>();
|
||||||
await userService.DeleteInactiveUsers();
|
await userService.DeleteInactiveUsers();
|
||||||
|
var pollService =
|
||||||
|
scope.ServiceProvider
|
||||||
|
.GetRequiredService<PollService>();
|
||||||
|
await pollService.DeleteAutoPolls();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
773
Lieb/Migrations/20230213220614_PollsCreatedAt.Designer.cs
generated
Normal file
773
Lieb/Migrations/20230213220614_PollsCreatedAt.Designer.cs
generated
Normal file
|
@ -0,0 +1,773 @@
|
||||||
|
// <auto-generated />
|
||||||
|
using System;
|
||||||
|
using Lieb.Data;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Lieb.Migrations
|
||||||
|
{
|
||||||
|
[DbContext(typeof(LiebContext))]
|
||||||
|
[Migration("20230213220614_PollsCreatedAt")]
|
||||||
|
partial class PollsCreatedAt
|
||||||
|
{
|
||||||
|
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
#pragma warning disable 612, 618
|
||||||
|
modelBuilder.HasAnnotation("ProductVersion", "6.0.10");
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.DiscordSettings", b =>
|
||||||
|
{
|
||||||
|
b.Property<ulong>("DiscordSettingsId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("ChangeUserNames")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<ulong>("DiscordLogChannel")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("DiscordSettingsId");
|
||||||
|
|
||||||
|
b.ToTable("DiscordSettings", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Equipped", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("EquippedId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("CanTank")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("GuildWars2AccountId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("GuildWars2BuildId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("EquippedId");
|
||||||
|
|
||||||
|
b.HasIndex("GuildWars2AccountId");
|
||||||
|
|
||||||
|
b.HasIndex("GuildWars2BuildId");
|
||||||
|
|
||||||
|
b.ToTable("Equipped", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.GuildWars2Account", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("GuildWars2AccountId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("AccountName")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("ApiKey")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<ulong?>("LiebUserId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("GuildWars2AccountId");
|
||||||
|
|
||||||
|
b.HasIndex("LiebUserId");
|
||||||
|
|
||||||
|
b.ToTable("GuildWars2Account", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.GuildWars2Build", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("GuildWars2BuildId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("Alacrity")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("BuildName")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(60)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("Class")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("DamageType")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("EliteSpecialization")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("Might")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("Quickness")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Source")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("SourceLink")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<bool>("UseInRandomRaid")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("GuildWars2BuildId");
|
||||||
|
|
||||||
|
b.ToTable("GuildWars2Build", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.DiscordRaidMessage", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("DiscordRaidMessageId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<ulong>("DiscordChannelId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<ulong>("DiscordGuildId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<ulong>("DiscordMessageId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int?>("RaidId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int?>("RaidTemplateId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("DiscordRaidMessageId");
|
||||||
|
|
||||||
|
b.HasIndex("RaidId");
|
||||||
|
|
||||||
|
b.HasIndex("RaidTemplateId");
|
||||||
|
|
||||||
|
b.ToTable("DiscordRaidMessage", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.Raid", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("RaidId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Description")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(1000)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<DateTimeOffset>("EndTimeUTC")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("EventType")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<DateTimeOffset>("FreeForAllTimeUTC")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Guild")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(50)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<DateTimeOffset>("MinUserDeadLineUTC")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int?>("MinUserPollId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("MinUsers")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("MoveFlexUsers")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Organizer")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(50)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<ulong?>("RaidOwnerId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("RaidType")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("RequiredRole")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<DateTimeOffset>("StartTimeUTC")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Title")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(100)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("VoiceChat")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(50)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.HasKey("RaidId");
|
||||||
|
|
||||||
|
b.ToTable("Raid", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.RaidReminder", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("RaidReminderId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<ulong>("DiscordChannelId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<ulong>("DiscordServerId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Message")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(1000)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int?>("RaidId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int?>("RaidTemplateId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<DateTimeOffset>("ReminderTimeUTC")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("RoleId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("RoleType")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("Sent")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("TimeType")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("Type")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("RaidReminderId");
|
||||||
|
|
||||||
|
b.HasIndex("RaidId");
|
||||||
|
|
||||||
|
b.HasIndex("RaidTemplateId");
|
||||||
|
|
||||||
|
b.ToTable("RaidReminder", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.RaidRole", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("RaidRoleId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Description")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(200)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<bool>("IsRandomSignUpRole")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(40)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int?>("RaidId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int?>("RaidTemplateId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("Spots")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("RaidRoleId");
|
||||||
|
|
||||||
|
b.HasIndex("RaidId");
|
||||||
|
|
||||||
|
b.HasIndex("RaidTemplateId");
|
||||||
|
|
||||||
|
b.ToTable("RaidRole", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.RaidSignUp", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("RaidSignUpId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("ExternalUserName")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int?>("GuildWars2AccountId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<ulong?>("LiebUserId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("RaidId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("RaidRoleId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("SignUpType")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("RaidSignUpId");
|
||||||
|
|
||||||
|
b.HasIndex("GuildWars2AccountId");
|
||||||
|
|
||||||
|
b.HasIndex("LiebUserId");
|
||||||
|
|
||||||
|
b.HasIndex("RaidId");
|
||||||
|
|
||||||
|
b.HasIndex("RaidRoleId");
|
||||||
|
|
||||||
|
b.ToTable("RaidSignUp", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.RaidTemplate", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("RaidTemplateId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("CreateDaysBefore")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Description")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(1000)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<DateTime>("EndTime")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("EventType")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<DateTime>("FreeForAllTime")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Guild")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(50)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("Interval")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<DateTime>("MinUserDeadLine")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("MinUsers")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("MoveFlexUsers")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Organizer")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(50)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<ulong?>("RaidOwnerId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("RaidType")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("RequiredRole")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<DateTime>("StartTime")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("TimeZone")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Title")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(100)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("VoiceChat")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(50)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.HasKey("RaidTemplateId");
|
||||||
|
|
||||||
|
b.ToTable("RaidTemplate", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.LiebRole", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("LiebRoleId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("Level")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("LevelToAssign")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("RoleName")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(40)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("Type")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("LiebRoleId");
|
||||||
|
|
||||||
|
b.ToTable("LiebRole", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.LiebUser", b =>
|
||||||
|
{
|
||||||
|
b.Property<ulong>("Id")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("AlwaysSignUpWithMainAccount")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<DateTime?>("BannedUntil")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<DateTime?>("Birthday")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<DateTime>("CreatedAt")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<DateTime?>("LastSignUpAt")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("MainGW2Account")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(40)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Pronouns")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(60)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<bool>("ReminderSubscription")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("LiebUser", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.Poll.Poll", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("PollId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("AllowCustomAnswer")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("AnswerType")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<DateTimeOffset>("CreatedAt")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<bool>("IsAutoPoll")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Question")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(200)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int?>("RaidId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("PollId");
|
||||||
|
|
||||||
|
b.ToTable("Poll", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.Poll.PollAnswer", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("PollAnswerId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Answer")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int?>("PollId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int?>("PollOptionId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<ulong>("UserId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("PollAnswerId");
|
||||||
|
|
||||||
|
b.HasIndex("PollId");
|
||||||
|
|
||||||
|
b.ToTable("PollAnswer", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.Poll.PollOption", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("PollOptionId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(100)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int?>("PollId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("PollOptionId");
|
||||||
|
|
||||||
|
b.HasIndex("PollId");
|
||||||
|
|
||||||
|
b.ToTable("PollOption", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.RoleAssignment", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("RoleAssignmentId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("LiebRoleId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<ulong>("LiebUserId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("RoleAssignmentId");
|
||||||
|
|
||||||
|
b.HasIndex("LiebRoleId");
|
||||||
|
|
||||||
|
b.HasIndex("LiebUserId");
|
||||||
|
|
||||||
|
b.ToTable("RoleAssignment", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Equipped", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.GuildWars2Account", "GuildWars2Account")
|
||||||
|
.WithMany("EquippedBuilds")
|
||||||
|
.HasForeignKey("GuildWars2AccountId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.GuildWars2Build", "GuildWars2Build")
|
||||||
|
.WithMany("EquippedRoles")
|
||||||
|
.HasForeignKey("GuildWars2BuildId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("GuildWars2Account");
|
||||||
|
|
||||||
|
b.Navigation("GuildWars2Build");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.GuildWars2Account", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Lieb.Models.LiebUser", null)
|
||||||
|
.WithMany("GuildWars2Accounts")
|
||||||
|
.HasForeignKey("LiebUserId");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.DiscordRaidMessage", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.Raid.Raid", null)
|
||||||
|
.WithMany("DiscordRaidMessages")
|
||||||
|
.HasForeignKey("RaidId");
|
||||||
|
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.Raid.RaidTemplate", null)
|
||||||
|
.WithMany("DiscordRaidMessages")
|
||||||
|
.HasForeignKey("RaidTemplateId");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.RaidReminder", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.Raid.Raid", null)
|
||||||
|
.WithMany("Reminders")
|
||||||
|
.HasForeignKey("RaidId");
|
||||||
|
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.Raid.RaidTemplate", null)
|
||||||
|
.WithMany("Reminders")
|
||||||
|
.HasForeignKey("RaidTemplateId");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.RaidRole", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.Raid.Raid", null)
|
||||||
|
.WithMany("Roles")
|
||||||
|
.HasForeignKey("RaidId");
|
||||||
|
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.Raid.RaidTemplate", null)
|
||||||
|
.WithMany("Roles")
|
||||||
|
.HasForeignKey("RaidTemplateId");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.RaidSignUp", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.GuildWars2Account", "GuildWars2Account")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("GuildWars2AccountId");
|
||||||
|
|
||||||
|
b.HasOne("Lieb.Models.LiebUser", "LiebUser")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("LiebUserId");
|
||||||
|
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.Raid.Raid", "Raid")
|
||||||
|
.WithMany("SignUps")
|
||||||
|
.HasForeignKey("RaidId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("Lieb.Models.GuildWars2.Raid.RaidRole", "RaidRole")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("RaidRoleId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("GuildWars2Account");
|
||||||
|
|
||||||
|
b.Navigation("LiebUser");
|
||||||
|
|
||||||
|
b.Navigation("Raid");
|
||||||
|
|
||||||
|
b.Navigation("RaidRole");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.Poll.PollAnswer", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Lieb.Models.Poll.Poll", null)
|
||||||
|
.WithMany("Answers")
|
||||||
|
.HasForeignKey("PollId");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.Poll.PollOption", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Lieb.Models.Poll.Poll", null)
|
||||||
|
.WithMany("Options")
|
||||||
|
.HasForeignKey("PollId");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.RoleAssignment", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Lieb.Models.LiebRole", "LiebRole")
|
||||||
|
.WithMany("RoleAssignments")
|
||||||
|
.HasForeignKey("LiebRoleId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("Lieb.Models.LiebUser", "LiebUser")
|
||||||
|
.WithMany("RoleAssignments")
|
||||||
|
.HasForeignKey("LiebUserId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("LiebRole");
|
||||||
|
|
||||||
|
b.Navigation("LiebUser");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.GuildWars2Account", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("EquippedBuilds");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.GuildWars2Build", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("EquippedRoles");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.Raid", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("DiscordRaidMessages");
|
||||||
|
|
||||||
|
b.Navigation("Reminders");
|
||||||
|
|
||||||
|
b.Navigation("Roles");
|
||||||
|
|
||||||
|
b.Navigation("SignUps");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.GuildWars2.Raid.RaidTemplate", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("DiscordRaidMessages");
|
||||||
|
|
||||||
|
b.Navigation("Reminders");
|
||||||
|
|
||||||
|
b.Navigation("Roles");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.LiebRole", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("RoleAssignments");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.LiebUser", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("GuildWars2Accounts");
|
||||||
|
|
||||||
|
b.Navigation("RoleAssignments");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Lieb.Models.Poll.Poll", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Answers");
|
||||||
|
|
||||||
|
b.Navigation("Options");
|
||||||
|
});
|
||||||
|
#pragma warning restore 612, 618
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
38
Lieb/Migrations/20230213220614_PollsCreatedAt.cs
Normal file
38
Lieb/Migrations/20230213220614_PollsCreatedAt.cs
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Lieb.Migrations
|
||||||
|
{
|
||||||
|
public partial class PollsCreatedAt : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<DateTimeOffset>(
|
||||||
|
name: "CreatedAt",
|
||||||
|
table: "Poll",
|
||||||
|
type: "TEXT",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<bool>(
|
||||||
|
name: "IsAutoPoll",
|
||||||
|
table: "Poll",
|
||||||
|
type: "INTEGER",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: false);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "CreatedAt",
|
||||||
|
table: "Poll");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "IsAutoPoll",
|
||||||
|
table: "Poll");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -507,8 +507,15 @@ namespace Lieb.Migrations
|
||||||
b.Property<int>("AnswerType")
|
b.Property<int>("AnswerType")
|
||||||
.HasColumnType("INTEGER");
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<DateTimeOffset>("CreatedAt")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<bool>("IsAutoPoll")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<string>("Question")
|
b.Property<string>("Question")
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
|
.HasMaxLength(200)
|
||||||
.HasColumnType("TEXT");
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<int?>("RaidId")
|
b.Property<int?>("RaidId")
|
||||||
|
@ -553,6 +560,7 @@ namespace Lieb.Migrations
|
||||||
|
|
||||||
b.Property<string>("Name")
|
b.Property<string>("Name")
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
|
.HasMaxLength(100)
|
||||||
.HasColumnType("TEXT");
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<int?>("PollId")
|
b.Property<int?>("PollId")
|
||||||
|
|
|
@ -19,6 +19,7 @@ namespace Lieb.Models.Poll
|
||||||
public AnswerType AnswerType {get; set;}
|
public AnswerType AnswerType {get; set;}
|
||||||
public bool AllowCustomAnswer {get; set;} = false;
|
public bool AllowCustomAnswer {get; set;} = false;
|
||||||
public int? RaidId { get; set; }
|
public int? RaidId { get; set; }
|
||||||
|
public DateTimeOffset CreatedAt {get; set;} = DateTimeOffset.UtcNow;
|
||||||
|
public bool IsAutoPoll {get; set;} = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue