/** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * * @return \Illuminate\Http\Response * */ public function store(Request $request) { // Read subscriber details $uuid = $request->json('uuid'); $latitude = $request->json('latitude'); $longitude = $request->json('longitude'); // Validate latitude/longitude if (!is_numeric($latitude)) { return response()->json(['message' => "Latitude must be a number."], Response::HTTP_BAD_REQUEST); } if (!is_numeric($longitude)) { return response()->json(['message' => "Longitude must be a number."], Response::HTTP_BAD_REQUEST); } // Check if user is already subscribed $repository = SubscriberRepository::getInstance(); $subscriber = $repository->getByUuid($uuid); if (!empty($subscriber)) { return response()->json(['message' => "Already subscribed."], Response::HTTP_BAD_REQUEST); } $subscriber = new Subscriber(); $subscriber->setUuid($uuid); $subscriber->setLatitude(doubleval($latitude)); $subscriber->setLongitude(doubleval($longitude)); try { $subscriber->save(); } catch (QueryException $exception) { return response()->json(['message' => "Oops, something went wrong."], Response::HTTP_INTERNAL_SERVER_ERROR); } return response()->json([], Response::HTTP_CREATED); }
/** * @param \App\Repository\Entity\Subscriber $subscriber * * @return array */ public function getForSubscriber(Subscriber $subscriber) { $query = $this->queryBuilder->from(self::$tableName); $query->where('subscriber_id', $subscriber->getId()); $query->where('notified', 0); $dtos = $query->fetchAll(); $result = []; foreach ($dtos as $dto) { $result[] = new AlertQueueItem($dto); } return $result; }