jonnybarnes.uk/app/Services/PlaceService.php

50 lines
1.4 KiB
PHP
Raw Normal View History

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
*/
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
}
if ($geo) {
preg_match_all(
'/([0-9\.\-]+)/',
$geo,
$matches
);
$latitude = $matches[0][0];
$longitude = $matches[0][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;
}
}