2016-05-19 15:01:28 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Services;
|
|
|
|
|
|
|
|
use App\Place;
|
|
|
|
use Illuminate\Http\Request;
|
|
|
|
use Phaza\LaravelPostgis\Geometries\Point;
|
|
|
|
|
|
|
|
class PlaceService
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Create a place.
|
|
|
|
*
|
|
|
|
* @param \Illuminate\Http\Request $request
|
|
|
|
* @return \App\Place
|
|
|
|
*/
|
2016-07-11 17:09:14 +01:00
|
|
|
public function createPlace(Request $request)
|
2016-05-19 15:01:28 +01:00
|
|
|
{
|
2016-09-23 16:51:48 +01:00
|
|
|
if ($request->header('Content-Type') == 'application/json') {
|
|
|
|
$name = $request->input('properties.name');
|
|
|
|
$description = $request->input('properties.description') ?? null;
|
|
|
|
$geo = $request->input('properties.geo');
|
|
|
|
} else {
|
|
|
|
$name = $request->input('name');
|
|
|
|
$description = $request->input('description');
|
|
|
|
$geo = $request->input('geo');
|
2016-05-19 15:01:28 +01:00
|
|
|
}
|
2016-09-23 16:51:48 +01:00
|
|
|
$parts = explode(':', $geo);
|
|
|
|
$latlng = explode(',', $parts[1]);
|
|
|
|
$latitude = $latlng[0];
|
|
|
|
$longitude = $latlng[1];
|
2016-05-19 15:01:28 +01:00
|
|
|
if ($request->input('latitude') !== null) {
|
|
|
|
$latitude = $request->input('latitude');
|
|
|
|
$longitude = $request->input('longitude');
|
|
|
|
}
|
|
|
|
$place = new Place();
|
2016-09-23 16:51:48 +01:00
|
|
|
$place->name = $name;
|
|
|
|
$place->description = $description;
|
2016-05-19 15:01:28 +01:00
|
|
|
$place->location = new Point((float) $latitude, (float) $longitude);
|
|
|
|
$place->save();
|
|
|
|
|
|
|
|
return $place;
|
|
|
|
}
|
|
|
|
}
|