Added Raid Reminders
This commit is contained in:
parent
d0ff8251a2
commit
5a5c3df1a9
7 changed files with 232 additions and 12 deletions
101
Lieb/Pages/Raids/RaidEdit/DynamicReminderEdit.razor
Normal file
101
Lieb/Pages/Raids/RaidEdit/DynamicReminderEdit.razor
Normal file
|
@ -0,0 +1,101 @@
|
|||
@using Lieb.Data
|
||||
@using Lieb.Models
|
||||
@using Lieb.Models.GuildWars2.Raid
|
||||
@using SharedClasses.SharedModels
|
||||
|
||||
<p>
|
||||
<label>
|
||||
Dynamic Raid Reminders:
|
||||
</label>
|
||||
<button type=button @onclick="() => AddReminderClicked()">Add reminder</button>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Days</th>
|
||||
<th>Hours</th>
|
||||
<th>Minutes</th>
|
||||
<th>Type</th>
|
||||
@if(_raidReminders.Where(r => r.Type == RaidReminder.ReminderType.Channel).Any())
|
||||
{
|
||||
<th>Server</th>
|
||||
<th>Channel</th>
|
||||
}
|
||||
else
|
||||
{
|
||||
<th></th>
|
||||
<th></th>
|
||||
}
|
||||
<th>Message</th>
|
||||
</tr>
|
||||
@foreach( DynamicRaidReminder reminder in _raidReminders)
|
||||
{
|
||||
bool hidden = reminder.Type == RaidReminder.ReminderType.User;
|
||||
<tr>
|
||||
<td><InputNumber @bind-Value="reminder.DaysBeforeRaid" /></td>
|
||||
<td><InputNumber @bind-Value="reminder.HoursBeforeRaid" /></td>
|
||||
<td><InputNumber @bind-Value="reminder.MinutesBeforeRaid" /></td>
|
||||
<td>
|
||||
<InputSelect @bind-Value="reminder.Type">
|
||||
@foreach(RaidReminder.ReminderType type in Enum.GetValues(typeof(RaidReminder.ReminderType)))
|
||||
{
|
||||
<option value="@type">@type.ToString()</option>
|
||||
}
|
||||
</InputSelect>
|
||||
</td>
|
||||
<td>
|
||||
<InputSelect @bind-Value="reminder.DiscordServerId" hidden="@hidden">
|
||||
@foreach(DiscordServer item in _discordServers)
|
||||
{
|
||||
<option value="@item.Id">@item.Name</option>
|
||||
}
|
||||
</InputSelect>
|
||||
</td>
|
||||
<td>
|
||||
<InputSelect @bind-Value="reminder.DiscordChannelId" hidden="@hidden">
|
||||
@if(reminder.DiscordServerId > 0)
|
||||
{
|
||||
List<DiscordChannel> channels = _discordServers.Where(s => s.Id == reminder.DiscordServerId).FirstOrDefault(new DiscordServer()).Channels;
|
||||
@foreach(DiscordChannel item in channels)
|
||||
{
|
||||
<option value="@item.Id">@item.Name</option>
|
||||
}
|
||||
}
|
||||
</InputSelect>
|
||||
</td>
|
||||
<td>
|
||||
<InputText @bind-Value="reminder.Message" />
|
||||
</td>
|
||||
<td><button type=button @onclick="() => DeleteReminderClicked(reminder)">Delete</button></td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
</p>
|
||||
|
||||
|
||||
@code {
|
||||
|
||||
[Parameter]
|
||||
public List<DynamicRaidReminder> _raidReminders { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public List<DiscordServer> _discordServers {get; set; }
|
||||
|
||||
[Parameter]
|
||||
public List<RaidReminder> _remindersToDelete {get; set; }
|
||||
|
||||
async Task AddReminderClicked()
|
||||
{
|
||||
_raidReminders.Add(new DynamicRaidReminder()
|
||||
{
|
||||
Type = RaidReminder.ReminderType.User
|
||||
});
|
||||
}
|
||||
|
||||
async Task DeleteReminderClicked(DynamicRaidReminder reminder)
|
||||
{
|
||||
if(reminder.RaidReminderId != 0)
|
||||
{
|
||||
_remindersToDelete.Add(reminder);
|
||||
}
|
||||
_raidReminders.Remove(reminder);
|
||||
}
|
||||
}
|
|
@ -147,7 +147,8 @@
|
|||
|
||||
|
||||
<DiscordMessageEdit _raid=@_raid _discordServers=@_discordServers _messagesToDelete=@_messagesToDelete ></DiscordMessageEdit>
|
||||
<ReminderEdit _raid=@_raid _discordServers=@_discordServers _remindersToDelete=@_remindersToDelete ></ReminderEdit>
|
||||
<StaticReminderEdit _raidReminders=@_staticReminders _discordServers=@_discordServers _remindersToDelete=@_remindersToDelete ></StaticReminderEdit>
|
||||
<DynamicReminderEdit _raidReminders=@_dynamicReminders _discordServers=@_discordServers _remindersToDelete=@_remindersToDelete ></DynamicReminderEdit>
|
||||
|
||||
<ValidationSummary />
|
||||
<label class="validation-message" >@_errorMessage</label>
|
||||
|
@ -177,6 +178,9 @@
|
|||
private List<RaidReminder> _remindersToDelete = new List<RaidReminder>();
|
||||
private List<DiscordRaidMessage> _messagesToDelete = new List<DiscordRaidMessage>();
|
||||
|
||||
private List<StaticRaidReminder> _staticReminders = new List<StaticRaidReminder>();
|
||||
private List<DynamicRaidReminder> _dynamicReminders = new List<DynamicRaidReminder>();
|
||||
|
||||
private List<DiscordServer> _discordServers = new List<DiscordServer>();
|
||||
|
||||
|
||||
|
@ -206,15 +210,30 @@
|
|||
_raidDate = _startTime.Date;
|
||||
_freeForAllTime = await TimeZoneService.GetLocalDateTime(_raid.FreeForAllTimeUTC);
|
||||
_freeForAllDate = _freeForAllTime.Date;
|
||||
foreach(RaidReminder reminder in _raid.Reminders)
|
||||
{
|
||||
if(reminder.TimeType == RaidReminder.ReminderTimeType.Static)
|
||||
{
|
||||
DateTimeOffset reminderTime = await TimeZoneService.GetLocalDateTime(reminder.ReminderTimeUTC);
|
||||
DateTimeOffset reminderDate = (await TimeZoneService.GetLocalDateTime(reminder.ReminderTimeUTC)).Date;
|
||||
_staticReminders.Add(new StaticRaidReminder(reminder, reminderDate, reminderTime));
|
||||
}
|
||||
else
|
||||
{
|
||||
_dynamicReminders.Add(new DynamicRaidReminder(reminder, _raid.StartTimeUTC));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_raid = new Raid();
|
||||
_dynamicReminders.Add(DynamicRaidReminder.Create30MinReminder());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_raid = new Raid();
|
||||
_dynamicReminders.Add(DynamicRaidReminder.Create30MinReminder());
|
||||
}
|
||||
|
||||
_discordServers = await DiscordService.GetServers();
|
||||
|
@ -282,6 +301,18 @@
|
|||
_raid.RaidOwnerId = _user.Id;
|
||||
}
|
||||
|
||||
_raid.Reminders.Clear();
|
||||
foreach(DynamicRaidReminder reminder in _dynamicReminders)
|
||||
{
|
||||
reminder.ReminderTimeUTC = _raid.StartTimeUTC - new TimeSpan(reminder.DaysBeforeRaid, reminder.HoursBeforeRaid, reminder.MinutesBeforeRaid, 0);
|
||||
_raid.Reminders.Add(reminder);
|
||||
}
|
||||
foreach(StaticRaidReminder reminder in _staticReminders)
|
||||
{
|
||||
reminder.ReminderTimeUTC = await TimeZoneService.GetUTCDateTime(reminder.ReminderDate.Date + reminder.ReminderTime.TimeOfDay);
|
||||
_raid.Reminders.Add(reminder);
|
||||
}
|
||||
|
||||
await RaidService.AddOrEditRaid(_raid, _rolesToDelete, _remindersToDelete, _messagesToDelete);
|
||||
NavigationManager.NavigateTo("raidoverview");
|
||||
}
|
||||
|
|
|
@ -5,14 +5,15 @@
|
|||
|
||||
<p>
|
||||
<label>
|
||||
Raid Reminders:
|
||||
Static Raid Reminders:
|
||||
</label>
|
||||
<button type=button @onclick="() => AddReminderClicked()">Add reminder</button>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Date</th>
|
||||
<th>Time</th>
|
||||
<th>Type</th>
|
||||
@if(_raid.Reminders.Where(r => r.Type == RaidReminder.ReminderType.Channel).Any())
|
||||
@if(_raidReminders.Where(r => r.Type == RaidReminder.ReminderType.Channel).Any())
|
||||
{
|
||||
<th>Server</th>
|
||||
<th>Channel</th>
|
||||
|
@ -24,12 +25,20 @@
|
|||
}
|
||||
<th>Message</th>
|
||||
</tr>
|
||||
@foreach( RaidReminder reminder in _raid.Reminders)
|
||||
@foreach( StaticRaidReminder reminder in _raidReminders)
|
||||
{
|
||||
bool hidden = reminder.Type == RaidReminder.ReminderType.User;
|
||||
<tr>
|
||||
<td>
|
||||
TODO: Time
|
||||
<label>
|
||||
<InputDate @bind-Value="reminder.ReminderDate" />
|
||||
</label>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<label>
|
||||
<input type="time" @bind="reminder.ReminderTime" />
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<InputSelect @bind-Value="reminder.Type">
|
||||
|
@ -72,7 +81,7 @@
|
|||
@code {
|
||||
|
||||
[Parameter]
|
||||
public Raid _raid { get; set; }
|
||||
public List<StaticRaidReminder> _raidReminders { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public List<DiscordServer> _discordServers {get; set; }
|
||||
|
@ -82,19 +91,18 @@
|
|||
|
||||
async Task AddReminderClicked()
|
||||
{
|
||||
_raid.Reminders.Add(new RaidReminder()
|
||||
_raidReminders.Add(new StaticRaidReminder()
|
||||
{
|
||||
RaidId = _raid.RaidId,
|
||||
Type = RaidReminder.ReminderType.User
|
||||
});
|
||||
}
|
||||
|
||||
async Task DeleteReminderClicked(RaidReminder reminder)
|
||||
async Task DeleteReminderClicked(StaticRaidReminder reminder)
|
||||
{
|
||||
if(reminder.RaidReminderId != 0)
|
||||
{
|
||||
_remindersToDelete.Add(reminder);
|
||||
}
|
||||
_raid.Reminders.Remove(reminder);
|
||||
_raidReminders.Remove(reminder);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue