a helper method to process datetime information for other requests

        :param timezone_offset: integer with timezone offset from user profile details
        :param first_date: string with ISO date from user profile details firstDate
        :param start: float with starting datetime for daily summaries
        :param end: float with ending datetime for daily summaries
        :param title: string with request method name
        :param track_points: [optional] boolean to provide detailed tracking of user movement
        :return: dictionary of parameters to add to request

def _process_dates(self, timezone_offset, first_date, start, end, title, track_points=False):

        ''' a helper method to process datetime information for other requests

        :param timezone_offset: integer with timezone offset from user profile details
        :param first_date: string with ISO date from user profile details firstDate
        :param start: float with starting datetime for daily summaries
        :param end: float with ending datetime for daily summaries
        :param title: string with request method name
        :param track_points: [optional] boolean to provide detailed tracking of user movement
        :return: dictionary of parameters to add to request
        '''

    # validate inputs
        input_fields = {
            'timezone_offset': timezone_offset,
            'first_date': first_date,
            'start': start,
            'end': end
        }
        for key, value in input_fields.items():
            object_title = '%s(%s=%s)' % (title, key, str(value))
            self.fields.validate(value, '.%s' % key, object_title)

    # validate datetimes
        max_time = 30 * 24 * 60 * 60 + 1
        max_days = '31'
        if track_points:
            max_days = '7'
            max_time = 6 * 24 * 60 * 60 + 1
        from time import time
        end_ISO = ''
        start_ISO = ''
        if end:
            if end > time():
                raise ValueError('%s(end=%s) datetime must not be in the future.' % (title, end))
            end_ISO = self._convert_dt(end, timezone_offset)
        if start:
            start_ISO = self._convert_dt(start, timezone_offset)
            if start_ISO < first_date:
                raise ValueError("%s(start=%s) datetime must not precede user signup first date." % (title, start))
        if start and end:
            if start > end:
                raise ValueError('%s(start=%s) must be a datetime before end=%s.' % (title, start, end))
            if end - start > max_time:
                raise ValueError('%s(start=%s, end=%s) must not be more than %s days apart.' % (title, start, end, max_days))

    # construct request parameters
        request_parameters = {}
        if not start_ISO and not end_ISO:
            request_parameters['pastDays'] = max_days
        else:
            if start_ISO and not end_ISO:
                end_dt = start + max_time
                current_ISO = self._convert_dt(time(), timezone_offset)
                end_ISO = self._convert_dt(end_dt, timezone_offset)
                if current_ISO < end_ISO:
                    end_ISO = current_ISO
            elif end_ISO and not start_ISO:
                start_dt = end - max_time
                start_ISO = self._convert_dt(start_dt, timezone_offset)
                if start_ISO < first_date:
                    start_ISO = first_date
            request_parameters['from'] = start_ISO
            request_parameters['to'] = end_ISO

        return request_parameters