EventsProvider.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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.city,
  13. country: ''
  14. } as Address
  15. delete e['@id']
  16. delete e['@type']
  17. delete e.latitude
  18. delete e.longitude
  19. delete e.streetAddress
  20. delete e.postalCode
  21. delete e.city
  22. return e
  23. }
  24. async getBy (
  25. name: string | null = null,
  26. organizationId: number | null = null,
  27. dateMin: string | null = null,
  28. dateMax: string | null = null,
  29. city: string | null = null,
  30. page: number = 1,
  31. itemsPerPage = 20
  32. ): Promise<HydraCollection<PublicEvent>> {
  33. const query = new URLSearchParams();
  34. if (name !== null) {
  35. query.append('name', name)
  36. }
  37. if (organizationId !== null) {
  38. query.append('organizationId', String(organizationId))
  39. }
  40. if (dateMin !== null && dateMin !== '') {
  41. query.append('datetimeEnd[after]', dateMin)
  42. }
  43. if (dateMax !== null && dateMax !== '') {
  44. query.append('datetimeEnd[before]', dateMax)
  45. }
  46. if (city !== null) {
  47. query.append('city', city)
  48. }
  49. if (page !== null) {
  50. query.append('page', `${page}`)
  51. }
  52. if (itemsPerPage !== null) {
  53. query.append('itemsPerPage', `${itemsPerPage}`)
  54. }
  55. let url = `/api/public/events`
  56. if (query) {
  57. url += `?${query}`
  58. }
  59. return await this.get(url).then((res) => {
  60. return HydraParser.parseCollection(res, this.normalize)
  61. })
  62. }
  63. async getById (eventUuid: number): Promise<PublicEvent> {
  64. return await this.get(
  65. `/api/public/events/${eventUuid}`
  66. ).then((s) => {
  67. return this.normalize(s)
  68. })
  69. }
  70. }
  71. export default PublicEventsProvider