@page "/raidtemplateedit" @page "/raidtemplateedit/{raidId}" @using Lieb.Data @using Lieb.Models @using Lieb.Models.GuildWars2.Raid @using System.ComponentModel.DataAnnotations @inject RaidTemplateService RaidTemplateService @inject UserService UserService @inject TimeZoneService TimeZoneService @inject NavigationManager NavigationManager @inject IJSRuntime JsRuntime

CreateRaid

@{ bool _isEdit = _template.RaidTemplateId != 0; }

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

@foreach( PlannedRaidRole role in _template.Roles) { }
Spots Role name Description

}

@code { [Parameter] public string raidId { get; set; } public RaidTemplate _template; 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 string _userTimeZone = string.Empty; protected override async Task OnInitializedAsync() { if(!string.IsNullOrEmpty(raidId) && int.TryParse(raidId, out int parsedId)) { _template = RaidTemplateService.GetTemplate(parsedId); _startTime = _template.StartTime; _endTime = _template.EndTime; _raidDate = _startTime.Date; _freeForAllTime = _template.FreeForAllTime; _freeForAllDate = _freeForAllTime.Date; } else { _template = new RaidTemplate(); } _userTimeZone = await TimeZoneService.GetUserTimeZone(); } async Task AddRoleClicked() { _template.Roles.Add(new PlannedRaidRole()); } async Task DeleteRoleClicked(PlannedRaidRole role) { _template.Roles.Remove(role); } async Task DeleteRaidClicked() { bool confirmed = await JsRuntime.InvokeAsync("confirm", "Are you sure you want to delete the raid?"); if (confirmed) { await RaidTemplateService.DeleteTemplate(_template.RaidTemplateId); NavigationManager.NavigateTo("raidoverview"); } } private async Task HandleValidSubmit() { if(_template.RaidType != RaidType.Planned) { _template.Roles.Clear(); _template.Roles.Add(new PlannedRaidRole() { Spots = 10, Name = "Random", Description = _template.RaidType.ToString() }); } if(_template.Roles.Count == 0) { _errorMessage = "Roles are needed for a raid."; return; } _template.TimeZone = await TimeZoneService.GetUserTimeZone(); _template.StartTime =_raidDate.Date + _startTime.TimeOfDay; if(_startTime.TimeOfDay > _endTime.TimeOfDay) { _template.EndTime = _raidDate.Date + _endTime.TimeOfDay; } else { _template.EndTime = _raidDate.Date.AddDays(1) + _endTime.TimeOfDay; } _template.FreeForAllTime = _freeForAllDate.Date + _freeForAllTime.TimeOfDay; await RaidTemplateService.AddOrEditTemplate(_template); NavigationManager.NavigateTo("raidoverview"); } }