import { formatDate } from './common';

const quarterEndDate = {
    1: '03-31',
    2: '06-30',
    3: '09-30',
    4: '12-31'
};

const getDefaultNewStmtDate = request => `${Number(request.newYr)}-${quarterEndDate[Number(request.newQtr)]}`;

const getPeriodDate = request => {

    if (!request.latestAvlDate) {
        return { newStmtDate: getDefaultNewStmtDate(request) };
    }

    const latestAvlDate = new Date(request.latestAvlDate);
    const response: any = {};

    if (request.periodTp === 'LTM' && request.latestAvlYr !== 0 && request.latestAvlQtr !== 0) {
        const avlYr = (Number(request.newYr) - request.latestAvlYr) - 1;
        const qtr = Number(request.newQtr) + (4 - request.latestAvlQtr) + (avlYr * 4);
        const requestDate = new Date(latestAvlDate.setMonth(latestAvlDate.getMonth() + qtr * 3));
        response.newStmtDate = formatDate(requestDate, 'yyyy-MM-dd');
    } else if (request.periodTp === 'FY') {
        const newDate = new Date(Number(request.newYr), latestAvlDate.getMonth(), latestAvlDate.getDate());
        response.newStmtDate = formatDate(newDate, 'yyyy-MM-dd');
    } else {
        response.newStmtDate = getDefaultNewStmtDate(request);
    }

    return response;
};

export default getPeriodDate;
