HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
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;
    }

}