EventsProvider.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import BaseProvider from '~/services/data/BaseProvider'
  2. import Address from "~/components/Ui/Search/Address.vue";
  3. import HydraParser from "~/services/data/HydraParser";
  4. class PublicEventsProvider extends BaseProvider {
  5. protected normalize (e: any) : PublicEvent {
  6. e.address = {
  7. type: '',
  8. latitude: e.latitude,
  9. longitude: e.longitude,
  10. streetAddress: e.streetAddress,
  11. postalCode: e.postalCode,
  12. addressCity: e.addressCity,
  13. country: ''
  14. } as Address
  15. // s.categories = s.categories.split()
  16. delete e['@id']
  17. delete e['@type']
  18. delete e.latitude
  19. delete e.longitude
  20. delete e.streetAddress
  21. delete e.postalCode
  22. delete e.addressCity
  23. return e
  24. }
  25. async getBy (
  26. name: string | null = null,
  27. organizationId: number | null = null,
  28. dateMin: string | null = null,
  29. dateMax: string | null = null,
  30. city: string | null = null,
  31. page: number = 1,
  32. itemsPerPage = 20
  33. ): Promise<HydraCollection<PublicEvent>> {
  34. const query = new URLSearchParams();
  35. if (name !== null) {
  36. query.append('name', name)
  37. }
  38. if (organizationId !== null) {
  39. query.append('organizationId', String(organizationId))
  40. }
  41. if (dateMin !== null && dateMin !== '') {
  42. query.append('datetimeStart[after]', dateMin)
  43. }
  44. if (dateMax !== null && dateMax !== '') {
  45. query.append('datetimeEnd[before]', dateMax)
  46. }
  47. if (city !== null) {
  48. query.append('city', city)
  49. }
  50. if (page !== null) {
  51. query.append('page', `${page}`)
  52. }
  53. if (itemsPerPage !== null) {
  54. query.append('itemsPerPage', `${itemsPerPage}`)
  55. }
  56. let url = `/api/public/events`
  57. if (query) {
  58. url += `?${query}`
  59. }
  60. return await this.get(url).then((res) => {
  61. return HydraParser.parseCollection(res, this.normalize)
  62. })
  63. }
  64. async getById (eventUuid: number): Promise<PublicEvent> {
  65. return await this.get(
  66. `/api/public/events/${eventUuid}`
  67. ).then((s) => {
  68. return this.normalize(s)
  69. })
  70. }
  71. }
  72. export default PublicEventsProvider