% if (my $invalid = stash('invalid')) {
	%= include '_invalid_input', invalid => $invalid
% }

<h1>Träwelling</h1>

% if (flash('new_traewelling')) {
	<div class="row">
		<div class="col s12">
			% if ($traewelling->{token}) {
				<div class="card success-color">
					<div class="card-content white-text">
						<span class="card-title">Träwelling verknüpft</span>
						% my $user = $traewelling->{data}{user_name} // '???';
						<p>Dein travelynx-Account ist nun mit dem Träwelling-Account <b>@<%= $user %></b> verbunden.</p>
					</div>
				</div>
			% }
			% elsif (my $login_err = flash('login_error')) {
				<div class="card caution-color">
					<div class="card-content white-text">
						<span class="card-title">Login-Fehler</span>
						<p>Der Login bei Träwelling ist fehlgeschlagen: <%= $login_err %></p>
					</div>
				</div>
			% }
			% elsif (my $logout_err = stash('logout_error')) {
				<div class="card caution-color">
					<div class="card-content white-text">
						<span class="card-title">Logout-Fehler</span>
						<p>Der Logout bei Träwelling ist fehlgeschlagen: <%= $logout_err %>.
							Dein Token bei travelynx wurde dennoch gelöscht, so
							dass nun kein Zugriff von travelynx auf Träwelling mehr
							möglich ist. In den <a
							href="https://traewelling.de/settings">Träwelling-Einstellungen</a>
							kannst du ihn vollständig löschen.</p>
					</div>
				</div>
			% }
		</div>
	</div>
% }

% if ($traewelling->{token} and ($traewelling->{expired} or $traewelling->{expiring})) {
	<div class="row">
		<div class="col s12">
			<div class="card caution-color">
				<div class="card-content white-text">
					% if ($traewelling->{expired}) {
						<span class="card-title">Token abgelaufen</span>
					% }
					% else {
						<span class="card-title">Token läuft bald ab</span>
					% }
					<p>Melde deinen travelynx-Account von Träwelling ab und
						verbinde ihn mit deinem Träwelling-Passwort erneut,
						um einen neuen Token zu erhalten.</p>
				</div>
				<div class="card-action">
					%= form_for '/account/traewelling' => (method => 'POST') => begin
						%= csrf_field
						<button class="btn-flat waves-effect waves-light white-text" type="submit" name="action" value="logout">
							<i class="material-icons left" aria-hidden="true">sync_disabled</i>
							Abmelden
						</button>
					%= end
				</div>
			</div>
		</div>
	</div>
% }

