jonnybarnes.uk/app/Http/Controllers/Admin/PlacesController.php

100 lines
2.5 KiB
PHP
Raw Normal View History

2016-05-19 15:01:28 +01:00
<?php
namespace App\Http\Controllers\Admin;
2016-05-19 15:01:28 +01:00
use App\Place;
use Illuminate\Http\Request;
use App\Services\PlaceService;
use App\Http\Controllers\Controller;
2016-05-19 15:01:28 +01:00
use Phaza\LaravelPostgis\Geometries\Point;
2017-03-01 21:01:00 +00:00
class PlacesController extends Controller
2016-05-19 15:01:28 +01:00
{
protected $placeService;
public function __construct(PlaceService $placeService = null)
{
$this->placeService = $placeService ?? new PlaceService();
}
2016-05-19 15:01:28 +01:00
/**
* List the places that can be edited.
*
* @return \Illuminate\View\Factory view
*/
public function index()
2016-05-19 15:01:28 +01:00
{
$places = Place::all();
2017-03-02 18:38:15 +00:00
return view('admin.places.list', ['places' => $places]);
2016-05-19 15:01:28 +01:00
}
/**
* Show the form to make a new place.
*
* @return \Illuminate\View\Factory view
*/
public function create()
2016-05-19 15:01:28 +01:00
{
2017-03-02 18:38:15 +00:00
return view('admin.places.new');
2016-05-19 15:01:28 +01:00
}
/**
* Display the form to edit a specific place.
*
* @param string The place id
* @return \Illuminate\View\Factory view
*/
public function edit($placeId)
2016-05-19 15:01:28 +01:00
{
$place = Place::findOrFail($placeId);
$latitude = $place->getLatitude();
$longitude = $place->getLongitude();
2017-03-02 18:38:15 +00:00
return view('admin.places.edit', [
2016-05-19 15:01:28 +01:00
'id' => $placeId,
'name' => $place->name,
'description' => $place->description,
'latitude' => $latitude,
'longitude' => $longitude,
]);
}
/**
* Process a request to make a new place.
*
* @param Illuminate\Http\Request $request
* @return Illuminate\View\Factory view
*/
public function store(Request $request)
2016-05-19 15:01:28 +01:00
{
$data = [];
$data['name'] = $request->name;
$data['description'] = $request->description;
$data['latitude'] = $request->latitude;
$data['longitude'] = $request->longitude;
$place = $this->placeService->createPlace($data);
2016-05-19 15:01:28 +01:00
2017-03-02 18:38:15 +00:00
return view('admin.places.newsuccess');
2016-05-19 15:01:28 +01:00
}
/**
* Process a request to edit a place.
*
* @param string The place id
* @param Illuminate\Http\Request $request
* @return Illuminate\View\Factory view
*/
public function update($placeId, Request $request)
2016-05-19 15:01:28 +01:00
{
$place = Place::findOrFail($placeId);
$place->name = $request->name;
$place->description = $request->description;
$place->location = new Point((float) $request->latitude, (float) $request->longitude);
$place->save();
2017-03-02 18:38:15 +00:00
return view('admin.places.editsuccess');
2016-05-19 15:01:28 +01:00
}
}