<?php

namespace Planaday\Entities\Course\PostRequest;

use Planaday\Utility\DataGrouping\PostFieldEnum;

class CourseSearchFieldEnum extends PostFieldEnum {
	public const IDS = 'pad-course-ids';
	public const CODES = 'pad-course-codes';
	public const NAME = 'pad-course-name';
	public const DESCRIPTION = 'pad-course-description';
	public const TYPES = 'pad-course-types';
	public const STATUSES = 'pad-course-statuses';
	public const DAY_PART_AMOUNT_MIN = 'pad-course-day-part-amount-min';
	public const DAY_PART_AMOUNT_MAX = 'pad-course-day-part-amount-max';
	public const DAY_PART_NAME = 'pad-course-day-part-name';
	public const DAY_PART_DESCRIPTION = 'pad-course-day-part-description';
	public const LOCATIONS = 'pad-course-locations';
	public const INSTRUCTORS = 'pad-course-instructors';
	public const DAY_PART_LABELS = 'pad-course-day-part-labels';
	public const DATE_MIN = 'pad-course-date-min';
	public const DATE_MAX = 'pad-course-date-max';
	public const END_DATE_MIN = 'pad-course-end-date-min';
	public const END_DATE_MAX = 'pad-course-end-date-max';
	public const START_TIME_MIN = 'pad-course-start-time-min';
	public const START_TIME_MAX = 'pad-course-start-time-max';
	public const END_TIME_MIN = 'pad-course-end-time-min';
	public const END_TIME_MAX = 'pad-course-end-time-max';
	public const USERS_MIN_MIN = 'pad-course-users-min-min';
	public const USERS_MIN_MAX = 'pad-course-users-min-max';
	public const USERS_MAX_MIN = 'pad-course-users-max-min';
	public const USERS_MAX_MAX = 'pad-course-users-max-max';
	public const USERS_SCHEDULED_MIN = 'pad-course-users-scheduled-min';
	public const USERS_SCHEDULED_MAX = 'pad-course-users-scheduled-max';
	public const USERS_AVAILABLE_MIN = 'pad-course-users-available-min';
	public const USERS_AVAILABLE_MAX = 'pad-course-users-available-max';
	public const USERS_OPTIONS_MIN = 'pad-course-users-options-min';
	public const USERS_OPTIONS_MAX = 'pad-course-users-options-max';
	public const COST_MIN = 'pad-course-cost-min';
	public const COST_MAX = 'pad-course-cost-max';
	public const COURSE_COST_MIN = 'pad-course-course-cost-min';
	public const COURSE_COST_MAX = 'pad-course-course-cost-max';
	public const VAT_MIN = 'pad-course-vat-min';
	public const VAT_MAX = 'pad-course-vat-max';
	public const VAT_CODES = 'pad-course-vat-codes';
	public const COST_REMARK = 'pad-course-cost-remark';
	public const TEMPLATE_IDS = 'pad-course-template-ids';
	public const LEVELS = 'pad-course-levels';
	public const LEVEL_DESCRIPTION = 'pad-course-level-description';
	public const IS_START_GUARANTEED = 'pad-course-is-start-guaranteed';
	public const IS_MONEY_BACK_GUARANTEED = 'pad-course-is-money-back-guaranteed';
	public const HAS_E_LEARNING = 'pad-course-has-e-learning';
	public const HAS_CODE95 = 'pad-course-has-code95';
	public const HAS_SOOB = 'pad-course-has-soob';
	public const HAS_STAP = 'pad-course-has-stap';
	public const IS_STAP_ONLY = 'pad-course-is-stap-only';
	public const LABELS = 'pad-course-labels';
	public const LANGUAGES = 'pad-course-languages';
	public const COMPANIES = 'pad-course-companies';
	public const CITIES = 'pad-course-cities';

	public static function getEnumArray(): array {
		return [
			'IDS'                      => self::IDS,
			'CODES'                    => self::CODES,
			'NAME'                     => self::NAME,
			'DESCRIPTION'              => self::DESCRIPTION,
			'TYPES'                    => self::TYPES,
			'STATUSES'                 => self::STATUSES,
			'DAY_PART_AMOUNT_MIN'      => self::DAY_PART_AMOUNT_MIN,
			'DAY_PART_AMOUNT_MAX'      => self::DAY_PART_AMOUNT_MAX,
			'DAY_PART_NAME'            => self::DAY_PART_NAME,
			'DAY_PART_DESCRIPTION'     => self::DAY_PART_DESCRIPTION,
			'LOCATIONS'                => self::LOCATIONS,
			'INSTRUCTORS'              => self::INSTRUCTORS,
			'DAY_PART_LABELS'          => self::DAY_PART_LABELS,
			'DATE_MIN'                 => self::DATE_MIN,
			'DATE_MAX'                 => self::DATE_MAX,
			'END_DATE_MIN'             => self::END_DATE_MIN,
			'END_DATE_MAX'             => self::END_DATE_MAX,
			'START_TIME_MIN'           => self::START_TIME_MIN,
			'START_TIME_MAX'           => self::START_TIME_MAX,
			'END_TIME_MIN'             => self::END_TIME_MIN,
			'END_TIME_MAX'             => self::END_TIME_MAX,
			'USERS_MIN_MIN'            => self::USERS_MIN_MIN,
			'USERS_MIN_MAX'            => self::USERS_MIN_MAX,
			'USERS_MAX_MIN'            => self::USERS_MAX_MIN,
			'USERS_MAX_MAX'            => self::USERS_MAX_MAX,
			'USERS_SCHEDULED_MIN'      => self::USERS_SCHEDULED_MIN,
			'USERS_SCHEDULED_MAX'      => self::USERS_SCHEDULED_MAX,
			'USERS_AVAILABLE_MIN'      => self::USERS_AVAILABLE_MIN,
			'USERS_AVAILABLE_MAX'      => self::USERS_AVAILABLE_MAX,
			'USERS_OPTIONS_MIN'        => self::USERS_OPTIONS_MIN,
			'USERS_OPTIONS_MAX'        => self::USERS_OPTIONS_MAX,
			'COST_MIN'                 => self::COST_MIN,
			'COST_MAX'                 => self::COST_MAX,
			'COURSE_COST_MIN'          => self::COURSE_COST_MIN,
			'COURSE_COST_MAX'          => self::COURSE_COST_MAX,
			'VAT_MIN'                  => self::VAT_MIN,
			'VAT_MAX'                  => self::VAT_MAX,
			'VAT_CODES'                => self::VAT_CODES,
			'COST_REMARK'              => self::COST_REMARK,
			'TEMPLATE_IDS'             => self::TEMPLATE_IDS,
			'LEVELS'                   => self::LEVELS,
			'LEVEL_DESCRIPTION'        => self::LEVEL_DESCRIPTION,
			'IS_START_GUARANTEED'      => self::IS_START_GUARANTEED,
			'IS_MONEY_BACK_GUARANTEED' => self::IS_MONEY_BACK_GUARANTEED,
			'HAS_E_LEARNING'           => self::HAS_E_LEARNING,
			'HAS_CODE95'               => self::HAS_CODE95,
			'HAS_SOOB'                 => self::HAS_SOOB,
			'HAS_STAP'                 => self::HAS_STAP,
			'IS_STAP_ONLY'             => self::IS_STAP_ONLY,
			'LABELS'                   => self::LABELS,
			'LANGUAGES'                => self::LANGUAGES,
			'COMPANIES'                => self::COMPANIES,
			'CITIES'                   => self::CITIES,
		];
	}
}