// Calendar API parameters
const baseUrl = process.env.API_ROOT + '/api/v2/calendar/';
const limit = 50;
const key = '05cb59286aef4c7eb3406dcb7d7045fb';
const type = false;

// Create calendar api url from supplied parameters
function calendarUrl(parameters) {
  let url = baseUrl;

  url += parameters.calendarType || '';
  url += '?token=' + key;
  url += '&page=' + parameters.page || 0;
  url += '&pagesize=' + limit;
  url += '&parameters[display]=flat';
  if (parameters.symbol || parameters.symbols) {
    // Can be comma-seperated string
    url += '&parameters[tickers]=' + parameters.symbol || parameters.symbols;
  }

  if (parameters.dateStart || parameters.dateEnd) {
    if (!parameters.dateStart) {
      url += '&parameters[date_to]=' + parameters.dateEnd;
    } else if (!parameters.dateEnd) {
      url += '&parameters[date_from]=' + parameters.dateStart;

    // if both dateStart && dateEnd
    } else {
      if (parameters.dateStart === parameters.dateEnd) {
        url += '&parameters[date]=' + parameters.dateStart;
      } else {
        url += '&parameters[date_from]=' + parameters.dateStart;
        url += '&parameters[date_to]=' + parameters.dateEnd;
      }
    }

    // Ensure that the correct date field is used
    if (parameters.calendarType === 'dividends') {
      url += '&parameters[date_sort]=ex';
    }
  }

  return url;
}

// Fetch events from calendar endpoint
export function fetchCalendar(parameters) {
  return fetch(calendarUrl(parameters), {
    headers: {
      'accept': 'application/json',
      'x-device-key': localStorage.authKey,
      'content-type': 'application/json'
    },
    method: 'get'
  })
  .then(response => response.json());
}
