Пример #1
0
 /**
  * Display a listing of the available mosques.
  *
  * Possible filters, as GET params, are:
  * cityId: optional, numeric only
  * stateId, goes with placeId
  * latitude, optional, should not be set if placeId is set
  * longitude, goes with Latitude
  * minPrayerTimeUtc: optional, HH:MM 24 hours format, e.g 13:20
  * maxPrayerTimeUtc: optional, HH:MM 24 hours format, e.g 14:00
  * minInteriorSpace: optional, integer [1-5]
  * minParkingSpace: optional, integer [1-5]
  *
  * @return Response
  */
 public function index()
 {
     $filters = Input::only('cityId', 'stateId', 'latitude', 'longitude', 'minPrayerTimeUtc', 'maxPrayerTimeUtc', 'minInteriorSpace', 'minParkingSpace');
     $validator = Validator::make($filters, ['minPrayerTimeUtc' => 'date_format:H:i', 'maxPrayerTimeUtc' => 'date_format:H:i', 'minInteriorSpace' => 'numeric|between:1,5', 'minParkingSpace' => 'numeric|between:1,5', 'cityId' => 'integer', 'stateId' => 'integer', 'latitude' => 'numeric|between:-90,90|required_with:longitude', 'longitude' => 'numeric|between:-180,180|required_with:latitude']);
     if ($validator->fails()) {
         throw new BadRequestException($validator->errors()->first());
     }
     $request = Mosque::query();
     if ($filters['cityId'] != null) {
         $request->where('city', $filters['cityId']);
     }
     if ($filters['stateId'] != null) {
         $request->where('state', $filters['stateId']);
     }
     if ($filters['minInteriorSpace'] != null) {
         $request->where('interior_space', '>=', $filters['minInteriorSpace']);
     }
     if ($filters['minParkingSpace'] != null) {
         $request->where('parking_space', '>=', $filters['minParkingSpace']);
     }
     if ($filters['minPrayerTimeUtc'] != null) {
         $request->where('prayer_start', '>=', $filters['minPrayerTimeUtc']);
     }
     if ($filters['maxPrayerTimeUtc'] != null) {
         $request->where('prayer_start', '<=', $filters['maxPrayerTimeUtc']);
     }
     if ($filters['latitude'] != null && $filters['longitude'] != null) {
         $request->whereBetween('latitude', [$filters['latitude'] - 0.04, $filters['latitude'] + 0.04]);
         $request->whereBetween('longitude', [$filters['longitude'] - 0.04, $filters['longitude'] + 0.04]);
     }
     $mosques = $request->get();
     return Response::json(array('data' => $mosques, 'status_code' => 200, 'params' => $filters), 200, [], JSON_NUMERIC_CHECK);
 }