94 lines
2 KiB
Plaintext
94 lines
2 KiB
Plaintext
@page "/labs"
|
|
@using Microsoft.EntityFrameworkCore
|
|
|
|
<PageTitle>Labs</PageTitle>
|
|
|
|
<h1>Labs</h1>
|
|
|
|
<a href="/labs/add" class="btn btn-primary">Add new</a>
|
|
|
|
<table class="table table-striped">
|
|
<thead>
|
|
<tr>
|
|
<td>Name</td>
|
|
<td>Location</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach (var lab in Labs)
|
|
{
|
|
<tr>
|
|
<td>
|
|
<a href="@($"/labs/{lab.Id.Value}")">@lab.Name</a>
|
|
</td>
|
|
<td>
|
|
@if (!string.IsNullOrEmpty(lab.AddressCity))
|
|
{
|
|
<span>@lab.AddressCity</span>@(", ")
|
|
}
|
|
<span>@lab.Country.Name</span>
|
|
</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</table>
|
|
|
|
<div>
|
|
<ul class="pagination">
|
|
@for (var i = 1; i <= TotalPages; i++)
|
|
{
|
|
var p = i;
|
|
<li class="page-item @(i == CurrentPage ? "active" : "")">
|
|
<a class="page-link" href="@($"/labs?page={p}")">@p</a>
|
|
</li>
|
|
}
|
|
</ul>
|
|
</div>
|
|
|
|
@code {
|
|
|
|
[Inject]
|
|
public IDbContextFactory<AppDbContext> DbContextFactory { get; set; } = null!;
|
|
|
|
[Parameter]
|
|
[SupplyParameterFromQuery(Name = "page")]
|
|
public int? CurrentPage { get; set; }
|
|
|
|
private int Count { get; set; }
|
|
private int PageSize { get; set; } = 10;
|
|
|
|
private int TotalPages => (int)Math.Ceiling(decimal.Divide(Count, PageSize));
|
|
|
|
|
|
private List<Lab> Labs { get; set; } = new();
|
|
|
|
|
|
private void Load()
|
|
{
|
|
using var ctx = DbContextFactory.CreateDbContext();
|
|
|
|
Count = ctx.Set<Lab>().Count();
|
|
|
|
var page = CurrentPage ?? 1;
|
|
|
|
Labs = ctx.Set<Lab>()
|
|
.OrderBy(x => x.Id)
|
|
.Skip((page - 1) * PageSize)
|
|
.Take(PageSize)
|
|
.Include(x => x.Country)
|
|
.ToList();
|
|
}
|
|
|
|
protected override void OnInitialized()
|
|
{
|
|
base.OnInitialized();
|
|
Load();
|
|
}
|
|
|
|
protected override void OnParametersSet()
|
|
{
|
|
base.OnParametersSet();
|
|
Load();
|
|
}
|
|
|
|
} |