UNPKG

@ministryofjustice/hmpps-digital-prison-reporting-frontend

Version:

The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.

59 lines (52 loc) 1.75 kB
import { Request } from 'express' import dayjs from 'dayjs' import customParse from 'dayjs/plugin/customParseFormat' import { components } from '../../../types/api' import { DateFilterValue, FilterValue } from '../../_filters/types' import StartEndDatetUtils from '../start-end-date/utils' import { defaultFilterValue } from '../../../routes/journeys/request-report/filters/types' dayjs.extend(customParse) const setDateValueWithinMinMax = (filter: components['schemas']['FilterDefinition']) => { const { defaultValue, min, max } = filter let dateValue if (defaultValue) { dateValue = defaultValue if (min) dateValue = StartEndDatetUtils.compareMin(min, dateValue) if (max) dateValue = StartEndDatetUtils.compareMax(max, dateValue) } return dateValue } const setValueFromRequest = (filter: FilterValue, req: Request, prefix: string) => { const { min, max, mandatory } = <DateFilterValue>filter const dateValue = <string>req.query[`${prefix}${filter.name}`] let value = dateValue if (mandatory && !dateValue) { value = min || max || '1977-05-25' } return value } const setFilterValueFromDefault = (defaultValue: defaultFilterValue, filter: FilterValue) => { const value = defaultValue.value ? dayjs(<string>defaultValue.value, 'D/M/YYYY') .format('YYYY-MM-DD') .toString() : '' return { ...filter, value, } } const getFilterFromDefinition = (filter: components['schemas']['FilterDefinition'], filterData: FilterValue) => { return { ...filterData, value: setDateValueWithinMinMax(filter), min: filter.min, max: filter.max, } } export default { setDateValueWithinMinMax, getFilterFromDefinition, setValueFromRequest, setFilterValueFromDefault, }