[#36] MemberAdminWindow: Add MemberList

This commit is contained in:
2024-03-26 12:53:31 +01:00
parent 5795c5e8ba
commit f4ef75ac40
10 changed files with 341 additions and 31 deletions

View File

@ -116,6 +116,27 @@ main table tr.sectionheading th {
border-top: 0.5pt solid black;
}
main table tr.header {
border: 0.5pt solid black;
background-color: #E0E0E0;
}
main table tr.header th {
font-weight: bold;
font-style: normal;
font-size: 16pt;
padding: 1mm 2mm;
}
main table tr.spacing td,
main table tr.spacing th {
height: 5mm;
}
main table tr.spacing ~ tr.header {
break-before: avoid;
}
main table.number thead tr:first-child th:first-child {
text-align: left;
}

View File

@ -84,6 +84,8 @@ namespace Elwig.Documents {
name = "DeliveryConfirmation";
} else if (this is MemberDataSheet) {
name = "MemberDataSheet";
} else if (this is MemberList) {
name = "MemberList";
} else {
throw new InvalidOperationException("Invalid document object");
}

View File

@ -0,0 +1,21 @@
using Elwig.Models.Dtos;
using System.Collections.Generic;
namespace Elwig.Documents {
public class MemberList : Document {
public new static string Name => "Mitgliederliste";
public string Filter;
public IEnumerable<MemberListRow> Members;
public MemberList(string filter, IEnumerable<MemberListRow> members) : base(Name) {
Filter = filter;
Members = members;
}
public MemberList(string filter, MemberListData data) :
this(filter, data.Rows) {
}
}
}

View File

@ -0,0 +1,72 @@
@using RazorLight
@inherits TemplatePage<Elwig.Documents.MemberList>
@model Elwig.Documents.MemberList
@{ Layout = "Document"; }
<link rel="stylesheet" href="file:///@Raw(Model.DataPath)\resources\MemberList.css"/>
<main>
<h1>Mitgliederliste</h1>
<h2>@Model.Filter</h2>
<table class="members">
<colgroup>
<col style="width: 8mm;"/>
<col style="width: 42mm;"/>
<col style="width: 40mm;"/>
<col style="width: 8mm;"/>
<col style="width: 20mm;"/>
<col style="width: 12mm;"/>
<col style="width: 5mm;" />
<col style="width: 18mm;"/>
<col style="width: 12mm;"/>
</colgroup>
<thead>
<tr>
<th rowspan="2">Nr.</th>
<th rowspan="2" style="text-align: left;">Name</th>
<th rowspan="2" style="text-align: left;">Adresse</th>
<th rowspan="2">PLZ</th>
<th rowspan="2" style="text-align: left;">Ort</th>
<th rowspan="2">Betr.-Nr.</th>
<th rowspan="2">GA</th>
<th rowspan="2" style="text-align: left;">Stamm-KG</th>
<th>Geb. Fl.</th>
</tr>
<tr>
<th class="unit">[m²]</th>
</tr>
</thead>
<tbody class="small">
@{
string? lastBranch = Model.Members.Select(m => m.Branch).Distinct().Count() == 1 ? null : "";
}
@foreach (var m in Model.Members) {
if (lastBranch != null && m.Branch != lastBranch) {
<tr class="spacing"><td colspan="9"></td></tr>
<tr class="header">
<th colspan="9">@m.Branch</th>
</tr>
lastBranch = m.Branch;
}
<tr>
<td class="number" rowspan="@(m.BillingName != null ? 2 : 1)">@m.MgNr</td>
<td>@m.Name.Replace('ß', 'ẞ').ToUpper() @m.GivenName</td>
<td>@m.Address</td>
<td>@m.Plz</td>
<td class="tiny">@m.Locality</td>
<td>@m.LfbisNr</td>
<td class="number">@m.BusinessShares</td>
<td class="tiny">@m.DefaultKg</td>
<td class="number">@($"{m.AreaCommitment:N0}")</td>
</tr>
if (m.BillingName != null) {
<tr>
<td>@m.BillingName</td>
<td>@m.BillingAddress</td>
<td>@m.BillingPlz</td>
<td class="tiny">@m.BillingLocality</td>
<td colspan="4"></td>
</tr>
}
}
</tbody>
</table>
</main>

View File

@ -0,0 +1,13 @@
h1 {
text-align: center;
font-size: 24pt;
margin-top: 10mm;
margin-bottom: 2mm;
}
h2 {
text-align: center;
font-size: 14pt;
margin-top: 2mm;
}