nodebb-plugin-onekite-calendar 2.0.87 → 2.0.88

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/lib/admin.js +30 -6
  2. package/package.json +1 -1
package/lib/admin.js CHANGED
@@ -180,6 +180,19 @@ admin.approveReservation = async function (req, res) {
180
180
 
181
181
  await dbLayer.saveReservation(r);
182
182
 
183
+ // Audit
184
+ try {
185
+ const year = new Date().getFullYear();
186
+ await dbLayer.addAuditEntry({
187
+ ts: Date.now(), year, action: 'reservation_approved',
188
+ targetType: 'reservation', targetId: String(rid),
189
+ reservationUid: Number(r.uid) || 0,
190
+ reservationUsername: String(r.username || ''),
191
+ actorUid: req.uid || 0,
192
+ actorUsername: r.approvedByUsername || '',
193
+ });
194
+ } catch (e) {}
195
+
183
196
  // Real-time refresh for all viewers
184
197
  realtime.emitCalendarUpdated({ kind: 'reservation', action: 'approved', rid: String(rid), status: r.status });
185
198
 
@@ -259,7 +272,6 @@ admin.markReservationPaid = async function (req, res) {
259
272
  const requesterUid = parseInt(r.uid, 10);
260
273
  const requester = await user.getUserFields(requesterUid, ['username']);
261
274
  if (requesterUid) {
262
- const { sendEmail, formatFR, buildCalendarLinks } = shared;
263
275
  await sendEmail('calendar-onekite_paid', requesterUid, 'Location matériel - Paiement reçu', {
264
276
  uid: requesterUid,
265
277
  username: requester && requester.username ? requester.username : '',
@@ -294,6 +306,19 @@ admin.refuseReservation = async function (req, res) {
294
306
  r.refusedReason = String((req.body && (req.body.reason || req.body.refusedReason || req.body.refuseReason)) || '').trim();
295
307
  await dbLayer.saveReservation(r);
296
308
 
309
+ // Audit
310
+ try {
311
+ const year = new Date().getFullYear();
312
+ await dbLayer.addAuditEntry({
313
+ ts: Date.now(), year, action: 'reservation_refused',
314
+ targetType: 'reservation', targetId: String(rid),
315
+ reservationUid: Number(r.uid) || 0,
316
+ reservationUsername: String(r.username || ''),
317
+ actorUid: req.uid || 0,
318
+ refusedReason: r.refusedReason || '',
319
+ });
320
+ } catch (e) {}
321
+
297
322
  // Real-time refresh for all viewers
298
323
  realtime.emitCalendarUpdated({ kind: 'reservation', action: 'refused', rid: String(rid), status: r.status });
299
324
 
@@ -327,12 +352,11 @@ admin.purgeByYear = async function (req, res) {
327
352
  const endTs = new Date(Date.UTC(y + 1, 0, 1)).getTime() - 1;
328
353
 
329
354
  const ids = await dbLayer.listReservationIdsByStartRange(startTs, endTs, 100000);
355
+ const rows = ids && ids.length ? await dbLayer.getReservations(ids) : [];
330
356
  let removed = 0;
331
- for (const rid of ids) {
332
- const r = await dbLayer.getReservation(rid);
333
- if (!r) continue;
334
-
335
- await dbLayer.removeReservation(rid);
357
+ for (let i = 0; i < ids.length; i++) {
358
+ if (!rows[i]) continue;
359
+ await dbLayer.removeReservation(ids[i]);
336
360
  removed++;
337
361
  }
338
362
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-plugin-onekite-calendar",
3
- "version": "2.0.87",
3
+ "version": "2.0.88",
4
4
  "description": "FullCalendar-based equipment reservation workflow with admin approval & HelloAsso payment for NodeBB",
5
5
  "main": "library.js",
6
6
  "license": "MIT",