Browse code

Add unit related tokens to notifications

Benjamin Roth authored on02/09/2025 16:37:20
Showing3 changed files
... ...
@@ -85,6 +85,8 @@ $GLOBALS['NOTIFICATION_CENTER']['NOTIFICATION_TYPE']['weinanlieferung']['wa_book
85 85
         'slot_anmerkungen',
86 86
         'booking_ncsent',
87 87
         'booking_behaelter',
88
+        'booking_unit_name',
89
+        'booking_unit_amount',
88 90
         'booking_sorten',
89 91
         'booking_ernteart',
90 92
         'booking_lage',
... ...
@@ -106,6 +108,8 @@ $GLOBALS['NOTIFICATION_CENTER']['NOTIFICATION_TYPE']['weinanlieferung']['wa_book
106 108
         'slot_anmerkungen',
107 109
         'booking_ncsent',
108 110
         'booking_behaelter',
111
+        'booking_unit_name',
112
+        'booking_unit_amount',
109 113
         'booking_sorten',
110 114
         'booking_ernteart',
111 115
         'booking_lage',
... ...
@@ -225,6 +229,8 @@ $GLOBALS['NOTIFICATION_CENTER']['NOTIFICATION_TYPE']['weinanlieferung']['wa_book
225 229
         'slot_anmerkungen',
226 230
         'booking_ncsent',
227 231
         'booking_behaelter',
232
+        'booking_unit_name',
233
+        'booking_unit_amount',
228 234
         'booking_sorten',
229 235
         'booking_ernteart',
230 236
         'booking_lage',
... ...
@@ -251,6 +257,8 @@ $GLOBALS['NOTIFICATION_CENTER']['NOTIFICATION_TYPE']['weinanlieferung']['wa_book
251 257
         'slot_anmerkungen',
252 258
         'booking_ncsent',
253 259
         'booking_behaelter',
260
+        'booking_unit_name',
261
+        'booking_unit_amount',
254 262
         'booking_sorten',
255 263
         'booking_ernteart',
256 264
         'booking_lage',
... ...
@@ -27,6 +27,7 @@ use vonRotenberg\WeinanlieferungBundle\Model\WeinanlieferungLageModel;
27 27
 use vonRotenberg\WeinanlieferungBundle\Model\WeinanlieferungLeseartModel;
28 28
 use vonRotenberg\WeinanlieferungBundle\Model\WeinanlieferungRebsorteModel;
29 29
 use vonRotenberg\WeinanlieferungBundle\Model\WeinanlieferungStandortModel;
30
+use vonRotenberg\WeinanlieferungBundle\Model\WeinanlieferungUnitModel;
30 31
 
31 32
 /**
32 33
  * @CronJob("*\/5 * * * *")
... ...
@@ -62,7 +63,7 @@ class SendBookingChangeNotificationJob
62 63
                 $time = Date::floorToMinute();
63 64
 
64 65
                 // Do we have updateable items
65
-                $Bookings = $this->db->executeQuery("SELECT r.id, r.pid, r.uid, r.behaelter, r.sorten, r.lage, r.ernteart, r.upload, r.nc_sent, s.date as 'slot_date', s.time as 'slot_time', s.behaelter as 'slot_behaelter', s.sorten as 'slot_sorten', s.ernteart as 'slot_ernteart', s.lage as 'slot_lage', s.anmerkungen as 'slot_anmerkungen', r.approved, r.approved_on FROM tl_vr_wa_reservation r INNER JOIN tl_vr_wa_slot s ON s.id = r.pid WHERE s.pid = ? AND r.nc_sent < r.tstamp AND s.published='1'",[$Location->id]);
66
+                $Bookings = $this->db->executeQuery("SELECT r.id, r.pid, r.uid, r.behaelter, r.sorten, r.lage, r.ernteart, r.upload, r.nc_sent, r.unit_id, r.unit_amount, s.date as 'slot_date', s.time as 'slot_time', s.behaelter as 'slot_behaelter', s.sorten as 'slot_sorten', s.ernteart as 'slot_ernteart', s.lage as 'slot_lage', s.anmerkungen as 'slot_anmerkungen', r.approved, r.approved_on FROM tl_vr_wa_reservation r INNER JOIN tl_vr_wa_slot s ON s.id = r.pid WHERE s.pid = ? AND r.nc_sent < r.tstamp AND s.published='1'",[$Location->id]);
66 67
 
67 68
                 // Load groups and notification models if we have news to share
68 69
                 if ($Bookings->rowCount() && ($Notification = Notification::findByPk($Location->nc_notification)) !== null)
... ...
@@ -72,6 +73,9 @@ class SendBookingChangeNotificationJob
72 73
                         // Get group members
73 74
                         $Member = MemberModel::findOneBy(array("id = ?", "login='1' AND (start='' OR start<='$time') AND (stop='' OR stop>'" . ($time + 60) . "') AND disable=''"), [$Booking['uid']]);
74 75
 
76
+                        // Get unit
77
+                        $Unit = WeinanlieferungUnitModel::findByPk($Booking['unit_id']);
78
+
75 79
                         // Send notification to member
76 80
                         if ($Member !== null)
77 81
                         {
... ...
@@ -136,6 +140,8 @@ class SendBookingChangeNotificationJob
136 140
                                 'slot_anmerkungen'   => $Booking['slot_anmerkungen'],
137 141
                                 'booking_ncsent'     => $Booking['nc_sent'],
138 142
                                 'booking_behaelter'  => $Booking['behaelter'],
143
+                                'booking_unit_name'  => $Unit !== null ? $Unit->title : 'Behälter',
144
+                                'booking_unit_amount'  => $Booking['unit_amount'],
139 145
                                 'booking_sorten'     => implode(', ',$arrSortenBooked),
140 146
                                 'booking_ernteart'   => implode(', ',$arrErnteartBooked),
141 147
                                 'booking_lage'       => implode(', ',$arrLageBooked),
... ...
@@ -27,6 +27,7 @@ use vonRotenberg\WeinanlieferungBundle\Model\WeinanlieferungLageModel;
27 27
 use vonRotenberg\WeinanlieferungBundle\Model\WeinanlieferungLeseartModel;
28 28
 use vonRotenberg\WeinanlieferungBundle\Model\WeinanlieferungRebsorteModel;
29 29
 use vonRotenberg\WeinanlieferungBundle\Model\WeinanlieferungStandortModel;
30
+use vonRotenberg\WeinanlieferungBundle\Model\WeinanlieferungUnitModel;
30 31
 
31 32
 /**
32 33
  * @CronJob("* * * * *")
... ...
@@ -63,7 +64,7 @@ class SendCheckInNotificationJob
63 64
                 // The key difference from SendBookingChangeNotificationJob is the WHERE clause:
64 65
                 // We look for r.checked_in = '1' AND r.checked_in_on > r.checked_in_nc_sent
65 66
                 $Bookings = $this->db->executeQuery(
66
-                    "SELECT r.id, r.pid, r.uid, r.behaelter, r.sorten, r.lage, r.ernteart, r.upload, r.nc_sent, r.checked_in_nc_sent,
67
+                    "SELECT r.id, r.pid, r.uid, r.behaelter, r.sorten, r.lage, r.ernteart, r.upload, r.nc_sent, r.checked_in_nc_sent, r.unit_id, r.unit_amount,
67 68
                     s.date as slot_date, s.time as slot_time, s.behaelter as slot_behaelter,
68 69
                     s.sorten as slot_sorten, s.ernteart as slot_ernteart, s.lage as slot_lage,
69 70
                     s.anmerkungen as slot_anmerkungen, r.approved, r.approved_on, r.checked_in,
... ...
@@ -83,6 +84,9 @@ class SendCheckInNotificationJob
83 84
                             [$Booking['uid']]
84 85
                         );
85 86
 
87
+                        // Get unit
88
+                        $Unit = WeinanlieferungUnitModel::findByPk($Booking['unit_id']);
89
+
86 90
                         // Send notification to member
87 91
                         if ($Member !== null) {
88 92
                             $arrSortenAvailable = [];
... ...
@@ -207,6 +211,8 @@ class SendCheckInNotificationJob
207 211
                                     'slot_anmerkungen'   => $Booking['slot_anmerkungen'],
208 212
                                     'booking_ncsent'     => $Booking['nc_sent'],
209 213
                                     'booking_behaelter'  => $Booking['behaelter'],
214
+                                    'booking_unit_name'  => $Unit !== null ? $Unit->title : 'Behälter',
215
+                                    'booking_unit_amount'  => $Booking['unit_amount'],
210 216
                                     'booking_sorten'     => implode(', ', $arrSortenBooked),
211 217
                                     'booking_ernteart'   => implode(', ', $arrErnteartBooked),
212 218
                                     'booking_lage'       => implode(', ', $arrLageBooked),