stevebauman/maintenance

View on GitHub
app/Http/routes.php

Summary

Maintainability
C
1 day
Test Coverage
<?php

use Illuminate\Routing\Router;

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| This route group applies the "web" middleware group to every route
| it contains. The "web" middleware group is defined in your HTTP
| kernel and includes session state, CSRF protection, and more.
*/

/* @var Router $router */
$router->group(['middleware' => ['web']], function (Router $router) {
    $router->group(['as' => 'maintenance.'], function (Router $router) {
        // Welcome Route
        $router->get('/', ['as' => 'welcome.index', 'uses' => 'WelcomeController@index']);

        // Permission Denied Route
        $router->get('permission-denied', ['as' => 'permission-denied.index', 'uses' => 'PermissionDeniedController@getIndex']);

        // Authentication Routes
        $router->group(['prefix' => 'login', 'as' => 'login.', 'middleware' => ['guest']], function (Router $router) {
            $router->get('/', ['as' => 'index', 'uses' => 'AuthController@login']);

            $router->post('/', ['as' => 'authenticate', 'uses' => 'AuthController@authenticate']);
        });

        $router->group(['middleware' => ['auth']], function (Router $router) {
            $router->get('logout', ['as' => 'logout', 'uses' => 'AuthController@logout']);
        });

        // Registration Routes
        $router->group(['prefix' => 'register'], function (Router $router) {
            $router->get('/', ['as' => 'register', 'uses' => 'AuthController@getRegister']);

            $router->post('/', ['as' => 'register', 'uses' => 'AuthController@postRegister']);
        });

        // Client Routes
        $router->group(['prefix' => 'client', 'as' => 'client.', 'namespace' => 'Client', 'middleware' => ['auth']], function (Router $router) {
            $router->group(['namespace' => 'WorkRequest', 'as' => 'work-requests.'], function (Router $router) {
                $router->resource('work-requests', 'Controller', [
                    'names' => [
                        'index'   => 'index',
                        'create'  => 'create',
                        'store'   => 'store',
                        'show'    => 'show',
                        'edit'    => 'edit',
                        'update'  => 'update',
                        'destroy' => 'destroy',
                    ],
                ]);

                $router->resource('work-requests.updates', 'UpdateController', [
                    'only' => [
                        'store',
                        'destroy',
                    ],
                    'names' => [
                        'store'   => 'updates.store',
                        'destroy' => 'updates.destroy',
                    ],
                ]);
            });
        });

        // Management Routes
        $router->group(['prefix' => 'management', 'middleware' => ['auth']], function (Router $router) {
            $router->get('/', ['as' => 'dashboard.index', 'uses' => 'DashboardController@index']);

            // Event Routes
            $router->group(['namespace' => 'Event', 'as' => 'events.'], function (Router $router) {
                $router->resource('events', 'Controller', [
                    'names' => [
                        'index'   => 'index',
                        'create'  => 'create',
                        'store'   => 'store',
                        'show'    => 'show',
                        'edit'    => 'edit',
                        'update'  => 'update',
                        'destroy' => 'destroy',
                    ],
                ]);

                $router->resource('events.report', 'ReportController', [
                    'except' => [
                        'index',
                        'show',
                    ],
                    'names' => [
                        'store'   => 'report.store',
                        'edit'    => 'report.edit',
                        'update'  => 'report.update',
                        'destroy' => 'report.destroy',
                    ],
                ]);
            });

            // Work Request Routes
            $router->group(['namespace' => 'WorkRequest', 'as' => 'work-requests.'], function (Router $router) {
                $router->resource('work-requests', 'WorkRequestController', [
                    'names' => [
                        'index'   => 'index',
                        'create'  => 'create',
                        'store'   => 'store',
                        'show'    => 'show',
                        'edit'    => 'edit',
                        'update'  => 'update',
                        'destroy' => 'destroy',
                    ],
                ]);

                $router->resource('work-requests.updates', 'UpdateController', [
                    'only' => [
                        'store',
                        'destroy',
                    ],
                    'names' => [
                        'store'   => 'updates.store',
                        'destroy' => 'updates.destroy',
                    ],
                ]);
            });

            // Work Order Routes
            $router->group(['as' => 'work-orders.', 'namespace' => 'WorkOrder'], function (Router $router) {
                $router->group(['prefix' => 'work-orders'], function (Router $router) {
                    $router->get('assigned', ['as' => 'assigned.index', 'uses' => 'WorkOrderAssignedController@index']);

                    // Work Order Priority Routes
                    $router->resource('priorities', 'WorkOrderPriorityController', [
                        'except' => [
                            'show',
                        ],
                        'names' => [
                            'index'   => 'priorities.index',
                            'create'  => 'priorities.create',
                            'store'   => 'priorities.store',
                            'show'    => 'priorities.show',
                            'edit'    => 'priorities.edit',
                            'update'  => 'priorities.update',
                            'destroy' => 'priorities.destroy',
                        ],
                    ]);

                    // Work Order Status Routes
                    $router->resource('statuses', 'WorkOrderStatusController', [
                        'except' => [
                            'show',
                        ],
                        'names' => [
                            'index'   => 'statuses.index',
                            'create'  => 'statuses.create',
                            'store'   => 'statuses.store',
                            'show'    => 'statuses.show',
                            'edit'    => 'statuses.edit',
                            'update'  => 'statuses.update',
                            'destroy' => 'statuses.destroy',
                        ],
                    ]);

                    // Work Order Category Routes
                    $router->resource('categories', 'CategoryController', [
                        'except' => [
                            'show',
                        ],
                        'names' => [
                            'index'   => 'categories.index',
                            'create'  => 'categories.create',
                            'store'   => 'categories.store',
                            'edit'    => 'categories.edit',
                            'update'  => 'categories.update',
                            'destroy' => 'categories.destroy',
                        ],
                    ]);

                    $router->get('categories/create/{categories}', ['as' => 'categories.nodes.create', 'uses' => 'CategoryController@create']);

                    $router->post('categories/create/{categories?}', ['as' => 'categories.nodes.store', 'uses' => 'CategoryController@store']);

                    // Nested Work Order Routes
                    $router->group(['prefix' => '{work_orders}'], function (Router $router) {
                        // Work Order Session Routes
                        $router->get('sessions', ['as' => 'sessions.index', 'uses' => 'WorkOrderSessionController@index']);

                        $router->post('sessions/start', ['as' => 'sessions.start', 'uses' => 'WorkOrderSessionController@start']);

                        $router->post('sessions/end', ['as' => 'sessions.end', 'uses' => 'WorkOrderSessionController@end']);

                        // Work Order Comment Routes
                        $router->resource('comments', 'WorkOrderCommentController', [
                            'only' => [
                                'store',
                                'destroy',
                            ],
                            'names' => [
                                'store'   => 'comments.store',
                                'destroy' => 'comments.destroy',
                            ],
                        ]);

                        // Work Order Assignment Routes
                        $router->resource('assignments', 'AssignmentController', [
                            'only' => [
                                'index',
                                'create',
                                'store',
                                'destroy',
                            ],
                            'names' => [
                                'index'   => 'assignments.index',
                                'create'  => 'assignments.create',
                                'store'   => 'assignments.store',
                                'destroy' => 'assignments.destroy',
                            ],
                        ]);

                        // Work Order Report Routes
                        $router->resource('report', 'WorkOrderReportController', [
                            'except' => [
                                'index',
                            ],
                            'names' => [
                                'create'  => 'report.create',
                                'store'   => 'report.store',
                                'show'    => 'report.show',
                                'edit'    => 'report.edit',
                                'update'  => 'report.update',
                                'destroy' => 'report.destroy',
                            ],
                        ]);

                        // Work Order Attachment Routes
                        $router->get('attachments/{attachments}/download', ['as' => 'attachments.download', 'uses' => 'WorkOrderAttachmentController@download']);

                        $router->resource('attachments', 'WorkOrderAttachmentController', [
                            'names' => [
                                'index'   => 'attachments.index',
                                'create'  => 'attachments.create',
                                'store'   => 'attachments.store',
                                'show'    => 'attachments.show',
                                'edit'    => 'attachments.edit',
                                'update'  => 'attachments.update',
                                'destroy' => 'attachments.destroy',
                            ],
                        ]);

                        // Work Order Notification Routes
                        $router->resource('notifications', 'NotificationController', [
                            'only' => [
                                'store',
                                'update',
                            ],
                            'names' => [
                                'store'  => 'notifications.store',
                                'update' => 'notifications.update',
                            ],
                        ]);

                        // Work Order Event Routes
                        $router->resource('events', 'EventController', [
                            'names' => [
                                'index'   => 'events.index',
                                'create'  => 'events.create',
                                'store'   => 'events.store',
                                'show'    => 'events.show',
                                'edit'    => 'events.edit',
                                'update'  => 'events.update',
                                'destroy' => 'events.destroy',
                            ],
                        ]);

                        // Work Order Part Routes
                        $router->group(['prefix' => 'parts', 'as' => 'parts.'], function (Router $router) {
                            $router->get('/', ['as' => 'index', 'uses' => 'WorkOrderPartController@index']);

                            $router->group(['prefix' => '{inventory}/stocks'], function (Router $router) {
                                $router->get('/', ['as' => 'stocks.index', 'uses' => 'WorkOrderPartStockController@index']);

                                $router->get('{stocks}/take', ['as' => 'stocks.take', 'uses' => 'WorkOrderPartStockController@getTake']);

                                $router->post('{stocks}/take', ['as' => 'stocks.take', 'uses' => 'WorkOrderPartStockController@postTake']);

                                $router->get('{stocks}/put-back', ['as' => 'stocks.put', 'uses' => 'WorkOrderPartStockController@getPut']);

                                $router->post('{stocks}/put-back', ['as' => 'stocks.put', 'uses' => 'WorkOrderPartStockController@postPut']);
                            });
                        });
                    });
                });

                // Work Order Routes
                $router->resource('work-orders', 'WorkOrderController', [
                    'names' => [
                        'index'   => 'index',
                        'create'  => 'create',
                        'store'   => 'store',
                        'show'    => 'show',
                        'edit'    => 'edit',
                        'update'  => 'update',
                        'destroy' => 'destroy',
                    ],
                ]);
            });

            // Asset Routes
            $router->group(['as' => 'assets.', 'namespace' => 'Asset'], function (Router $router) {
                $router->group(['prefix' => 'assets'], function (Router $router) {
                    // Asset Event Routes
                    $router->resource('events', 'EventController', [
                        'names' => [
                            'index'   => 'events.index',
                            'create'  => 'events.create',
                            'store'   => 'events.store',
                            'show'    => 'events.show',
                            'edit'    => 'events.edit',
                            'update'  => 'events.update',
                            'destroy' => 'events.destroy',
                        ],
                    ]);

                    // Category Routes
                    $router->resource('categories', 'CategoryController', [
                        'except' => [
                            'show',
                        ],
                        'names' => [
                            'index'   => 'categories.index',
                            'create'  => 'categories.create',
                            'store'   => 'categories.store',
                            'edit'    => 'categories.edit',
                            'update'  => 'categories.update',
                            'destroy' => 'categories.destroy',
                        ],
                    ]);

                    $router->get('categories/json', ['as' => 'categories.json', 'uses' => 'CategoryController@getJson']);

                    $router->get('categories/create/{categories}', ['as' => 'categories.nodes.create', 'uses' => 'CategoryController@create']);

                    $router->post('categories/create/{categories?}', ['as' => 'categories.nodes.store', 'uses' => 'CategoryController@store']);

                    $router->post('categories/move/{categories?}', ['as' => 'categories.nodes.move', 'uses' => 'CategoryController@postMoveCategory']);

                    // Nested Asset Routes
                    $router->group(['prefix' => '{assets}'], function (Router $router) {
                        // Asset Work Order Routes
                        $router->get('work-orders', ['as' => 'work-orders.index', 'uses' => 'WorkOrderController@index']);

                        $router->get('work-orders/attachable', ['as' => 'work-orders.attach.index', 'uses' => 'WorkOrderController@attach']);

                        $router->post('work-orders/{work_orders}/attach', ['as' => 'work-orders.attach.store', 'uses' => 'WorkOrderController@store']);

                        $router->post('work-orders/{work_orders}/detach', ['as' => 'work-orders.attach.remove', 'uses' => 'WorkOrderController@remove']);

                        // Asset Manual Routes
                        $router->get('manuals/{manuals}/download', ['as' => 'manuals.download', 'uses' => 'ManualController@download']);

                        $router->resource('manuals', 'ManualController', [
                            'names' => [
                                'index'   => 'manuals.index',
                                'create'  => 'manuals.create',
                                'store'   => 'manuals.store',
                                'show'    => 'manuals.show',
                                'edit'    => 'manuals.edit',
                                'update'  => 'manuals.update',
                                'destroy' => 'manuals.destroy',
                            ],
                        ]);

                        // Asset Image Routes
                        $router->get('images/{images}/download', ['as' => 'images.download', 'uses' => 'ImageController@download']);

                        $router->resource('images', 'ImageController', [
                            'names' => [
                                'index'   => 'images.index',
                                'create'  => 'images.create',
                                'store'   => 'images.store',
                                'show'    => 'images.show',
                                'edit'    => 'images.edit',
                                'update'  => 'images.update',
                                'destroy' => 'images.destroy',
                            ],
                        ]);

                        // Asset Meter Routes
                        $router->group(['prefix' => 'meters', 'as' => 'meters.', 'namespace' => 'Meter'], function (Router $router) {
                            $router->resource('', 'Controller', [
                                'names' => [
                                    'index'   => 'index',
                                    'create'  => 'create',
                                    'store'   => 'store',
                                    'show'    => 'show',
                                    'edit'    => 'edit',
                                    'update'  => 'update',
                                    'destroy' => 'destroy',
                                ],
                            ]);

                            $router->resource('readings', 'ReadingController', [
                                'only' => [
                                    'store',
                                    'destroy',
                                ],
                                'names' => [
                                    'store'   => 'readings.store',
                                    'destroy' => 'readings.destroy',
                                ],
                            ]);
                        });
                    });
                });

                // Asset Routes
                $router->resource('assets', 'Controller', [
                    'names' => [
                        'index'   => 'index',
                        'create'  => 'create',
                        'store'   => 'store',
                        'show'    => 'show',
                        'edit'    => 'edit',
                        'update'  => 'update',
                        'destroy' => 'destroy',
                    ],
                ]);
            });

            // Inventory Routes
            $router->group(['as' => 'inventory.', 'namespace' => 'Inventory'], function (Router $router) {
                $router->group(['prefix' => 'inventory'], function (Router $router) {
                    // Inventory Category Routes
                    $router->get('categories/json', ['as' => 'categories.json', 'uses' => 'CategoryController@getJson']);

                    $router->get('categories/create/{categories}', ['as' => 'categories.nodes.create', 'uses' => 'CategoryController@create']);

                    $router->post('categories/move/{categories?}', ['as' => 'categories.nodes.move', 'uses' => 'CategoryController@postMoveCategory']);

                    $router->post('categories/create/{categories?}', ['as' => 'categories.nodes.store', 'uses' => 'CategoryController@store']);

                    $router->resource('categories', 'CategoryController', [
                        'except' => [
                            'show',
                        ],
                        'names' => [
                            'index'   => 'categories.index',
                            'create'  => 'categories.create',
                            'store'   => 'categories.store',
                            'edit'    => 'categories.edit',
                            'update'  => 'categories.update',
                            'destroy' => 'categories.destroy',
                        ],
                    ]);

                    // Nested Inventory Routes
                    $router->group(['prefix' => '{inventory}'], function (Router $router) {
                        $router->patch('sku/regenerate', ['as' => 'sku.regenerate', 'uses' => 'InventorySkuController@regenerate']);

                        // Inventory Variant Routes
                        $router->resource('variants', 'InventoryVariantController', [
                            'only' => [
                                'create',
                                'store',
                            ],
                            'names' => [
                                'create' => 'variants.create',
                                'store'  => 'variants.store',
                            ],
                        ]);

                        // Inventory Event Routes
                        $router->resource('events', 'EventController', [
                            'names' => [
                                'index'   => 'events.index',
                                'create'  => 'events.create',
                                'store'   => 'events.store',
                                'show'    => 'events.show',
                                'edit'    => 'events.edit',
                                'update'  => 'events.update',
                                'destroy' => 'events.destroy',
                            ],
                        ]);

                        // Inventory Note Routes
                        $router->resource('notes', 'NoteController', [
                            'except' => [
                                'index',
                            ],
                            'names' => [
                                'create'  => 'notes.create',
                                'store'   => 'notes.store',
                                'show'    => 'notes.show',
                                'edit'    => 'notes.edit',
                                'update'  => 'notes.update',
                                'destroy' => 'notes.destroy',
                            ],
                        ]);

                        // Inventory Stock Routes
                        $router->group(['as' => 'stocks.'], function (Router $router) {
                            $router->resource('stocks', 'StockController', [
                                'names' => [
                                    'index'   => 'index',
                                    'create'  => 'create',
                                    'store'   => 'store',
                                    'show'    => 'show',
                                    'edit'    => 'edit',
                                    'update'  => 'update',
                                    'destroy' => 'destroy',
                                ],
                            ]);

                            // Nested Inventory Stock Routes
                            $router->group(['prefix' => 'stocks/{stocks}'], function (Router $router) {
                                // Inventory Stock Movement Routes
                                $router->resource('movements', 'StockMovementController', [
                                    'only' => [
                                        'index',
                                        'show',
                                    ],
                                    'names' => [
                                        'index' => 'movements.index',
                                        'show'  => 'movements.show',
                                    ],
                                ]);

                                $router->group(['prefix' => 'movements', 'as' => 'movements.'], function (Router $router) {
                                    // Nested Inventory Stock Movement Routes
                                    $router->group(['prefix' => '{movements}'], function (Router $router) {
                                        $router->post('rollback', ['as' => 'rollback', 'uses' => 'StockMovementController@rollback']);
                                    });
                                });
                            });
                        });
                    });
                });

                // Inventory Routes
                $router->resource('inventory', 'InventoryController', [
                    'names' => [
                        'index'   => 'index',
                        'create'  => 'create',
                        'store'   => 'store',
                        'show'    => 'show',
                        'edit'    => 'edit',
                        'update'  => 'update',
                        'destroy' => 'destroy',
                    ],
                ]);
            });

            // Location Routes
            $router->get('locations/json', ['as' => 'locations.json', 'uses' => 'LocationController@getJson']);

            $router->post('locations/move/{categories?}', ['as' => 'locations.nodes.move', 'uses' => 'LocationController@postMoveCategory']);

            $router->post('locations/create/{categories?}', ['as' => 'locations.nodes.store', 'uses' => 'LocationController@store']);

            $router->resource('locations', 'LocationController', [
                'except' => [
                    'show',
                ],
                'names' => [
                    'index'   => 'locations.index',
                    'create'  => 'locations.create',
                    'store'   => 'locations.store',
                    'edit'    => 'locations.edit',
                    'update'  => 'locations.update',
                    'destroy' => 'locations.destroy',
                ],
            ]);

            $router->get('locations/create/{categories}', ['as' => 'locations.nodes.create', 'uses' => 'LocationController@create']);

            // Metric Routes
            $router->resource('metrics', 'MetricController', [
                'names' => [
                    'index'   => 'metrics.index',
                    'create'  => 'metrics.create',
                    'store'   => 'metrics.store',
                    'show'    => 'metrics.show',
                    'edit'    => 'metrics.edit',
                    'update'  => 'metrics.update',
                    'destroy' => 'metrics.destroy',
                ],
            ]);
        });
    });
});