@using System.Security.Claims
@using Lieb.Data
@using Lieb.Models
@using Lieb.Models.GuildWars2.Raid
@inject UserService UserService
@inject RaidService RaidService
@inject TimeZoneService TimeZoneService
@inject RaidRandomizerService RaidRandomizerService
@inject NavigationManager NavigationManager
_isCollapsed = !_isCollapsed">
@_errorMessage
@_raid.Title
@if (_user != null && _isRaidSignUpAllowed)
{
@if(_raid.SignUps.Where(s => s.LiebUserId == _user.LiebUserId).Any())
{
You are signed up
}
else if(_raid.SignUps.Where(s => s.SignUpType == SignUpType.SignedUp).Count() < _raid.Roles.Sum(r => r.Spots))
{
You can sign up
}
else
{
The raid is full
}
}
@_raid.Description
Date
@_startTime.DateTime.ToLongDateString()
Time
from: @_startTime.DateTime.ToShortTimeString() to: @_endTime.DateTime.ToShortTimeString()
@if (!_isCollapsed)
{
Organizer
@_raid.Organizer
Guild
@_raid.Guild
Voice chat
@_raid.VoiceChat
SignOffClicked()">Sign Off
EditClicked()">Edit
@if (_raid.RaidType != RaidType.Planned)
{
RandomizeClicked()">Randomize
}
}
@code {
[Parameter]
public Raid _raid { get; set; }
[Parameter]
public LiebUser? _user { get; set; }
bool _isRaidSignUpAllowed;
string _errorMessage;
private DateTimeOffset _startTime;
private DateTimeOffset _endTime;
private DateTimeOffset _freeForAllTime;
bool _isCollapsed = true;
protected override async Task OnParametersSetAsync()
{
_isRaidSignUpAllowed = _user != null && RaidService.IsRaidSignUpAllowed(_user.LiebUserId, _raid.RaidId, out _errorMessage);
_startTime = await TimeZoneService.GetLocalDateTime(_raid.StartTimeUTC);
_endTime = await TimeZoneService.GetLocalDateTime(_raid.EndTimeUTC);
_freeForAllTime = await TimeZoneService.GetLocalDateTime(_raid.FreeForAllTimeUTC);
}
async Task SignOffClicked()
{
await RaidService.SignOff(_raid.RaidId, _user.LiebUserId);
_raid = RaidService.GetRaid(_raid.RaidId);
}
async Task EditClicked()
{
NavigationManager.NavigateTo($"raidedit/{_raid.RaidId}");
}
async Task RandomizeClicked()
{
await RaidRandomizerService.RandomizeRaid(_raid.RaidId);
_raid = RaidService.GetRaid(_raid.RaidId);
}
}