Skip to content

Instantly share code, notes, and snippets.

@DarkGhostHunter
Created November 17, 2019 19:58
Show Gist options
  • Save DarkGhostHunter/4d0e2f120128def9fdcab373e570f355 to your computer and use it in GitHub Desktop.
Save DarkGhostHunter/4d0e2f120128def9fdcab373e570f355 to your computer and use it in GitHub Desktop.
An example Controller where a Manager gets called to deliver a package in one line.
<?php
namespace App\Http\Controllers;
use App\Package;
use App\Managers\TransportManager;
class DeliveryController extends Controller
{
/**
* Start the delivery process for a package
*
* @param \App\Http\Controllers\Request $request
* @param \App\Package $package
* @param \App\Managers\TransportManager $transport
* @return \Illuminate\Http\RedirectResponse
*/
public function deliver(Request $request, Package $package, TransportManager $transport)
{
// Show the package status if we're
if ($package->inTransit()) {
return redirect()->route('package.delivery.status', $package);
}
// Validate the address where the package must be delivered
$request->validate([
'address' => 'required|string|max:255',
]);
// Deliver the package using the default driver
$transport->send($package)->to($request->input('address'));
// Show that we are currently delivering the package
return redirect()->route('package.delivery.status', $package);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment