(function () { "use strict"; angular.module('shared') .service('DaysAgoDateService', ['GenericDateService', function(GenericDateService) { var dateRanges = {}; var selectedDateRangeName = ""; function initDateRanges(mostRecentRollupDate) { var sevenDaysAgo = new Date(mostRecentRollupDate.getTime() - daysToMilliseconds(6)); var thirtyDaysAgo = new Date(mostRecentRollupDate.getTime() - daysToMilliseconds(29)); var ninetyDaysAgo = new Date(mostRecentRollupDate.getTime() - daysToMilliseconds(89)); dateRanges['7'] = { 'name' : '7', 'displayName' : 'Last 7 days', 'start' : sevenDaysAgo, 'end' : mostRecentRollupDate }; dateRanges['30'] = { 'name' : '30', 'displayName' : 'Last 30 days', 'start' : thirtyDaysAgo, 'end' : mostRecentRollupDate }; dateRanges['90'] = { 'name' : '90', 'displayName' : 'Last 90 days', 'start' : ninetyDaysAgo, 'end' : mostRecentRollupDate }; setSelectedDateRange('30'); } function getDateRanges() { return dateRanges; } function getSelectedDateRange() { return getDateRanges()[selectedDateRangeName]; } function setSelectedDateRange(dateRangeName) { selectedDateRangeName = dateRangeName; var startDate = $j.datepicker.formatDate("mm/dd/yy", dateRanges[dateRangeName].start); var endDate = $j.datepicker.formatDate("mm/dd/yy", dateRanges[dateRangeName].end); GenericDateService.setStartDate(startDate); GenericDateService.setStopDate(endDate); } function getStartDateString() { var startDate; if (GenericDateService.getStartDate()) { startDate = GenericDateService.getStrippedStartDate(true); } return startDate; } function getEndDateString() { var endDate; if (GenericDateService.getStopDate()) { endDate = GenericDateService.getStrippedStopDate(true); } return endDate; } function daysToMilliseconds(days) { return days * 24 * 60 * 60 * 1000; } function getSelectedDateRangeParamName() { return 'last' + getSelectedDateRange()['name']; } function getNumDaysBetweenStartDateAndEndDate() { var startDate = new Date(getStartDateString()); var endDate = new Date(getEndDateString()); var numMillisecondsOneDay = daysToMilliseconds(1); return Math.round((endDate - startDate) / numMillisecondsOneDay); } return { initDateRanges: initDateRanges, getDateRanges: getDateRanges, setSelectedDateRange: setSelectedDateRange, getSelectedDateRange: getSelectedDateRange, getStartDateString: getStartDateString, getEndDateString: getEndDateString, getSelectedDateRangeParamName: getSelectedDateRangeParamName, getNumDaysBetweenStartDateAndEndDate: getNumDaysBetweenStartDateAndEndDate } }]); })();