File: D:/HostingSpaces/netwerkbrabant/netwerkbrabant.nl/app/Http/Wildcards/CoursesWildcard.php
<?php
namespace App\Http\Wildcards;
use App\KommaApp\Courses\Models\CourseTranslation;
use App\KommaApp\CourseTypes\Models\CourseTypeTranslation;
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 CoursesWildcard 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($courseTranslation = CourseTranslation::where('slug', $wildcard->tail[0])->first())
{
//Set the request URI and the original path
$request->server->set('REQUEST_URI', 'courses/'.$courseTranslation->course_id);
return $request;
}
// Redirect type
if(sizeof($wildcard->tail) === 1 && $wildcard->tail[0] === 'type') {
$request->server->set('REQUEST_URI', 'courses');
return $request;
}
// CourseType
if(sizeof($wildcard->tail) === 2 && $wildcard->tail[1] === 'type') {
if($courseTypeTranslation = CourseTypeTranslation::where('slug', $wildcard->tail[0])->first()) {
$request->server->set('REQUEST_URI', 'courses/type/' . $courseTypeTranslation->course_type_id);
}
return $request;
}
// Sign up form
if(sizeof($wildcard->tail) == 2 && $wildcard->tail[0] == __('site/routes.courses.signUp') && $courseTranslation = CourseTranslation::where('slug', $wildcard->tail[1])->first())
{
//Set the request URI and the original path
$request->server->set('REQUEST_URI', 'courses/'.$courseTranslation->course_id.'/sign-up');
return $request;
}
// Sign up Process routes
if(sizeof($wildcard->tail) == 3 && $wildcard->tail[1] == __('site/routes.courses.signUp') && $courseTranslation = CourseTranslation::where('slug', $wildcard->tail[2])->first())
{
switch ($wildcard->tail[0])
{
// Payment error route
// Example; http://localhost:8000/courses/hilvaria-studios-28-10-2019/aanmelden/betaling-error
case __('site/routes.courses.paymentError'):
$request->server->set('REQUEST_URI', 'courses/'.$courseTranslation->course_id.'/sign-up/payment-error');
return $request;
// Payment by partner route
// Example; http://localhost:8000/courses/hilvaria-studios-28-10-2019/aanmelden/betaling-via-partner
case __('site/routes.courses.paymentByPartner'):
$request->server->set('REQUEST_URI', 'courses/'.$courseTranslation->course_id.'/sign-up/payment-by-partner');
return $request;
// Choose payment method route
// NOT USED -> COULD BE DELEtE
// case __('site/routes.courses.handlePayment'):
// $request->server->set('REQUEST_URI', 'courses/'.$courseTranslation->course_id.'/sign-up/handle-payment');
// return $request;
// Awaiting payment route
// Example; http://localhost:8000/courses/hilvaria-studios-28-10-2019/aanmelden/wachten-op-betaling
// WILL SOON BE NOT NEEDED ANY MORE
case __('site/routes.courses.awaitingPayment'):
$request->server->set('REQUEST_URI', 'courses/'.$courseTranslation->course_id.'/sign-up/awaiting-payment');
return $request;
// Success route
// Example; http://localhost:8000/courses/hilvaria-studios-28-10-2019/aanmelden/bedankt
case __('site/routes.courses.success'):
$request->server->set('REQUEST_URI', 'courses/'.$courseTranslation->course_id.'/sign-up/success');
return $request;
// Canceled route
// Example; http://localhost:8000/courses/hilvaria-studios-28-10-2019/aanmelden/geannuleerd
case __('site/routes.courses.canceled'):
$request->server->set('REQUEST_URI', 'courses/'.$courseTranslation->course_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/courses/grand-cafe-de-stip-07-10-2019/aanmelden/kies-betaalmethode/739
if(sizeof($wildcard->tail) == 4 && $wildcard->tail[1] == __('site/routes.courses.choosePaymentMethod') && $wildcard->tail[2] == __('site/routes.courses.signUp') && $courseTranslation = CourseTranslation::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 === $courseTranslation->course_id){
$request->server->set('REQUEST_URI', 'courses/'.$courseTranslation->course_id.'/sign-up/choose-payment-method/'.$order->id);
return $request;
}
}
}
// Sign up payment error
// if(sizeof($wildcard->tail) == 3 && $wildcard->tail[0] == __('site/routes.courses.paymentError') && $wildcard->tail[1] == __('site/routes.courses.signUp') && $courseTranslation = CourseTranslation::where('slug', $wildcard->tail[2])->first())
// {
// //Set the request URI and the original path
// $request->server->set('REQUEST_URI', 'courses/'.$courseTranslation->course_id.'/sign-up/payment-error');
// return $request;
// }
// Sign up success
// if(sizeof($wildcard->tail) == 3 && $wildcard->tail[0] == __('site/routes.courses.success') && $wildcard->tail[1] == __('site/routes.courses.signUp') && $courseTranslation = CourseTranslation::where('slug', $wildcard->tail[2])->first())
// {
// //Set the request URI and the original path
// $request->server->set('REQUEST_URI', 'courses/'.$courseTranslation->course_id.'/sign-up/success');
// return $request;
// }
return $request;
}
}