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/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;
    }

}