import moment from 'moment'; import { eFilterTime } from '../../enums'; export class TimeFilterHelper { static convertTimeToDate( period: string, year?: number ): { fromDate: string; toDate: string } { let today: moment.Moment; if (year) { today = moment().year(year).startOf(eFilterTime.DAY); } else { today = moment().startOf(eFilterTime.DAY); } let fromDate: moment.Moment = moment(), toDate: moment.Moment = moment(); switch (period.toLowerCase()) { case eFilterTime.TODAY: fromDate = moment(today); toDate = moment(today); break; case eFilterTime.YESTERDAY: fromDate = moment(today).subtract(1, eFilterTime.DAYS); toDate = moment(today).subtract(1, eFilterTime.DAYS); break; case eFilterTime.THIS_WEEK: fromDate = moment(today).startOf(eFilterTime.WEEK); toDate = moment(today).endOf(eFilterTime.WEEK); break; case eFilterTime.LAST_WEEK: fromDate = moment(today) .subtract(1, eFilterTime.WEEKS) .startOf(eFilterTime.WEEK); toDate = moment(today) .subtract(1, eFilterTime.WEEKS) .endOf(eFilterTime.WEEK); break; case eFilterTime.NEXT_WEEK: fromDate = moment(today) .add(1, eFilterTime.WEEKS) .startOf(eFilterTime.WEEK); toDate = moment(today) .add(1, eFilterTime.WEEKS) .endOf(eFilterTime.WEEK); break; case eFilterTime.ONE_WEEK: fromDate = moment(today).subtract(1, eFilterTime.WEEKS); toDate = moment(today); break; case eFilterTime.ONE_WEEK_FUTURE: fromDate = moment(today); toDate = moment(today).add(1, eFilterTime.WEEKS); break; case eFilterTime.THIS_MONTH: fromDate = moment(today).startOf(eFilterTime.MONTH); toDate = moment(today).endOf(eFilterTime.MONTH); break; case eFilterTime.LAST_MONTH: fromDate = moment(today) .subtract(1, eFilterTime.MONTHS) .startOf(eFilterTime.MONTH); toDate = moment(today) .subtract(1, eFilterTime.MONTHS) .endOf(eFilterTime.MONTH); break; case eFilterTime.ONE_MONTH_FUTURE: fromDate = moment(today); toDate = moment(today).add(1, eFilterTime.MONTHS); break; case eFilterTime.ONE_MONTH: fromDate = moment(today).subtract(1, eFilterTime.MONTHS); toDate = moment(today); break; case eFilterTime.NEXT_MONTH: fromDate = moment(today) .add(1, eFilterTime.MONTHS) .startOf(eFilterTime.MONTH); toDate = moment(today) .add(1, eFilterTime.MONTHS) .endOf(eFilterTime.MONTH); break; case eFilterTime.THREE_MONTHS: fromDate = moment(today).subtract(3, eFilterTime.MONTHS); toDate = moment(today); break; case eFilterTime.THREE_MONTHS_FUTURE: fromDate = moment(today); toDate = moment(today) .add(3, eFilterTime.MONTHS) .endOf(eFilterTime.MONTH); break; case eFilterTime.THIS_QUARTER: fromDate = moment(today).startOf(eFilterTime.QUARTER); toDate = moment(today).endOf(eFilterTime.QUARTER); break; case eFilterTime.LAST_QUARTER: fromDate = moment(today) .subtract(1, eFilterTime.QUARTERS) .startOf(eFilterTime.QUARTER); toDate = moment(today) .subtract(1, eFilterTime.QUARTERS) .endOf(eFilterTime.QUARTER); break; case eFilterTime.NEXT_QUARTER: fromDate = moment(today) .add(1, eFilterTime.QUARTERS) .startOf(eFilterTime.QUARTER); toDate = moment(today) .add(1, eFilterTime.QUARTERS) .endOf(eFilterTime.QUARTER); break; case eFilterTime.THIS_YEAR: fromDate = moment(today).startOf(eFilterTime.YEAR); toDate = moment(today).endOf(eFilterTime.YEAR); break; case eFilterTime.ONE_YEAR_FUTURE: fromDate = moment(today); toDate = moment(today).add(1, eFilterTime.YEARS); break; case eFilterTime.ONE_YEAR: fromDate = moment(today).subtract(1, eFilterTime.YEARS); toDate = moment(today); break; case eFilterTime.LAST_YEAR: case eFilterTime.YEAR_BEFORE_LAST: fromDate = moment(today).startOf(eFilterTime.YEAR); toDate = moment(today).endOf(eFilterTime.YEAR); break; default: break; } const fromDateFormatted = fromDate.format( eFilterTime.MOMENT_DATE_FORMAT ); const toDateFormatted = toDate.format(eFilterTime.MOMENT_DATE_FORMAT); return { fromDate: fromDateFormatted, toDate: toDateFormatted }; } }