Source: controllers/datasetController.js

'use strict'

import PageController from './pageController.js'

// ToDo: we shouldn't hardcode these values here, should we get them from the API
//  maybe take from specification
import { dataSubjects, datasets, availableDatasets } from '../utils/utils.js'

/**
 * @param {Object} req
 * @returns {boolean}
 */
export function requiresGeometryTypeToBeSelected (req) {
  const dataset = req.body.dataset
  const dataSet = datasets.get(dataset)
  return dataSet?.requiresGeometryTypeSelection || false
}

/**
 * @param {Object} req - The HTTP request object.
 * @returns {boolean}
 */
export function requiresGeometryTypeToBeSelectedViaDeepLink (req) {
  const { dataset } = req.query
  const dataSet = datasets.get(dataset)
  return dataSet?.requiresGeometryTypeSelection || false
}

class DatasetController extends PageController {
  locals (req, res, next) {
    req.form.options.datasetItems = availableDatasets(dataSubjects)
    super.locals(req, res, next)
  }

  // we shouldn't need this here but as we dont currently set the datasubject, we need to do so here
  post (req, res, next) {
    const dataset = req.body.dataset
    const { dataSubject } = datasets.get(dataset) || { dataSubject: '' }
    req.body['data-subject'] = dataSubject
    super.post(req, res, next)
  }
}

export default DatasetController