You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

144 lines
3.5 KiB

2 years ago
@page "/lottohistory"
@using BlazorLottoPicker.Data.Model;
@using BlazorLottoPicker.Data.Services;
@inject HistoryService _historyService;
<h3>LottoHistory</h3>
<p>Please set start and end lottery</p>
<p>
<button class="btn btn-primary" @onclick="OpenPopup">
Search
</button>
</p>
@if (_showPopup)
{
<div class="modal" style="display:block" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h3 class="modal-title">Add/Update Game Result</h3>
<button type="button" class="btn btn-close" @onclick="ClosePopup" />
</div>
<div class="modal-body">
<label for="Start">Start</label>
<input class="form-control" type="text" placeholder="Start" @bind-value="_start" />
<label for="End">End</label>
<input class="form-control" type="text" placeholder="End" @bind-value="_end" />
<button class="btn btn-primary" @onclick="SearchHistory">
Search
</button>
</div>
</div>
</div>
</div>
}
@if (_loading)
{
<p><em>Loading...</em></p>
}
else if (_stats == null)
{
}
else
{
<p>Searched count: @_stats.Count</p>
<table class="table">
<thead>
<tr>
<th>Ball number</th>
<th>Count</th>
</tr>
</thead>
<tbody>
@foreach (var stat in _stats)
{
<tr>
<td>@stat.BallNumber</td>
<td>@stat.Count</td>
</tr>
}
</tbody>
</table>
}
@code {
List<HistoryResult> _histories;
List<HistoryStatistics> _stats;
int _start = 0;
int _end = 20;
bool _loading = false;
bool _showPopup;
void OpenPopup()
{
_showPopup = true;
}
void ClosePopup()
{
_showPopup = false;
}
async void SearchHistory()
{
ClosePopup();
_loading = true;
_histories = await _historyService.GetHistoryListAsync(_start, _end);
if (_histories == null || _histories.Count < 1)
{
_loading = false;
return;
}
List<int> hist = new List<int>(6 * (_end - _start + 1));
foreach (HistoryResult history in _histories)
{
hist.AddRange(GetBallValues(history));
}
hist.Sort();
Dictionary<string, int> historyCounts = new Dictionary<string, int>();
for (int i = 0; i < hist.Count; i++)
{
string key = $"No.{hist[i].ToString()}";
if (!historyCounts.ContainsKey(key))
historyCounts.Add(key, 0);
historyCounts[key]++;
}
_stats = new List<HistoryStatistics>();
foreach (var histCount in historyCounts)
{
_stats.Add(new HistoryStatistics() { BallNumber = histCount.Key, Count = histCount.Value });
}
_loading = false;
StateHasChanged();
}
List<int> GetBallValues(HistoryResult result)
{
List<int> values = new List<int>();
values.Add(result.drwtNo1);
values.Add(result.drwtNo2);
values.Add(result.drwtNo3);
values.Add(result.drwtNo4);
values.Add(result.drwtNo5);
values.Add(result.drwtNo6);
return values;
}
}