backend/services/module-booking/functions/crons/booking.cron.service.ts
2025-05-14 21:45:16 +02:00

32 lines
1.1 KiB
TypeScript

import { StatusEnum } from "@seed/interfaces/components";
import { SuccessResponse } from "@seed/interfaces/response";
import DB from "@seed/services/database/DBService";
import _ from "lodash";
import { DateTime } from "luxon";
import BookingModel from "../bookings/bookings.engine.model";
export class BookingCronService {
async removeDrafts(): Promise<SuccessResponse> {
const bookings = await new BookingModel().getAll({ query:{
'createdAt' : {"$lte": DateTime.utc().minus({minutes:30}).toJSDate()},
'status': StatusEnum.draft,
}})
bookings.forEach((element,index) => {
bookings[index].status = StatusEnum.expired;
});
if (bookings.length > 0) {
// Move them to the other collection
await (await DB.getInstance()).db.collection('bookings.archives').insertMany(bookings);
const bookingIds = _.map(bookings,'_id');
await (await new BookingModel().db()).deleteMany({_id:{'$in':bookingIds}});
}
return {success:true};
}
}