98 lines
2.9 KiB
Text
98 lines
2.9 KiB
Text
@using System.Security.Claims
|
|
@using Lieb.Data
|
|
@using Lieb.Models
|
|
@using Lieb.Models.Poll
|
|
@using Lieb.Models.GuildWars2.Raid
|
|
@inject UserService UserService
|
|
@inject RaidService RaidService
|
|
@inject PollService PollService
|
|
@inject TimeZoneService TimeZoneService
|
|
@inject RaidRandomizerService RaidRandomizerService
|
|
@inject NavigationManager NavigationManager
|
|
@inject IJSRuntime JsRuntime
|
|
|
|
<body>
|
|
<div @onclick="() => _isCollapsed = !_isCollapsed">
|
|
|
|
<h5>@_poll.Question</h5>
|
|
@if(_raid != null)
|
|
{
|
|
<p>@_raid.Title - @_raid.StartTimeUTC.DateTime.ToLongDateString()</p>
|
|
}
|
|
|
|
@if (!_isCollapsed)
|
|
{
|
|
@foreach(var answer in Answers)
|
|
{
|
|
<p class="nametooltip">
|
|
@answer.Key - @answer.Value
|
|
<span class="tooltiptext">
|
|
@foreach(PollAnswer pAnswer in _poll.Answers.Where(a => a.Answer == answer.Key))
|
|
{
|
|
<p>@UserService.GetLiebUser(pAnswer.UserId).Name</p>
|
|
}
|
|
</span>
|
|
</p>
|
|
<br/>
|
|
}
|
|
}
|
|
<br/>
|
|
<p class="nametooltip">
|
|
Not Answered - @_poll.Answers.Where(a => string.IsNullOrWhiteSpace(a.Answer)).Count()
|
|
<span class="tooltiptext">
|
|
@foreach(PollAnswer pAnswer in _poll.Answers.Where(a => string.IsNullOrWhiteSpace(a.Answer)))
|
|
{
|
|
<p>@UserService.GetLiebUser(pAnswer.UserId).Name</p>
|
|
}
|
|
</span>
|
|
</p>
|
|
<br/>
|
|
<button type="delete" @onclick="() => DeletePollClicked()">Delete Poll</button>
|
|
</div>
|
|
</body>
|
|
|
|
@code {
|
|
[Parameter]
|
|
public Poll _poll { get; set; }
|
|
|
|
[Parameter]
|
|
public LiebUser? _user { get; set; }
|
|
|
|
private Raid _raid { get; set; }
|
|
|
|
private bool _isCollapsed = true;
|
|
|
|
private Dictionary<string, int> Answers = new Dictionary<string, int>();
|
|
|
|
protected override async Task OnParametersSetAsync()
|
|
{
|
|
if(_poll.RaidId.HasValue)
|
|
{
|
|
_raid = RaidService.GetRaid(_poll.RaidId.Value);
|
|
}
|
|
foreach(PollOption option in _poll.Options)
|
|
{
|
|
if(!Answers.ContainsKey(option.Name))
|
|
Answers.Add(option.Name, 0);
|
|
}
|
|
foreach(PollAnswer answer in _poll.Answers)
|
|
{
|
|
if(!string.IsNullOrWhiteSpace(answer.Answer))
|
|
{
|
|
if(!Answers.ContainsKey(answer.Answer))
|
|
Answers.Add(answer.Answer, 0);
|
|
Answers[answer.Answer] ++;
|
|
}
|
|
}
|
|
}
|
|
|
|
async Task DeletePollClicked()
|
|
{
|
|
bool confirmed = await JsRuntime.InvokeAsync<bool>("confirm", "Are you sure you want to delete the poll?");
|
|
if (confirmed)
|
|
{
|
|
await PollService.DeletePoll(_poll.PollId);
|
|
NavigationManager.NavigateTo("polloverview", forceLoad: true);
|
|
}
|
|
}
|
|
}
|