From 7e87500992f772088a6b467e1ee7fe45b224a736 Mon Sep 17 00:00:00 2001 From: Sarah Faey Date: Sun, 15 Jan 2023 10:53:23 +0100 Subject: [PATCH] reformated PollOptions used HashSet for PollUsers --- Lieb/Data/PollService.cs | 4 +-- Lieb/Pages/Poll/PollCreate.razor | 2 +- Lieb/Pages/Poll/PollDetails.razor | 49 +++++++++++++++++++++---------- 3 files changed, 36 insertions(+), 19 deletions(-) diff --git a/Lieb/Data/PollService.cs b/Lieb/Data/PollService.cs index aa5af9f..469d776 100644 --- a/Lieb/Data/PollService.cs +++ b/Lieb/Data/PollService.cs @@ -73,11 +73,11 @@ namespace Lieb.Data .FirstOrDefault(r => r.RaidId == raidId); if (raid == null) return 0; - List users = raid.SignUps.Where(s => s.LiebUserId != null).Select(s => (ulong)s.LiebUserId).ToList(); + HashSet users = raid.SignUps.Where(s => s.LiebUserId != null).Select(s => (ulong)s.LiebUserId).ToHashSet(); return await CreatePoll(poll, users, raidId); } - public async Task CreatePoll(Poll poll, List users, int? raidId = null) + public async Task CreatePoll(Poll poll, HashSet users, int? raidId = null) { poll.RaidId = raidId; diff --git a/Lieb/Pages/Poll/PollCreate.razor b/Lieb/Pages/Poll/PollCreate.razor index c21894d..303eb25 100644 --- a/Lieb/Pages/Poll/PollCreate.razor +++ b/Lieb/Pages/Poll/PollCreate.razor @@ -193,7 +193,7 @@ } else if(_pollType == POLL_TYPE_GROUP) { - await PollService.CreatePoll(_poll, UserService.GetGroupMembers(_chosenRole).Select(u => u.Id).ToList()); + await PollService.CreatePoll(_poll, UserService.GetGroupMembers(_chosenRole).Select(u => u.Id).ToHashSet()); } NavigationManager.NavigateTo("polloverview"); diff --git a/Lieb/Pages/Poll/PollDetails.razor b/Lieb/Pages/Poll/PollDetails.razor index e85f3a8..4f0139f 100644 --- a/Lieb/Pages/Poll/PollDetails.razor +++ b/Lieb/Pages/Poll/PollDetails.razor @@ -10,23 +10,24 @@ @inject NavigationManager NavigationManager +
-
- -
@_poll.Question
- @if(_raid != null) - { -

@_raid.Title - @_raid.StartTimeUTC.DateTime.ToLongDateString()

- } -
- - @if (!_isCollapsed) - { - @foreach(var answer in _poll.Answers.GroupBy(a => a.Answer)) +
@_poll.Question
+ @if(_raid != null) { -

@answer.Key - @answer.Count()

+

@_raid.Title - @_raid.StartTimeUTC.DateTime.ToLongDateString()

} - } + + @if (!_isCollapsed) + { + @foreach(var answer in Answers) + { +

@answer.Key - @answer.Value

+ } + } +
+

Not Answered - @_poll.Answers.Where(a => string.IsNullOrWhiteSpace(a.Answer)).Count()

+
@code { @@ -36,9 +37,11 @@ [Parameter] public LiebUser? _user { get; set; } - public Raid _raid { get; set; } + private Raid _raid { get; set; } - bool _isCollapsed = true; + private bool _isCollapsed = true; + + private Dictionary Answers = new Dictionary(); protected override async Task OnParametersSetAsync() { @@ -46,6 +49,20 @@ { _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] ++; + } + } } }