import moment from 'moment';
import {
getPlannerDayFood,
getPlannerDayFoodStats,
} from '../actions/resources/plannerFoodSummaryActions';
import { getPlannerDayActivity } from '../actions/resources/plannerActivitySummaryActions';
import { apiDayDateFormat } from './dateUtils';
/**
* Returns a promise to batch load a set of food planner days
* Used when switch to a new day in the planner or on first load of the page
*
* @param {string} Date The at which you want the days to be fetched from
* @returns {array} an array of promise which needs to be wrapped in a Promise.All
* @example 2018-07-20 would return food planner days for
* [2018-07-18, 2018-07-19, 2018-07-20, 2018-07-21, 2018-07-22]
*/
const batchLoadFoodPlannerDays = (date, dispatch) => {
const defaultDates = [-2, -1, 0, 1, 2].map(day =>
moment(date)
.add(day, 'days')
.format(apiDayDateFormat),
);
const promises = [];
defaultDates.forEach(day => {
promises.push(dispatch(getPlannerDayFood(day)));
promises.push(dispatch(getPlannerDayFoodStats(day)));
});
const activityDateRange = {
start: moment(date)
.subtract(3, 'days')
.format(apiDayDateFormat),
end: moment(date)
.add(3, 'days')
.format(apiDayDateFormat),
};
promises.push(dispatch(getPlannerDayActivity(activityDateRange, true)));
return promises;
};
export default batchLoadFoodPlannerDays;