@page "/raidedit" @page "/raidedit/{raidId}" @using Lieb.Data @using Lieb.Models @using Lieb.Models.GuildWars2.Raid @using System.ComponentModel.DataAnnotations @using System.Security.Claims @using SharedClasses.SharedModels @inject RaidService RaidService @inject UserService UserService @inject DiscordService DiscordService @inject TimeZoneService TimeZoneService @inject NavigationManager NavigationManager @inject AuthenticationStateProvider AuthenticationStateProvider @inject IJSRuntime JsRuntime

Create Raid

@{ bool _isEdit = _raid.RaidId != 0; }

@if(_raid.RaidType == RaidType.Planned) {

@foreach( RaidRole role in _raid.Roles) { bool disableEdit = _raid.SignUps.Where(s => s.RaidRoleId == role.RaidRoleId).Any(); @if(!disableEdit) { } }
Spots Role name Description

}

@foreach( DiscordRaidMessage message in _raid.DiscordRaidMessages) { bool disableEdit = message.DiscordRaidMessageId != 0; }
Server Channel
@foreach(DiscordServer item in _discordServers) { } @if(message.DiscordGuildId > 0) { List channels = _discordServers.Where(s => s.Id == message.DiscordGuildId).FirstOrDefault(new DiscordServer()).Channels; @foreach(DiscordChannel item in channels) { } }


@code { [Parameter] public string raidId { get; set; } public Raid _raid; private LiebUser _user; private string _errorMessage = string.Empty; private DateTimeOffset _raidDate = DateTime.Now.Date; private DateTimeOffset _startTime; private DateTimeOffset _endTime; private DateTimeOffset _freeForAllDate = DateTime.Now.Date; private DateTimeOffset _freeForAllTime; private List _rolesToDelete = new List(); private List _remindersToDelete = new List(); private List _messagesToDelete = new List(); private List _discordServers = new List(); protected override async Task OnInitializedAsync() { var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync(); if (authState != null) { ulong discordId = ulong.Parse(authState.User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value); _user = UserService.GetLiebUser(discordId); } if(_user == null) { NavigationManager.NavigateTo(""); } if(!string.IsNullOrEmpty(raidId) && int.TryParse(raidId, out int parsedId)) { _raid = RaidService.GetRaid(parsedId); if (_raid != null && (_raid.RaidOwnerId == _user.Id || _user.RoleAssignments.Max(a => a.LiebRole.Level) >= Constants.RaidEditPowerLevel)) { _startTime = await TimeZoneService.GetLocalDateTime(_raid.StartTimeUTC); _endTime = await TimeZoneService.GetLocalDateTime(_raid.EndTimeUTC); _raidDate = _startTime.Date; _freeForAllTime = await TimeZoneService.GetLocalDateTime(_raid.FreeForAllTimeUTC); _freeForAllDate = _freeForAllTime.Date; } else { _raid = new Raid(); } } else { _raid = new Raid(); } _discordServers = await DiscordService.GetServers(); } async Task AddRoleClicked() { _raid.Roles.Add(new RaidRole()); } async Task DeleteRoleClicked(RaidRole role) { if(role.RaidRoleId != 0) { _rolesToDelete.Add(role); } _raid.Roles.Remove(role); } async Task AddDiscordMessageClicked() { _raid.DiscordRaidMessages.Add(new DiscordRaidMessage()); } async Task DeleteMessageClicked(DiscordRaidMessage message) { if(message.DiscordRaidMessageId != 0) { _messagesToDelete.Add(message); } _raid.DiscordRaidMessages.Remove(message); } async Task DeleteRaidClicked() { bool confirmed = await JsRuntime.InvokeAsync("confirm", "Are you sure you want to delete the raid?"); if (confirmed) { await RaidService.DeleteRaid(_raid.RaidId); NavigationManager.NavigateTo("raidoverview"); } } private async Task HandleValidSubmit() { if(_raid.RaidType != RaidType.Planned) { if(!_raid.Roles.Where(r => r.IsRandomSignUpRole).Any()) { _raid.Roles.Add(new RaidRole() { Spots = 10, Name = "Random", Description = _raid.RaidType.ToString(), IsRandomSignUpRole = true }); } foreach(RaidRole role in _raid.Roles.Where(r => !r.IsRandomSignUpRole)) { _rolesToDelete.Add(role); } } if(_raid.Roles.Count == 0) { _errorMessage = "Roles are needed for a raid."; return; } _raid.StartTimeUTC = await TimeZoneService.GetUTCDateTime(_raidDate.Date + _startTime.TimeOfDay); if(_startTime.TimeOfDay <= _endTime.TimeOfDay) { _raid.EndTimeUTC = await TimeZoneService.GetUTCDateTime(_raidDate.Date + _endTime.TimeOfDay); } else { _raid.EndTimeUTC = await TimeZoneService.GetUTCDateTime(_raidDate.Date.AddDays(1) + _endTime.TimeOfDay); } _raid.FreeForAllTimeUTC = await TimeZoneService.GetUTCDateTime(_freeForAllDate.Date + _freeForAllTime.TimeOfDay); if (_raid.RaidOwnerId == 0) { _raid.RaidOwnerId = _user.Id; } await RaidService.AddOrEditRaid(_raid, _rolesToDelete, _remindersToDelete, _messagesToDelete); NavigationManager.NavigateTo("raidoverview"); } }