import BaseProvider from '~/services/data/BaseProvider' import Address from "~/components/Ui/Search/Address.vue"; import HydraParser from "~/services/data/HydraParser"; class PublicEventsProvider extends BaseProvider { protected normalize (e: any) : PublicEvent { e.address = { type: '', latitude: e.latitude, longitude: e.longitude, streetAddress: e.streetAddress, postalCode: e.postalCode, addressCity: e.addressCity, country: '' } as Address // s.categories = s.categories.split() delete e['@id'] delete e['@type'] delete e.latitude delete e.longitude delete e.streetAddress delete e.postalCode delete e.addressCity return e } async getBy ( name: string | null = null, organizationId: number | null = null, dateMin: string | null = null, dateMax: string | null = null, city: string | null = null, page: number = 1, itemsPerPage = 20 ): Promise> { const query = new URLSearchParams(); if (name !== null) { query.append('name', name) } if (organizationId !== null) { query.append('organizationId', String(organizationId)) } if (dateMin !== null && dateMin !== '') { query.append('datetimeStart[after]', dateMin) } if (dateMax !== null && dateMax !== '') { query.append('datetimeEnd[before]', dateMax) } if (city !== null) { query.append('city', city) } if (page !== null) { query.append('page', `${page}`) } if (itemsPerPage !== null) { query.append('itemsPerPage', `${itemsPerPage}`) } let url = `/api/public/events` if (query) { url += `?${query}` } return await this.get(url).then((res) => { return HydraParser.parseCollection(res, this.normalize) }) } async getById (eventUuid: number): Promise { return await this.get( `/api/public/events/${eventUuid}` ).then((s) => { return this.normalize(s) }) } } export default PublicEventsProvider