group('crm', ['filter' => ['org', 'subscription:crm'], 'namespace' => 'App\Modules\CRM\Controllers'], static function ($routes) { // Dashboard $routes->get('/', 'DashboardController::index'); // Contacts $routes->get('contacts', 'ContactsController::index'); $routes->get('contacts/table', 'ContactsController::contactsTable'); $routes->get('contacts/create', 'ContactsController::create'); $routes->post('contacts', 'ContactsController::store'); $routes->get('contacts/(:num)/edit', 'ContactsController::edit/$1'); $routes->post('contacts/(:num)', 'ContactsController::update/$1'); $routes->get('contacts/(:num)/delete', 'ContactsController::destroy/$1'); // Contacts AJAX API (for inline editing in Clients module) $routes->post('contacts/list/(:num)', 'ContactsController::ajaxList/$1'); $routes->post('contacts/store', 'ContactsController::ajaxStore'); $routes->post('contacts/update/(:num)', 'ContactsController::ajaxUpdate/$1'); $routes->post('contacts/delete/(:num)', 'ContactsController::ajaxDelete/$1'); // Deals $routes->group('deals', static function ($routes) { $routes->get('/', 'DealsController::index'); $routes->get('table', 'DealsController::table'); $routes->get('kanban', 'DealsController::kanban'); $routes->get('calendar', 'DealsController::calendar'); $routes->get('new', 'DealsController::create'); $routes->get('create', 'DealsController::create'); $routes->post('/', 'DealsController::store'); $routes->get('(:num)', 'DealsController::show/$1'); $routes->get('(:num)/edit', 'DealsController::edit/$1'); $routes->post('(:num)', 'DealsController::update/$1'); $routes->get('(:num)/delete', 'DealsController::destroy/$1'); // API endpoints $routes->post('move-stage', 'DealsController::moveStage'); $routes->get('contacts-by-client', 'DealsController::getContactsByClient'); // Stages $routes->get('stages', 'DealsController::stages'); $routes->post('stages', 'DealsController::storeStage'); $routes->post('stages/reorder', 'DealsController::reorderStages'); $routes->post('stages/(:num)', 'DealsController::updateStage/$1'); $routes->get('stages/(:num)/delete', 'DealsController::destroyStage/$1'); }); });