Update to new bahncard image encoding
This commit is contained in:
parent
fb6ca021c2
commit
4cc3f22ade
|
@ -1,161 +1,169 @@
|
||||||
@page
|
@page
|
||||||
@using Microsoft.AspNetCore.Http
|
@using Microsoft.AspNetCore.Http
|
||||||
@using Microsoft.AspNetCore.Http.Extensions
|
@using Microsoft.AspNetCore.Http.Extensions
|
||||||
|
@using System.Text
|
||||||
@model CardsModel
|
@model CardsModel
|
||||||
@{
|
@{
|
||||||
ViewData["Title"] = "Cards";
|
ViewData["Title"] = "Cards";
|
||||||
|
|
||||||
if (HttpContext.Session.GetString("authorized") != "true") {
|
if (HttpContext.Session.GetString("authorized") != "true") {
|
||||||
Response.Redirect($"/Login?&redir={Request.GetDisplayUrl().UrlEncode()}");
|
Response.Redirect($"/Login?&redir={Request.GetDisplayUrl().UrlEncode()}");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Request.Query.ContainsKey("refresh")) {
|
if (Request.Query.ContainsKey("refresh")) {
|
||||||
Response.Redirect("?edit=true");
|
Response.Redirect("?edit=true");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@if (Request.Query["edit"] == "true") {
|
@if (Request.Query["edit"] == "true") {
|
||||||
<table class="table table-striped">
|
<table class="table table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Card</th>
|
<th>Card</th>
|
||||||
<th>Number</th>
|
<th>Number</th>
|
||||||
<th>Traveller</th>
|
<th>Traveller</th>
|
||||||
<th>Card Validity</th>
|
<th>Card Validity</th>
|
||||||
<th>QR Validity</th>
|
<th>QR Validity</th>
|
||||||
<th>Actions</th>
|
<th>Actions</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@foreach (var card in Model.Cards) {
|
@foreach (var card in Model.Cards) {
|
||||||
<tr>
|
<tr>
|
||||||
<td>@card.CardInfo.TrimEnd('#')</td>
|
<td>@card.CardInfo.TrimEnd('#')</td>
|
||||||
<td>@card.CardNumber</td>
|
<td>@card.CardNumber</td>
|
||||||
<td>@card.Traveller</td>
|
<td>@card.Traveller</td>
|
||||||
<td>
|
<td>
|
||||||
@{
|
@{
|
||||||
var from = DateTime.Parse(card.ValidFrom);
|
var from = DateTime.Parse(card.ValidFrom);
|
||||||
var to = DateTime.Parse(card.ValidTo);
|
var to = DateTime.Parse(card.ValidTo);
|
||||||
if (from > DateTime.Now) {
|
if (from > DateTime.Now) {
|
||||||
<span style="color: red">
|
<span style="color: red">
|
||||||
@card.ValidFrom.Split("T")[0]
|
@card.ValidFrom.Split("T")[0]
|
||||||
</span>
|
</span>
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@card.ValidFrom.Split("T")[0]
|
@card.ValidFrom.Split("T")[0]
|
||||||
}
|
}
|
||||||
<br/>
|
<br/>
|
||||||
if (to < DateTime.Now) {
|
if (to < DateTime.Now) {
|
||||||
<span style="color: red">
|
<span style="color: red">
|
||||||
@card.ValidTo.Split("T")[0]
|
@card.ValidTo.Split("T")[0]
|
||||||
</span>
|
</span>
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@card.ValidTo.Split("T")[0]
|
@card.ValidTo.Split("T")[0]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
@{
|
@{
|
||||||
var qrfrom = DateTime.Parse(card.QrValidFrom);
|
var qrfrom = DateTime.Parse(card.QrValidFrom);
|
||||||
var qrto = DateTime.Parse(card.QrValidTo);
|
var qrto = DateTime.Parse(card.QrValidTo);
|
||||||
if (qrfrom > DateTime.Now) {
|
if (qrfrom > DateTime.Now) {
|
||||||
<span style="color: red">
|
<span style="color: red">
|
||||||
@card.QrValidFrom.Split("T")[0]
|
@card.QrValidFrom.Split("T")[0]
|
||||||
</span>
|
</span>
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@card.QrValidFrom.Split("T")[0]
|
@card.QrValidFrom.Split("T")[0]
|
||||||
}
|
}
|
||||||
<br/>
|
<br/>
|
||||||
if (qrto < DateTime.Now) {
|
if (qrto < DateTime.Now) {
|
||||||
<span style="color: red">
|
<span style="color: red">
|
||||||
@card.QrValidTo.Split("T")[0]
|
@card.QrValidTo.Split("T")[0]
|
||||||
</span>
|
</span>
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@card.QrValidTo.Split("T")[0]
|
@card.QrValidTo.Split("T")[0]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a class="btn btn-sm btn-primary" href="?refresh=@card.CardId">Refresh QR</a>
|
<a class="btn btn-sm btn-primary" href="?refresh=@card.CardId">Refresh QR</a>
|
||||||
<a class="btn btn-sm btn-outline-danger" href="/Delete?item=card&id=@card.CardId&redir=@Request.GetDisplayUrl().UrlEncode()">Delete</a>
|
<a class="btn btn-sm btn-outline-danger" href="/Delete?item=card&id=@card.CardId&redir=@Request.GetDisplayUrl().UrlEncode()">Delete</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<p>
|
<p>
|
||||||
Please refresh your BahnCard list in the mobile DB Navigator before clicking "Refresh QR". This will be fixed in a later release.
|
Please refresh your BahnCard list in the mobile DB Navigator before clicking "Refresh QR". This will be fixed in a later release.
|
||||||
</p>
|
</p>
|
||||||
<a class="btn btn-sm btn-secondary" href="@Request.Path">Back</a>
|
<a class="btn btn-sm btn-secondary" href="@Request.Path">Back</a>
|
||||||
<br/>
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
}
|
}
|
||||||
else if (Model.Cards.Any()) {
|
else if (Model.Cards.Any()) {
|
||||||
foreach (var card in Model.Cards) {
|
foreach (var card in Model.Cards) {
|
||||||
<div class="flex-grid">
|
if (!card.CardQr.StartsWith("data:image/png"))
|
||||||
<div class="flex-col">
|
card.CardQr = Encoding.UTF8.GetString(Convert.FromBase64String(card.CardQr));
|
||||||
<img src="@card.CardQr" alt="Ticketcode"/>
|
if (!card.CardSecCode.StartsWith("data:image/png"))
|
||||||
</div>
|
card.CardSecCode = Encoding.UTF8.GetString(Convert.FromBase64String(card.CardSecCode));
|
||||||
<div class="flex-col">
|
if (!card.CardImage.StartsWith("<?xml"))
|
||||||
<img src="@card.CardSecCode" alt="Sichtmerkmal"/>
|
card.CardImage = Encoding.UTF8.GetString(Convert.FromBase64String(card.CardImage));
|
||||||
</div>
|
|
||||||
<div class="flex-col">
|
|
||||||
<div class="bahncard-outer">
|
|
||||||
<img class="bahncard" src='data:image/svg+xml;base64,@card.CardImage.Base64Encode()' alt="Bahncardimage"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
var from = DateTime.Parse(card.ValidFrom);
|
|
||||||
var to = DateTime.Parse(card.ValidTo);
|
|
||||||
var qrfrom = DateTime.Parse(card.QrValidFrom);
|
|
||||||
var qrto = DateTime.Parse(card.QrValidTo);
|
|
||||||
|
|
||||||
if (from > DateTime.Now) {
|
<div class="flex-grid">
|
||||||
<div class="alert alert-info" role="alert">
|
<div class="flex-col">
|
||||||
The above card is not valid yet.
|
<img src="@card.CardQr" alt="Ticketcode"/>
|
||||||
</div>
|
</div>
|
||||||
}
|
<div class="flex-col">
|
||||||
if (to < DateTime.Now) {
|
<img src="@card.CardSecCode" alt="Sichtmerkmal"/>
|
||||||
<div class="alert alert-warning" role="alert">
|
</div>
|
||||||
The above card is expired.
|
<div class="flex-col">
|
||||||
</div>
|
<div class="bahncard-outer">
|
||||||
}
|
<img class="bahncard" src='data:image/svg+xml;base64,@card.CardImage.Base64Encode()' alt="Bahncardimage"/>
|
||||||
if (qrfrom > DateTime.Now && !(from > DateTime.Now)) {
|
</div>
|
||||||
<div class="alert alert-info" role="alert">
|
</div>
|
||||||
The above QR code is somehow not valid yet. Congrats, please open a bug report.
|
</div>
|
||||||
</div>
|
var from = DateTime.Parse(card.ValidFrom);
|
||||||
}
|
var to = DateTime.Parse(card.ValidTo);
|
||||||
if (qrto < DateTime.Now) {
|
var qrfrom = DateTime.Parse(card.QrValidFrom);
|
||||||
<div class="alert alert-warning" role="alert">
|
var qrto = DateTime.Parse(card.QrValidTo);
|
||||||
The above QR code is expired. Please refresh the card. <a href="/Cards?edit=true">You can do that now</a>.
|
|
||||||
</div>
|
if (from > DateTime.Now) {
|
||||||
}
|
<div class="alert alert-info" role="alert">
|
||||||
<br/>
|
The above card is not valid yet.
|
||||||
}
|
</div>
|
||||||
<br/>
|
}
|
||||||
<a class="btn btn-sm btn-secondary" href="?edit=true">Edit cards</a>
|
if (to < DateTime.Now) {
|
||||||
|
<div class="alert alert-warning" role="alert">
|
||||||
|
The above card is expired.
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
if (qrfrom > DateTime.Now && !(from > DateTime.Now)) {
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
The above QR code is somehow not valid yet. Congrats, please open a bug report.
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
if (qrto < DateTime.Now) {
|
||||||
|
<div class="alert alert-warning" role="alert">
|
||||||
|
The above QR code is expired. Please refresh the card. <a href="/Cards?edit=true">You can do that now</a>.
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
<br/>
|
||||||
|
}
|
||||||
|
<br/>
|
||||||
|
<a class="btn btn-sm btn-secondary" href="?edit=true">Edit cards</a>
|
||||||
}
|
}
|
||||||
|
|
||||||
@if (!Model.Cards.Any() || Request.Query["edit"] == "true") {
|
@if (!Model.Cards.Any() || Request.Query["edit"] == "true") {
|
||||||
<h3>Get Cards from bahn.de account</h3>
|
<h3>Get Cards from bahn.de account</h3>
|
||||||
<br/>
|
<br/>
|
||||||
<form method="POST" action="/Card">
|
<form method="POST" action="/Card">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type="text" class="form-control" id="InputUser" name="user" placeholder="bahn.de username">
|
<input type="text" class="form-control" id="InputUser" name="user" placeholder="bahn.de username">
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type="password" class="form-control" id="InputPassword" name="pass" placeholder="bahn.de password">
|
<input type="password" class="form-control" id="InputPassword" name="pass" placeholder="bahn.de password">
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type="text" class="form-control" id="inputName" name="name" placeholder="Last name of traveller">
|
<input type="text" class="form-control" id="inputName" name="name" placeholder="Last name of traveller">
|
||||||
</div>
|
</div>
|
||||||
@Html.AntiForgeryToken()
|
@Html.AntiForgeryToken()
|
||||||
<button type="submit" class="btn btn-primary">Submit</button>
|
<button type="submit" class="btn btn-primary">Submit</button>
|
||||||
</form>
|
</form>
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,30 +2,31 @@
|
||||||
@using Microsoft.AspNetCore.Http
|
@using Microsoft.AspNetCore.Http
|
||||||
@using Microsoft.AspNetCore.Http.Extensions
|
@using Microsoft.AspNetCore.Http.Extensions
|
||||||
@using bahnplan.web.database
|
@using bahnplan.web.database
|
||||||
|
@using System.Text
|
||||||
@model InspectionModel
|
@model InspectionModel
|
||||||
@{
|
@{
|
||||||
ViewData["Title"] = "Inspection";
|
ViewData["Title"] = "Inspection";
|
||||||
|
|
||||||
if (HttpContext.Session.GetString("authorized") != "true") {
|
if (HttpContext.Session.GetString("authorized") != "true") {
|
||||||
Response.Redirect($"/Login?&redir={Request.GetDisplayUrl().UrlEncode()}");
|
Response.Redirect($"/Login?&redir={Request.GetDisplayUrl().UrlEncode()}");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Model.Leg.UserId != int.Parse(HttpContext.Session.GetString("uid"))) {
|
if (Model.Leg.UserId != int.Parse(HttpContext.Session.GetString("uid"))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Ticket for <b>@Model.Leg.TrainType @Model.Leg.TrainNr</b> from <b>@Model.Leg.DepStation</b> to <b>@Model.Leg.ArrStation</b>, starting @DateTime.Parse(Model.Leg.DepTime).ToString("yyyy-MM-dd HH:mm")
|
Ticket for <b>@Model.Leg.TrainType @Model.Leg.TrainNr</b> from <b>@Model.Leg.DepStation</b> to <b>@Model.Leg.ArrStation</b>, starting @DateTime.Parse(Model.Leg.DepTime).ToString("yyyy-MM-dd HH:mm")
|
||||||
</p>
|
</p>
|
||||||
<div class="flex-grid">
|
<div class="flex-grid">
|
||||||
<div class="flex-col">
|
<div class="flex-col">
|
||||||
<img src="@Model.Ticket.TicketQr" alt="Ticketcode"/>
|
<img src="@Model.Ticket.TicketQr" alt="Ticketcode"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex-col">
|
<div class="flex-col">
|
||||||
<img src="@Model.Ticket.TicketSecCode" alt="Sichtmerkmal"/>
|
<img src="@Model.Ticket.TicketSecCode" alt="Sichtmerkmal"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<br/>
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
|
@ -33,102 +34,118 @@
|
||||||
<br/>
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
@if (Model.Ticket.TicketInfo.Contains("BC 50")) {
|
@if (Model.Ticket.TicketInfo.Contains("BC 50")) {
|
||||||
await using var db = new Database.DbConn();
|
await using var db = new Database.DbConn();
|
||||||
if (db.Cards.Any(p => p.Value == 50 && p.Traveller == Model.Ticket.Traveller && p.UserId == Model.Leg.UserId)) {
|
if (db.Cards.Any(p => p.Value == 50 && p.Traveller == Model.Ticket.Traveller && p.UserId == Model.Leg.UserId)) {
|
||||||
var card = db.Cards.First(p => p.Value == 50 && p.Traveller == Model.Ticket.Traveller && p.UserId == Model.Leg.UserId);
|
var card = db.Cards.First(p => p.Value == 50 && p.Traveller == Model.Ticket.Traveller && p.UserId == Model.Leg.UserId);
|
||||||
<div class="flex-grid">
|
|
||||||
<div class="flex-col">
|
|
||||||
<img src="@card.CardQr" alt="Ticketcode"/>
|
|
||||||
</div>
|
|
||||||
<div class="flex-col">
|
|
||||||
<img src="@card.CardSecCode" alt="Sichtmerkmal"/>
|
|
||||||
</div>
|
|
||||||
<div class="flex-col">
|
|
||||||
<div class="bahncard-outer">
|
|
||||||
<img class="bahncard" src='data:image/svg+xml;base64,@card.CardImage.Base64Encode()' alt="Bahncardimage"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
var from = DateTime.Parse(card.ValidFrom);
|
if (!card.CardQr.StartsWith("data:image/png"))
|
||||||
var to = DateTime.Parse(card.ValidTo);
|
card.CardQr = Encoding.UTF8.GetString(Convert.FromBase64String(card.CardQr));
|
||||||
var qrfrom = DateTime.Parse(card.QrValidFrom);
|
if (!card.CardSecCode.StartsWith("data:image/png"))
|
||||||
var qrto = DateTime.Parse(card.QrValidTo);
|
card.CardSecCode = Encoding.UTF8.GetString(Convert.FromBase64String(card.CardSecCode));
|
||||||
|
if (!card.CardImage.StartsWith("<?xml"))
|
||||||
|
card.CardImage = Encoding.UTF8.GetString(Convert.FromBase64String(card.CardImage));
|
||||||
|
|
||||||
if (from > DateTime.Now) {
|
<div class="flex-grid">
|
||||||
<div class="alert alert-info" role="alert">
|
<div class="flex-col">
|
||||||
The above card is not valid yet.
|
<img src="@card.CardQr" alt="Ticketcode"/>
|
||||||
</div>
|
</div>
|
||||||
}
|
<div class="flex-col">
|
||||||
if (to < DateTime.Now) {
|
<img src="@card.CardSecCode" alt="Sichtmerkmal"/>
|
||||||
<div class="alert alert-warning" role="alert">
|
</div>
|
||||||
The above card is expired.
|
<div class="flex-col">
|
||||||
</div>
|
<div class="bahncard-outer">
|
||||||
}
|
<img class="bahncard" src='data:image/svg+xml;base64,@card.CardImage.Base64Encode()' alt="Bahncardimage"/>
|
||||||
if (qrfrom > DateTime.Now && !(from > DateTime.Now)) {
|
</div>
|
||||||
<div class="alert alert-info" role="alert">
|
</div>
|
||||||
The above QR code is somehow not valid yet. Congrats, please open a bug report.
|
</div>
|
||||||
</div>
|
|
||||||
}
|
var from = DateTime.Parse(card.ValidFrom);
|
||||||
if (qrto < DateTime.Now) {
|
var to = DateTime.Parse(card.ValidTo);
|
||||||
<div class="alert alert-warning" role="alert">
|
var qrfrom = DateTime.Parse(card.QrValidFrom);
|
||||||
The above QR code is expired. Please refresh the card. <a href="/Cards?edit=true">You can do that now</a>.
|
var qrto = DateTime.Parse(card.QrValidTo);
|
||||||
</div>
|
|
||||||
}
|
if (from > DateTime.Now) {
|
||||||
}
|
<div class="alert alert-info" role="alert">
|
||||||
else {
|
The above card is not valid yet.
|
||||||
<div class="alert alert-warning" role="alert">
|
</div>
|
||||||
I would show your BahnCard but you haven't added a card matching the value and name of the ticket yet. <a href="/Cards">You can do that now</a>.
|
}
|
||||||
</div>
|
if (to < DateTime.Now) {
|
||||||
}
|
<div class="alert alert-warning" role="alert">
|
||||||
|
The above card is expired.
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
if (qrfrom > DateTime.Now && !(from > DateTime.Now)) {
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
The above QR code is somehow not valid yet. Congrats, please open a bug report.
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
if (qrto < DateTime.Now) {
|
||||||
|
<div class="alert alert-warning" role="alert">
|
||||||
|
The above QR code is expired. Please refresh the card. <a href="/Cards?edit=true">You can do that now</a>.
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
<div class="alert alert-warning" role="alert">
|
||||||
|
I would show your BahnCard but you haven't added a card matching the value and name of the ticket yet. <a href="/Cards">You can do that now</a>.
|
||||||
|
</div>
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (Model.Ticket.TicketInfo.Contains("BC 25")) {
|
else if (Model.Ticket.TicketInfo.Contains("BC 25")) {
|
||||||
await using var db = new Database.DbConn();
|
await using var db = new Database.DbConn();
|
||||||
if (db.Cards.Any(p => p.Value == 25 && p.Traveller == Model.Ticket.Traveller && p.UserId == Model.Leg.UserId)) {
|
if (db.Cards.Any(p => p.Value == 25 && p.Traveller == Model.Ticket.Traveller && p.UserId == Model.Leg.UserId)) {
|
||||||
var card = db.Cards.First(p => p.Value == 25 && p.Traveller == Model.Ticket.Traveller && p.UserId == Model.Leg.UserId);
|
var card = db.Cards.First(p => p.Value == 25 && p.Traveller == Model.Ticket.Traveller && p.UserId == Model.Leg.UserId);
|
||||||
<div class="flex-grid">
|
|
||||||
<div class="flex-col">
|
|
||||||
<img src="@card.CardQr" alt="Ticketcode"/>
|
|
||||||
</div>
|
|
||||||
<div class="flex-col">
|
|
||||||
<img src="@card.CardSecCode" alt="Sichtmerkmal"/>
|
|
||||||
</div>
|
|
||||||
<div class="flex-col">
|
|
||||||
<div class="bahncard-outer">
|
|
||||||
<img class="bahncard" src='data:image/svg+xml;base64,@card.CardImage.Base64Encode()' alt="Bahncardimage"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
var from = DateTime.Parse(card.ValidFrom);
|
if (!card.CardQr.StartsWith("data:image/png"))
|
||||||
var to = DateTime.Parse(card.ValidTo);
|
card.CardQr = Encoding.UTF8.GetString(Convert.FromBase64String(card.CardQr));
|
||||||
var qrfrom = DateTime.Parse(card.QrValidFrom);
|
if (!card.CardSecCode.StartsWith("data:image/png"))
|
||||||
var qrto = DateTime.Parse(card.QrValidTo);
|
card.CardSecCode = Encoding.UTF8.GetString(Convert.FromBase64String(card.CardSecCode));
|
||||||
|
if (!card.CardImage.StartsWith("<?xml"))
|
||||||
|
card.CardImage = Encoding.UTF8.GetString(Convert.FromBase64String(card.CardImage));
|
||||||
|
|
||||||
if (from > DateTime.Now) {
|
<div class="flex-grid">
|
||||||
<div class="alert alert-info" role="alert">
|
<div class="flex-col">
|
||||||
The above card is not valid yet.
|
<img src="@card.CardQr" alt="Ticketcode"/>
|
||||||
</div>
|
</div>
|
||||||
}
|
<div class="flex-col">
|
||||||
if (to < DateTime.Now) {
|
<img src="@card.CardSecCode" alt="Sichtmerkmal"/>
|
||||||
<div class="alert alert-warning" role="alert">
|
</div>
|
||||||
The above card is expired.
|
<div class="flex-col">
|
||||||
</div>
|
<div class="bahncard-outer">
|
||||||
}
|
<img class="bahncard" src='data:image/svg+xml;base64,@card.CardImage.Base64Encode()' alt="Bahncardimage"/>
|
||||||
if (qrfrom > DateTime.Now && !(from > DateTime.Now)) {
|
</div>
|
||||||
<div class="alert alert-info" role="alert">
|
</div>
|
||||||
The above QR code is somehow not valid yet. Congrats, please open a bug report.
|
</div>
|
||||||
</div>
|
|
||||||
}
|
var from = DateTime.Parse(card.ValidFrom);
|
||||||
if (qrto < DateTime.Now) {
|
var to = DateTime.Parse(card.ValidTo);
|
||||||
<div class="alert alert-warning" role="alert">
|
var qrfrom = DateTime.Parse(card.QrValidFrom);
|
||||||
The above QR code is expired. Please refresh the card. <a href="/Cards?edit=true">You can do that now</a>.
|
var qrto = DateTime.Parse(card.QrValidTo);
|
||||||
</div>
|
|
||||||
}
|
if (from > DateTime.Now) {
|
||||||
}
|
<div class="alert alert-info" role="alert">
|
||||||
else {
|
The above card is not valid yet.
|
||||||
<div class="alert alert-warning" role="alert">
|
</div>
|
||||||
I would show your BahnCard but you haven't added a card matching the value and name of the ticket yet. <a href="/Cards">You can do that now</a>.
|
}
|
||||||
</div>
|
if (to < DateTime.Now) {
|
||||||
}
|
<div class="alert alert-warning" role="alert">
|
||||||
}
|
The above card is expired.
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
if (qrfrom > DateTime.Now && !(from > DateTime.Now)) {
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
The above QR code is somehow not valid yet. Congrats, please open a bug report.
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
if (qrto < DateTime.Now) {
|
||||||
|
<div class="alert alert-warning" role="alert">
|
||||||
|
The above QR code is expired. Please refresh the card. <a href="/Cards?edit=true">You can do that now</a>.
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
<div class="alert alert-warning" role="alert">
|
||||||
|
I would show your BahnCard but you haven't added a card matching the value and name of the ticket yet. <a href="/Cards">You can do that now</a>.
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Reference in a new issue