// tslint:disable:no-console
import * as mongoose from 'mongoose';

import { chevre } from '../../../lib/index';

const project = { id: String(process.env.PROJECT_ID) };

async function main() {
    await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });

    const coaAuthClient = new (await chevre.loadCOA()).auth.RefreshToken({
        endpoint: '',
        refreshToken: '',
        useFetch: true
    });

    const { reservations } = await (await chevre.service.reserve.createService()).searchByOrder({
        limit: 10,
        page: 1,
        project: { id: project.id },
        orderNumber: 'CIN3-0760465-8981560',
        typeOf: chevre.factory.reservationType.EventReservation
    })({
        acceptedOffer: await chevre.repository.AcceptedOffer.createInstance(mongoose.connection),
        order: await chevre.repository.Order.createInstance(mongoose.connection),
        reservation: await chevre.repository.Reservation.createInstance(mongoose.connection),
        reserveService: new (await chevre.loadCOA()).service.Reserve(
            {
                endpoint: '',
                auth: coaAuthClient
            },
            { timeout: 20000 }
        )
    });

    console.log(reservations);
    console.log(reservations.length, 'reservations found');
}

main()
    .then(console.log)
    .catch(console.error);
