32 lines
1.1 KiB
TypeScript
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};
|
|
}
|
|
|
|
}
|