From 58eafabdcfdd6eaf73ee58bcdf7e0905bf33c8bf Mon Sep 17 00:00:00 2001 From: Ramon Gutierrez Date: Tue, 16 May 2023 06:12:05 +0800 Subject: [PATCH] Add api support for motolite events #730 --- config/routes/apiv2.yaml | 6 + .../MotoliteEventController.php | 46 +++++++ src/Entity/MotoliteEvent.php | 114 ++++++++++++++++++ src/Ramcar/MotoliteEventType.php | 16 +++ 4 files changed, 182 insertions(+) create mode 100644 src/Controller/CustomerAppAPI/MotoliteEventController.php create mode 100644 src/Entity/MotoliteEvent.php create mode 100644 src/Ramcar/MotoliteEventType.php diff --git a/config/routes/apiv2.yaml b/config/routes/apiv2.yaml index 80872490..e0010864 100644 --- a/config/routes/apiv2.yaml +++ b/config/routes/apiv2.yaml @@ -230,3 +230,9 @@ apiv2_customer_hash_get: # path: /apiv2/job_orders/completed # controller: App\Controller\CustomerAppAPI\JobOrderController::getCompletedJobOrders # methods: [GET] + +# motolite events +apiv2_motolite_events: + path: /apiv2/motolite_events + controller: App\Controller\CustomerAppAPI\MotoliteEventController:getEvents + methods: [GET] \ No newline at end of file diff --git a/src/Controller/CustomerAppAPI/MotoliteEventController.php b/src/Controller/CustomerAppAPI/MotoliteEventController.php new file mode 100644 index 00000000..3dbc96c7 --- /dev/null +++ b/src/Controller/CustomerAppAPI/MotoliteEventController.php @@ -0,0 +1,46 @@ +validateRequest($req); + + if (!$validity['is_valid']) { + return new ApiResponse(false, $validity['error']); + } + + // get all events + $events = $this->em->getRepository(MotoliteEvent::class) + ->findBy([], ['event_time', 'asc']); + + if (empty($results)) { + return new ApiResponse(false, 'No events available.'); + } + + $events = []; + foreach ($results as $result) { + $events[] = [ + 'id' => $result->getID(), + 'name' => $result->getName(), + 'event_type' => MotoliteEventType::getName($result->getEventType()), + 'url' => $result->getUrl(), + 'image_file' => $result->getImageFile(), + ]; + } + + // response + return new ApiResponse(true, '', [ + 'events' => $events, + ]); + } +} diff --git a/src/Entity/MotoliteEvent.php b/src/Entity/MotoliteEvent.php new file mode 100644 index 00000000..e2bf3db4 --- /dev/null +++ b/src/Entity/MotoliteEvent.php @@ -0,0 +1,114 @@ +event_time = new DateTime(); + } + + public function setName($name) + { + $this->name = $name; + return $this; + } + + public function getName() + { + return $this->name; + } + + public function setEventType($event_type) + { + $this->event_type = $event_type; + return $this; + } + + public function getEventType() + { + return $this->event_type; + } + + public function setEventTime($event_time) + { + $this->event_time = $event_time; + return $this; + } + + public function setUrl($url) + { + $this->url = $url; + return $this; + } + + public function getUrl() + { + return $this->url; + } + + public function getEventTime() + { + return $this->event_time; + } + + public function setImageFile(File $image_file = null) + { + $this->image_file = $image_file; + return $this; + } + + public function getImageFile() + { + return $this->image_file; + } +} diff --git a/src/Ramcar/MotoliteEventType.php b/src/Ramcar/MotoliteEventType.php new file mode 100644 index 00000000..8cf51fb0 --- /dev/null +++ b/src/Ramcar/MotoliteEventType.php @@ -0,0 +1,16 @@ + 'Event', + 'news' => 'News', + 'blog' => 'Blog', + ]; +}