// 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 result = await (await chevre.service.transaction.createService()).returnOrder.start({
        project: { id: project.id, typeOf: chevre.factory.organizationType.Project },
        expiresInSeconds: 60,
        agent: { id: 'xxx', typeOf: chevre.factory.creativeWorkType.WebApplication },
        object: {
            order: [{
                confirmationNumber: '60050',
                orderNumber: 'CIN0-2033389-8046472'
            }],
            reason: chevre.factory.transaction.returnOrder.Reason.Customer
        },
        seller: {
            id: 'xxx'
        }
    })({
        acceptedOffer: await chevre.repository.AcceptedOffer.createInstance(mongoose.connection),
        event: await chevre.repository.Event.createInstance(mongoose.connection),
        merchantReturnPolicy: await chevre.repository.MerchantReturnPolicy.createInstance(mongoose.connection),
        offer: await chevre.repository.Offer.createInstance(mongoose.connection),
        offerItemCondition: await chevre.repository.OfferItemCondition.createInstance(mongoose.connection),
        order: await chevre.repository.Order.createInstance(mongoose.connection),
        project: await chevre.repository.Project.createInstance(mongoose.connection),
        reservation: await chevre.repository.Reservation.createInstance(mongoose.connection),
        seller: await chevre.repository.Seller.createInstance(mongoose.connection),
        sellerReturnPolicy: await chevre.repository.SellerReturnPolicy.createInstance(mongoose.connection),
        transaction: await chevre.repository.Transaction.createInstance(mongoose.connection)
    });
    console.log(result);
}

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