// tslint:disable:no-console
import * as moment from 'moment';
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 taskRepo = await chevre.repository.Task.createInstance(mongoose.connection);
    const sendGridCredentials = await chevre.credentials.SendGrid.createInstance({
        apiKey: <string>process.env.SENDGRID_API_KEY,
        alert: {
            sender: {
                name: 'xxx',
                email: 'xxx'
            },
            toRecipient: [
                { email: 'xxx' }
            ]
        }
    });
    const chevreSettings = new chevre.settings.Settings(<any>{
        abortedTasksWithoutReport: [
            chevre.factory.taskName.ImportEventCapacitiesFromCOA,
            chevre.factory.taskName.ImportEventsFromCOA,
            chevre.factory.taskName.ImportOffersFromCOA
        ]
    });

    const result = await (await chevre.service.task.createService()).notifyAbortedTasksByEmail({
        dateAbortedGte: moment()
            // tslint:disable-next-line:no-magic-numbers
            .add(-10, 'days')
            .toDate()
    })(
        {
            task: taskRepo
        },
        chevreSettings,
        {
            sendGrid: sendGridCredentials
        }
    );
    // tslint:disable-next-line:no-null-keyword
    console.dir(result, { depth: null });
}

main()
    .then(console.log)
    .catch((error) => {
        // tslint:disable-next-line:no-null-keyword
        console.dir(error, { depth: null });
    });