% if (not $traewelling->{token}) {
	<div class="row">
		<div class="col s12">
			<p>
				Hier hast du die Möglichkeit, deinen travelynx-Account mit einem
				Account bei <a href="https://traewelling.de">Träwelling</a> zu
				verknüpfen. Dies erlaubt die automatische Übernahme zukünftiger
				Checkins zwischen den beiden Diensten. Checkins, die
				vor dem Verknüpfen der Accounts stattgefunden haben, werden
				nicht synchronisiert. Bei synchronisierten Checkins wird der
				zugehörige Träwelling-Status von deiner travelynx-Statusseite
				aus verlinkt.
			</p>
		</div>
	</div>
	<div class="row">
		%= form_for '/oauth/traewelling' => (method => 'POST') => begin
			%= csrf_field
			<div class="col s12 center-align">
				<button class="btn waves-effect waves-light" type="submit" name="action" value="connect">
					Verknüpfen
					<i class="material-icons right">send</i>
				</button>
			</div>
		%= end
	</div>
% }
% else {
	<div class="row">
		<div class="col s12">
			<p>
				Dieser travelynx-Account ist mit dem Träwelling-Account
				% if (my $user = $traewelling->{data}{user_name}) {
					<a href="https://traewelling.de/@<%= $user %>"><%= $user %></a>
				% }
				% else {
					%= $traewelling->{email}
				% }
				verknüpft. Der aktuelle Token läuft <%= $traewelling->{expires_on}->strftime('am %d.%m.%Y um %H:%M Uhr') %> ab.
			</p>
		</div>
	</div>
	%= form_for '/account/traewelling' => (method => 'POST') => begin
		%= csrf_field
		<div class="row">
			<div class="input-field col s12">
				<div>
					<label>
						%= radio_button sync_source => 'none'
						<span>Keine Synchronisierung</span>
					</label>
				</div>
			</div>
			<div class="input-field col s12">
				<div>
					<label>
						%= radio_button sync_source => 'travelynx'
						<span>Checkin-Synchronisierung travelynx → Träwelling</span>
					</label>
				</div>
				<div>
					<label>
						%= check_box toot => 1
						<span>… Checkin im Fediverse veröffentlichen</span>
					</label>
				</div>
				<p>Die Synchronisierung erfolgt spätestens drei Minuten nach der
					Zielwahl. Es werden ausschließlich Checkins mittels
					DB (IRIS-TTS) und DB (HAFAS) synchornisiert. Beachte, dass
					die Synchronisierung travelynx → Träwelling unabhängig von
					der eingestellten Sichtbarkeit des Checkins erfolgt.
					travelynx reicht die Sichtbarkeit aber an Träwelling
					weiter.  Träwelling-Checkins können von travelynx aktuell
					nicht rückgängig gemacht werden. Eine nachträgliche
					Änderung der Zielstation wird nicht übernommen. Fediverse
					bezieht sich auf den in den <a
					href="https://traewelling.de/settings">Träwelling-Einstellungen</a>
					verknüpften Account.</p>
			</div>
			<div class="input-field col s12">
				<div>
					<label>
						%= radio_button sync_source => 'traewelling'
						<span>Checkin-Synchronisierung Träwelling → travelynx</span>
					</label>
				</div>
				<p>Alle fünf Minuten wird dein Status auf Träwelling abgefragt.
					Falls du gerade in eingecheckt bist, wird der Checkin von
					travelynx übernommen.  Träwelling-Checkins in Züge
					außerhalb des deutschen Schienennetzes werden noch nicht
					unterstützt. Die Sichtbarkeit von Träwelling-Checkins wird
					derzeit von travelynx nicht berücksichtigt.</p>
			</div>
		</div>
		<div class="row hide-on-small-only">
			<div class="col s12 m6 l6 center-align">
				<button class="btn waves-effect waves-light red" type="submit" name="action" value="logout">
					Abmelden
					<i class="material-icons right" aria-hidden="true">sync_disabled</i>
				</button>
			</div>
			<div class="col s12 m6 l6 center-align">
				<button class="btn waves-effect waves-light" type="submit" name="action" value="config">
					Speichern
					<i class="material-icons right" aria-hidden="true">send</i>
				</button>
			</div>
		</div>
		<div class="row hide-on-med-and-up">
			<div class="col s12 m6 l6 center-align">
				<button class="btn waves-effect waves-light" type="submit" name="action" value="config">
					Speichern
					<i class="material-icons right" aria-hidden="true">send</i>
				</button>
			</div>
			<div class="col s12 m6 l6 center-align" style="margin-top: 1em;">
				<button class="btn waves-effect waves-light red" type="submit" name="action" value="logout">
					Abmelden
					<i class="material-icons right" aria-hidden="true">sync_disabled</i>
				</button>
			</div>
		</div>
	%= end
	<h2>Status</h2>
	<div class="row">
		<div class="col s12"">
			% if ($traewelling->{latest_run}->epoch) {
				Letzter Checkin <%= $traewelling->{latest_run}->strftime('am %d.%m.%Y um %H:%M:%S') %><br/>
				% if ($traewelling->{errored}) {
					<i class="material-icons left">error</i>
					Fehler: <%= $traewelling->{data}{error} %>
				% }
			% }
			% else {
				Bisher wurde noch kein Checkin übernommen.
			% }
		</div>
	</div>
	<h2>Log</h2>
	<div class="row">
		<div class="col s12"">
			<ul>
				% for my $log_entry (@{$traewelling->{data}{log} // []}) {
					<li>
						<%= $log_entry->[0]->strftime('%d.%m.%Y %H:%M:%S') %> –
						% if ($log_entry->[2]) {
							Träwelling <a href="https://traewelling.de/status/<%= $log_entry->[2] %>">#<%= $log_entry->[2] %></a> –
						% }
						%= $log_entry->[1]
					</li>
				% }
			</ul>
		</div>
	</div>
% }
