File: D:/HostingSpaces/netwerkbrabant/netwerkbrabant.nl/app/Http/Wildcards/EventsWildcard.php
<?php
namespace App\Http\Wildcards;
use App\KommaApp\Events\Models\EventTranslation;
use App\KommaApp\Orders\Models\Order;
use App\KommaApp\Regions\Models\Region;
use App\KommaApp\UserGroups\Models\UserGroupTranslation;
class EventsWildcard implements WildcardInterface
{
/**
* @param $request
* @param $wildcard
* @return mixed
*/
public function handle($request, $wildcard)
{
// Check if the first segment is found in the PostTranslation
// If PostTranslation isn't found then send to the filters method
if($eventTranslation = EventTranslation::where('slug', $wildcard->tail[0])->first())
{
//Set the request URI and the original path
$request->server->set('REQUEST_URI', 'events/'.$eventTranslation->event_id);
return $request;
}
// Region index OR UserGroup
if(sizeof($wildcard->tail) >= 2) {
if($wildcard->tail[1] === 'regio' && $region = Region::where('slug', $wildcard->tail[0])->first()){
//Set the request URI and the original path
$request->server->set('REQUEST_URI', 'events/region/'.$region->id);
return $request;
}
}
// Sign up form
if(sizeof($wildcard->tail) == 2 && $wildcard->tail[0] == __('site/routes.events.signUp') && $eventTranslation = EventTranslation::where('slug', $wildcard->tail[1])->first())
{
//Set the request URI and the original path
$request->server->set('REQUEST_URI', 'events/'.$eventTranslation->event_id.'/sign-up');
return $request;
}
// Sign up Process routes
if(sizeof($wildcard->tail) == 3 && $wildcard->tail[1] == __('site/routes.events.signUp') && $eventTranslation = EventTranslation::where('slug', $wildcard->tail[2])->first())
{
switch ($wildcard->tail[0])
{
// Payment error route
// Example; http://localhost:8000/events/hilvaria-studios-28-10-2019/aanmelden/betaling-error
case __('site/routes.events.paymentError'):
$request->server->set('REQUEST_URI', 'events/'.$eventTranslation->event_id.'/sign-up/payment-error');
return $request;
// Payment by partner route
// Example; http://localhost:8000/events/hilvaria-studios-28-10-2019/aanmelden/betaling-via-partner
case __('site/routes.events.paymentByPartner'):
$request->server->set('REQUEST_URI', 'events/'.$eventTranslation->event_id.'/sign-up/payment-by-partner');
return $request;
// Choose payment method route
// NOT USED -> COULD BE DELEtE
// case __('site/routes.events.handlePayment'):
// $request->server->set('REQUEST_URI', 'events/'.$eventTranslation->event_id.'/sign-up/handle-payment');
// return $request;
// Awaiting payment route
// Example; http://localhost:8000/events/hilvaria-studios-28-10-2019/aanmelden/wachten-op-betaling
// WILL SOON BE NOT NEEDED ANY MORE
case __('site/routes.events.awaitingPayment'):
$request->server->set('REQUEST_URI', 'events/'.$eventTranslation->event_id.'/sign-up/awaiting-payment');
return $request;
// Success route
// Example; http://localhost:8000/events/hilvaria-studios-28-10-2019/aanmelden/bedankt
case __('site/routes.events.success'):
$request->server->set('REQUEST_URI', 'events/'.$eventTranslation->event_id.'/sign-up/success');
return $request;
// Canceled route
// Example; http://localhost:8000/events/hilvaria-studios-28-10-2019/aanmelden/geannuleerd
case __('site/routes.events.canceled'):
$request->server->set('REQUEST_URI', 'events/'.$eventTranslation->event_id.'/sign-up/canceled');
return $request;
}
}
// Sign up - Choose payment method routes
// Possible this could be put in an order wildcard
// Example: https://netwerkbrabant.nl/events/grand-cafe-de-stip-07-10-2019/aanmelden/kies-betaalmethode/739
if(sizeof($wildcard->tail) == 4 && $wildcard->tail[1] == __('site/routes.events.choosePaymentMethod') && $wildcard->tail[2] == __('site/routes.events.signUp') && $eventTranslation = EventTranslation::where('slug', $wildcard->tail[3])->first())
{
// Last segment should be a order id
if($order = Order::find($wildcard->tail[0])){
// Get the event from the order
$orderProduct = $order->products->first();
// If the order is waiting for the payment and the event translation matches the found order event
if(in_array($order->status, [Order::AWAITING_PAYMENT,Order::OPEN]) && $orderProduct->productable_id === $eventTranslation->event_id){
$request->server->set('REQUEST_URI', 'events/'.$eventTranslation->event_id.'/sign-up/choose-payment-method/'.$order->id);
return $request;
}
}
}
// Sign up payment error
// if(sizeof($wildcard->tail) == 3 && $wildcard->tail[0] == __('site/routes.events.paymentError') && $wildcard->tail[1] == __('site/routes.events.signUp') && $eventTranslation = EventTranslation::where('slug', $wildcard->tail[2])->first())
// {
// //Set the request URI and the original path
// $request->server->set('REQUEST_URI', 'events/'.$eventTranslation->event_id.'/sign-up/payment-error');
// return $request;
// }
// Sign up success
// if(sizeof($wildcard->tail) == 3 && $wildcard->tail[0] == __('site/routes.events.success') && $wildcard->tail[1] == __('site/routes.events.signUp') && $eventTranslation = EventTranslation::where('slug', $wildcard->tail[2])->first())
// {
// //Set the request URI and the original path
// $request->server->set('REQUEST_URI', 'events/'.$eventTranslation->event_id.'/sign-up/success');
// return $request;
// }
// Region index route without region redirect to index
// Can only be accessed when manually entering the route
if(sizeof($wildcard->tail) == 1 && $wildcard->tail[0] == 'regio')
{
$request->server->set('REQUEST_URI', 'events/region');
$request->merge(['redirect' => $wildcard->type->alias ]);
return $request;
}
// Bind filters to the request and set uri to the filter function of the post controller
//$request->merge(['filters' => $wildcard->tail]);
//Set the request URI and the original path
//$request->server->set('REQUEST_URI', 'events/filters');
return $request;
}
}