summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBirte Kristina Friesel <derf@finalrewind.org>2025-05-17 11:25:35 +0200
committerBirte Kristina Friesel <derf@finalrewind.org>2025-05-17 11:25:35 +0200
commitebb6b76a32d1bb4651ca757a5e5aa8ef7756e8c5 (patch)
treeeda0849f9d011ec259cdaf27c79f5b042bed353f
parentd21e89035f7d5f684a7d11ec164118978fcedc2e (diff)
dbris: persist backend messages and show them in journey view2.11.27
-rw-r--r--lib/Travelynx/Model/InTransit.pm53
-rw-r--r--templates/journey.html.ep10
2 files changed, 51 insertions, 12 deletions
diff --git a/lib/Travelynx/Model/InTransit.pm b/lib/Travelynx/Model/InTransit.pm
index 0795179..08b7fbb 100644
--- a/lib/Travelynx/Model/InTransit.pm
+++ b/lib/Travelynx/Model/InTransit.pm
@@ -101,6 +101,7 @@ sub add {
my $checkin_station_id = $opt{departure_eva};
my $route = $opt{route};
my $data = $opt{data};
+ my $persistent_data;
my $json = JSON->new;
@@ -242,6 +243,13 @@ sub add {
lead => $msg->{text}
}
);
+ push(
+ @{ $persistent_data->{him_msg} },
+ {
+ prio => $msg->{prioritaet},
+ lead => $msg->{text}
+ }
+ );
}
}
$db->insert(
@@ -267,6 +275,7 @@ sub add {
%{ $data // {} }
}
),
+ user_data => JSON->new->encode($persistent_data),
backend_id => $backend_id,
}
);
@@ -824,21 +833,30 @@ sub update_departure_dbris {
my $stop = $opt{stop};
my $json = JSON->new;
- my $res_h = $db->select( 'in_transit', ['data'], { user_id => $uid } )
- ->expand->hash;
- my $data = $res_h ? $res_h->{data} : {};
+ my $res_h = $db->select( 'in_transit', [ 'data', 'user_data' ],
+ { user_id => $uid } )->expand->hash;
+ my $ephemeral_data = $res_h ? $res_h->{data} : {};
+ my $persistent_data = $res_h ? $res_h->{user_data} : {};
- $data->{him_msg} = [];
+ $ephemeral_data->{him_msg} = [];
+ $persistent_data->{him_msg} = [];
for my $msg ( $journey->messages ) {
if ( not $msg->{ueberschrift} ) {
push(
- @{ $data->{him_msg} },
+ @{ $ephemeral_data->{him_msg} },
{
header => q{},
prio => $msg->{prioritaet},
lead => $msg->{text}
}
);
+ push(
+ @{ $persistent_data->{him_msg} },
+ {
+ prio => $msg->{prioritaet},
+ lead => $msg->{text}
+ }
+ );
}
}
@@ -849,7 +867,8 @@ sub update_departure_dbris {
'in_transit',
{
real_departure => $stop->{rt_dep},
- data => $json->encode($data),
+ data => $json->encode($ephemeral_data),
+ user_data => $json->encode($persistent_data),
},
{
user_id => $uid,
@@ -939,21 +958,30 @@ sub update_arrival_dbris {
my $stop = $opt{stop};
my $json = JSON->new;
- my $res_h = $db->select( 'in_transit', ['data'], { user_id => $uid } )
- ->expand->hash;
- my $data = $res_h ? $res_h->{data} : {};
+ my $res_h = $db->select( 'in_transit', [ 'data', 'user_data' ],
+ { user_id => $uid } )->expand->hash;
+ my $ephemeral_data = $res_h ? $res_h->{data} : {};
+ my $persistent_data = $res_h ? $res_h->{user_data} : {};
- $data->{him_msg} = [];
+ $ephemeral_data->{him_msg} = [];
+ $persistent_data->{him_msg} = [];
for my $msg ( $journey->messages ) {
if ( not $msg->{ueberschrift} ) {
push(
- @{ $data->{him_msg} },
+ @{ $ephemeral_data->{him_msg} },
{
header => q{},
prio => $msg->{prioritaet},
lead => $msg->{text}
}
);
+ push(
+ @{ $persistent_data->{him_msg} },
+ {
+ prio => $msg->{prioritaet},
+ lead => $msg->{text}
+ }
+ );
}
}
@@ -991,7 +1019,8 @@ sub update_arrival_dbris {
{
real_arrival => $stop->{rt_arr},
route => $json->encode( [@route] ),
- data => $json->encode($data),
+ data => $json->encode($ephemeral_data),
+ user_data => $json->encode($persistent_data),
},
{
user_id => $uid,
diff --git a/templates/journey.html.ep b/templates/journey.html.ep
index c052190..e97c729 100644
--- a/templates/journey.html.ep
+++ b/templates/journey.html.ep
@@ -177,6 +177,16 @@
</td>
</tr>
% }
+ % if ($journey->{user_data}{him_msg} and @{$journey->{user_data}{him_msg}}) {
+ <tr>
+ <th scope="row">Meldungen</th>
+ <td>
+ % for my $message (@{$journey->{user_data}{him_msg} // []}) {
+ <i class="material-icons tiny"><%= ($message->{prio} and $message->{prio} eq 'HOCH') ? 'warning' : 'info' %></i> <%= $message->{header} %> <%= $message->{lead} %><br/>
+ % }
+ </td>
+ </tr>
+ % }
% if ($journey->{user_data} and $journey->{user_data}{comment}) {
<tr>
<th scope="row">Kommentar</th>