<?php
/**
 * Routes configuration.
 *
 * In this file, you set up routes to your controllers and their actions.
 * Routes are very important mechanism that allows you to freely connect
 * different URLs to chosen controllers and their actions (functions).
 *
 * It's loaded within the context of `Application::routes()` method which
 * receives a `RouteBuilder` instance `$routes` as method argument.
 *
 * CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
 * @link          https://cakephp.org CakePHP(tm) Project
 * @license       https://opensource.org/licenses/mit-license.php MIT License
 */

use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;

/*
 * This file is loaded in the context of the `Application` class.
 * So you can use `$this` to reference the application class instance
 * if required.
 */
return function (RouteBuilder $routes): void {
    /*
     * The default class to use for all routes
     *
     * The following route classes are supplied with CakePHP and are appropriate
     * to set as the default:
     *
     * - Route
     * - InflectedRoute
     * - DashedRoute
     *
     * If no call is made to `Router::defaultRouteClass()`, the class used is
     * `Route` (`Cake\Routing\Route\Route`)
     *
     * Note that `Route` does not do any inflections on URLs which will result in
     * inconsistently cased URLs when used with `{plugin}`, `{controller}` and
     * `{action}` markers.
     */
    $routes->setRouteClass(DashedRoute::class);
    $routes->connect('/admin/teachers', ['controller'=>'Admin','action'=>'teachers']);
    $routes->connect('/admin/addTeacher', ['controller'=>'Admin','action'=>'addTeacher']);
    $routes->connect('/admin/editTeacher/:id', ['controller'=>'Admin','action'=>'editTeacher'])
        ->setPass(['id']);
    $routes->connect('/admin/deleteTeacher/:id', ['controller'=>'Admin','action'=>'deleteTeacher'])
        ->setPass(['id']);
    $routes->connect('/admin/teacher-availability', ['controller' => 'Admin', 'action' => 'teacherAvailabilitySlots']);
    $routes->connect('/admin/deleteTeacherAvailabilitySlot/:id', ['controller' => 'Admin', 'action' => 'deleteTeacherAvailabilitySlot'])
        ->setPass(['id']);
        $routes->connect('/booking', [
    'controller' => 'Bookings',
    'action' => 'add'
]);
    $routes->connect('/admin', ['controller' => 'Admin', 'action' => 'index']);
    $routes->connect('/admin/enquiries', ['controller' => 'Admin', 'action' => 'enquiries']);
    $routes->connect('/admin/users', ['controller' => 'Admin', 'action' => 'users']);
    $routes->connect('/admin/addUser', ['controller' => 'Admin', 'action' => 'addUser']);
    $routes->connect('/admin/add', ['controller' => 'Admin', 'action' => 'addUser']);
    $routes->connect('/admin/deleteUser/*', ['controller' => 'Admin', 'action' => 'deleteUser']);
    $routes->connect('/admin/deleteEnquiry/*', ['controller' => 'Admin', 'action' => 'deleteEnquiry']);
    $routes->connect('/admin/lessons', ['controller' => 'Admin', 'action' => 'lessons']);
    $routes->connect('/admin/materials', ['controller' => 'Admin', 'action' => 'materials']);
    $routes->connect('/admin/bookings', ['controller' => 'Admin', 'action' => 'bookings']);
    $routes->connect('/admin/faqs', ['controller' => 'Admin', 'action' => 'faqs']);
    $routes->connect('/admin/company', ['controller' => 'Admin', 'action' => 'company']);
    $routes->scope('/', function (RouteBuilder $builder): void {
        /*
         * Here, we are connecting '/' (base path) to a controller called 'Pages',
         * its action called 'display', and we pass a param to select the view file
         * to use (in this case, templates/Pages/home.php)...
         */
        $builder->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
        $builder->connect('/pages/register', [
            'controller' => 'Users',
            'action' => 'register'
        ]);

        $builder->connect('/pages/login', [
            'controller' => 'Users',
            'action' => 'login'
        ]);
        $builder->connect('/faqs', [
            'controller' => 'Pages',
            'action' => 'display',
            'faqs'
        ]);
        $builder->connect('/workshops', [
            'controller' => 'Pages',
            'action' => 'display',
            'workshops'
        ]);
        $builder->connect('/visit', [
            'controller' => 'Pages',
            'action' => 'display',
            'visit',
        ]);

        /*
         * ...and connect the rest of 'Pages' controller's URLs.
         */
        $builder->connect('/pages/*', 'Pages::display');

        $builder->connect('/contact', ['controller' => 'Records', 'action' => 'add']);

        /*
         * Connect catchall routes for all controllers.
         *
         * The `fallbacks` method is a shortcut for
         *
         * ```
         * $builder->connect('/{controller}', ['action' => 'index']);
         * $builder->connect('/{controller}/{action}/*', []);
         * ```
         *
         * It is NOT recommended to use fallback routes after your initial prototyping phase!
         * See https://book.cakephp.org/5/en/development/routing.html#fallbacks-method for more information
         */
        $builder->fallbacks();
    });

    /*
     * If you need a different set of middleware or none at all,
     * open new scope and define routes there.
     *
     * ```
     * $routes->scope('/api', function (RouteBuilder $builder): void {
     *     // No $builder->applyMiddleware() here.
     *
     *     // Parse specified extensions from URLs
     *     // $builder->setExtensions(['json', 'xml']);
     *
     *     // Connect API actions here.
     * });
     * ```
     */
};
