<?php

return [
    // Auth
    'GET'  => [
        // API
        'api/users/search'              => ['UserController', 'searchUsers'],
        'api/numista/search'            => ['ApiController', 'searchNumista'],
        'api/numista/coin/{numista_id}' => ['ApiController', 'getCoinDetails'],
        'api/numista/banknote/{numista_id}' => ['ApiController', 'getBanknoteDetails'],
        'api/numista/issuers'           => ['ApiController', 'getIssuers'],
        
        // Test route
        'test-route'                    => ['CollectionController', 'testRoute'],

        ''                              => ['AuthController', 'loginForm'],
        'login'                         => ['AuthController', 'loginForm'],
        'logout'                        => ['AuthController', 'logout'],
        'home'                          => ['HomeController', 'index'],
        'profile'                       => ['ProfileController', 'edit'],
        'profile/export'                => ['ProfileController', 'export'],

        // Collections
        'collections/create'            => ['CollectionController', 'create'],
        'collections/{id}/edit'         => ['CollectionController', 'edit'],
        'collections/{id}/pdf'          => ['PdfController', 'exportCollection'],
        'collections/{id}/xls'          => ['PdfController', 'exportCollectionXls'],
        'collections/{id}/sample/{type}' => ['CollectionController', 'downloadSample'],
        'collections/{id}/delete'       => ['CollectionController', 'delete'],
        'collections/{id}/move-up'      => ['CollectionController', 'moveUp'],
        'collections/{id}/move-down'    => ['CollectionController', 'moveDown'],
        'collections/{id}/subcollections/json' => ['CollectionController', 'getSubcollectionsJson'],
        'collections/{id}'              => ['CollectionController', 'show'],

        // Subcollections
        'collections/{collection_id}/subcollections/create'       => ['SubcollectionController', 'create'],
        'subcollections/{id}/edit'      => ['SubcollectionController', 'edit'],
        'subcollections/{id}/pdf'       => ['PdfController', 'exportSubcollection'],
        'subcollections/{id}/xls'       => ['PdfController', 'exportSubcollectionXls'],
        'subcollections/{id}/delete'    => ['SubcollectionController', 'delete'],
        'subcollections/{id}/move-up'   => ['SubcollectionController', 'moveUp'],
        'subcollections/{id}/move-down' => ['SubcollectionController', 'moveDown'],
        'subcollections/{id}'           => ['SubcollectionController', 'show'],

        // Items
        'subcollections/{subcollection_id}/items/create'  => ['ItemController', 'create'],
        'items/{id}/edit'               => ['ItemController', 'edit'],
        'items/{id}/delete'             => ['ItemController', 'delete'],
        'items/{id}/move-up'            => ['ItemController', 'moveUp'],
        'items/{id}/move-down'          => ['ItemController', 'moveDown'],

        // Coins
        'subcollections/{subcollection_id}/coins/create' => ['CoinController', 'create'],
        'coins/{id}/edit'               => ['CoinController', 'edit'],
        'coins/{id}/delete'             => ['CoinController', 'delete'],
        'coins/{id}/move-up'            => ['CoinController', 'moveUp'],
        'coins/{id}/move-down'          => ['CoinController', 'moveDown'],

        // Literature
        'literature'                    => ['LiteratureController', 'index'],
        'literature/{id}/delete'        => ['LiteratureController', 'delete'],

        // Lists
        'lists'                         => ['ListController', 'index'],
        'lists/create'                  => ['ListController', 'create'],
        'lists/{id}/edit'               => ['ListController', 'edit'],
        'lists/{id}/delete'             => ['ListController', 'delete'],
        'lists/{id}/move-up'            => ['ListController', 'moveUp'],
        'lists/{id}/move-down'          => ['ListController', 'moveDown'],

        // Admin
        'admin'                         => ['AdminController', 'dashboard'],
        'admin/users'                   => ['AdminController', 'users'],
        'admin/users/{id}/approve'      => ['AdminController', 'approveUser'],
        'admin/users/{id}/reject'       => ['AdminController', 'rejectUser'],
        'admin/users/{id}/edit'         => ['AdminController', 'editUser'],
        'admin/users/{id}/delete'       => ['AdminController', 'deleteUser'],
        'admin/settings'                => ['AdminController', 'settings'],
        'admin/templates'               => ['AdminController', 'templates'],
        'admin/templates/{id}/toggle'   => ['AdminController', 'toggleTemplate'],
        'admin/templates/export/pdf'    => ['AdminController', 'exportTemplatesPdf'],
        'admin/templates/export/xls'    => ['AdminController', 'exportTemplatesXls'],
        'admin/condition-options'        => ['AdminController', 'conditionOptions'],
        'admin/condition-options/{id}/delete' => ['AdminController', 'deleteConditionOption'],
        'admin/variant-type-options'     => ['AdminController', 'variantTypeOptions'],
        'admin/variant-type-options/{id}/delete' => ['AdminController', 'deleteVariantTypeOption'],

        // Registration
        'register'                      => ['AuthController', 'registerForm'],

        // Email Verification
        'verify-email'                  => ['AuthController', 'verifyEmail'],

        // Password Recovery
        'forgot-password'               => ['AuthController', 'forgotPasswordForm'],
        'reset-password'                => ['AuthController', 'resetPasswordForm'],

        // Profile
        'profile'                       => ['ProfileController', 'edit'],
        'profile/toggle-sharing'        => ['ProfileController', 'toggleAllowSharing'],

        // PDF Export
        'collections/{id}/pdf'          => ['PdfController', 'exportCollection'],
        'subcollections/{id}/pdf'       => ['PdfController', 'exportSubcollection'],

        // Pages
        'support'                       => ['PageController', 'support'],
        'contact'                       => ['PageController', 'contact'],
        'terms'                         => ['PageController', 'terms'],
        'privacy'                       => ['PageController', 'privacy'],
        '404'                           => ['PageController', 'notFound'],

        // Language
        'lang/{locale}'                 => ['HomeController', 'setLanguage'],
        'lang/{locale}/{path}'          => ['HomeController', 'setLanguageWithRedirect'],

        // Search
        'search'                        => ['SearchController', 'search'],
        
        // Wishlist
        'wishlist'                      => ['WishlistController', 'index'],
        'api/wishlist/check'            => ['WishlistController', 'apiCheck'],
        'api/wishlist/stats'            => ['WishlistController', 'apiStats'],
        
        // Sitemap
        'sitemap.xml'                   => ['SitemapController', 'index'],
        'sitemap_index.xml'             => ['SitemapController', 'sitemapIndex'],

        // Marketplace
        'marketplace'                       => ['MarketplaceController', 'index'],
        'marketplace/sitemap.xml'           => ['SitemapController', 'marketplace'],
        'marketplace/create'                => ['MarketplaceController', 'create'],
        'marketplace/my-listings'           => ['MarketplaceController', 'myListings'],
        'marketplace/bookmarks'             => ['MarketplaceController', 'bookmarks'],
        'marketplace/saved-searches'        => ['MarketplaceController', 'savedSearches'],
        'marketplace/user/{id}'             => ['MarketplaceController', 'userProfile'],
        'marketplace/{slug}/edit'           => ['MarketplaceController', 'edit'],
        'marketplace/{slug}'                => ['MarketplaceController', 'show'],
        'marketplace/{id}/close'            => ['MarketplaceController', 'close'],
        'marketplace/{id}/sold'             => ['MarketplaceController', 'soldForm'],
        'marketplace/{id}/rate/{userId}'    => ['MarketplaceController', 'rateForm'],
        'marketplace/{id}/report'           => ['MarketplaceController', 'reportForm'],
        'marketplace/{id}/delete'           => ['MarketplaceController', 'delete'],
        'marketplace/{slug}'                => ['MarketplaceController', 'show'],
        'api/marketplace/user-items'         => ['MarketplaceController', 'apiUserItems'],

        // Messages
        'messages'                       => ['MessagesController', 'index'],
        'messages/new'                    => ['MessagesController', 'new'],
        'messages/{id}'                   => ['MessagesController', 'show'],
        'messages/conversation/{id}'      => ['MessagesController', 'conversation'],
        'messages/{id}/delete'            => ['MessagesController', 'delete'],

        // Articles (public)
        'articles'                          => ['ArticleController', 'index'],
        'articles/feed.atom'                => ['ArticleController', 'atom'],
        'articles/sitemap.xml'              => ['ArticleController', 'sitemap'],
        'feed.xml'                          => ['ArticleController', 'rss'],
        'articles/category/{slug}'          => ['ArticleController', 'indexByCategory'],
        'articles/tag/{slug}'               => ['ArticleController', 'indexByTag'],
        'articles/{slug}'                   => ['ArticleController', 'show'],

        // Articles (admin)
        'admin/articles'                    => ['ArticleController', 'adminIndex'],
        'admin/articles/create'             => ['ArticleController', 'adminCreate'],
        'admin/articles/{id}/edit'          => ['ArticleController', 'adminEdit'],
        'admin/articles/{id}/delete'        => ['ArticleController', 'adminDelete'],
    ],

    'POST' => [
        'login'                         => ['AuthController', 'login'],
        'profile'                       => ['ProfileController', 'update'],
        'profile/avatar'                => ['ProfileController', 'uploadAvatar'],
        'profile/password'              => ['ProfileController', 'updatePassword'],
        'profile/preferences'           => ['ProfileController', 'updatePreferences'],
        'profile/import'                => ['ProfileController', 'import'],

        // Collections
        'collections'                   => ['CollectionController', 'store'],
        'collections/import'            => ['CollectionController', 'import'],
        'collections/{id}'              => ['CollectionController', 'update'],

        // Subcollections
        'subcollections'                => ['SubcollectionController', 'store'],
        'subcollections/{id}'           => ['SubcollectionController', 'update'],

        // Items
        'items'                         => ['ItemController', 'store'],
        'items/{id}'                    => ['ItemController', 'update'],
        'items/{id}/duplicate'          => ['ItemController', 'duplicate'],
        'variants/{id}/toggle-owned'    => ['ItemController', 'toggleVariantOwned'],

        // Coins
        'coins'                         => ['CoinController', 'store'],
        'coins/{id}'                    => ['CoinController', 'update'],
        'coins/{id}/duplicate'          => ['CoinController', 'duplicate'],
        'coins/{id}/toggle-owned'       => ['CoinController', 'toggleOwned'],
        'coin-variants/{id}/toggle-owned' => ['CoinController', 'toggleVariantOwned'],

        // Literature
        'literature'                    => ['LiteratureController', 'store'],

        // Lists
        'lists'                         => ['ListController', 'store'],
        'lists/{id}'                    => ['ListController', 'update'],

        // Registration
        'register'                      => ['AuthController', 'register'],

        // Password Recovery
        'forgot-password'               => ['AuthController', 'forgotPassword'],
        'reset-password'                => ['AuthController', 'resetPassword'],

        // Public forms
        'contact'                       => ['PageController', 'sendContact'],

        // Cookie Consent
        'cookie-consent'                => ['AuthController', 'handleCookieConsent'],

        // Profile
        'profile'                       => ['ProfileController', 'update'],
        'profile/avatar'                => ['ProfileController', 'uploadAvatar'],
        'profile/password'              => ['ProfileController', 'updatePassword'],
        'profile/toggle-sharing'        => ['ProfileController', 'toggleAllowSharing'],

        // Admin
        'admin/users/{id}'              => ['AdminController', 'updateUser'],
        'admin/settings'                => ['AdminController', 'updateSettings'],
        'admin/condition-options'        => ['AdminController', 'storeConditionOption'],
        'admin/condition-options/{id}'   => ['AdminController', 'updateConditionOption'],
        'admin/variant-type-options'     => ['AdminController', 'storeVariantTypeOption'],
        'admin/variant-type-options/{id}' => ['AdminController', 'updateVariantTypeOption'],

        // Sharing
        'collections/{id}/share'        => ['ShareController', 'share'],
        'collections/{id}/share-email' => ['ShareController', 'shareEmail'],
        'templates/{id}/clone'          => ['ShareController', 'cloneTemplate'],

        // Marketplace
        'marketplace'                    => ['MarketplaceController', 'store'],
        'marketplace/{id}/update'       => ['MarketplaceController', 'update'],
        'marketplace/{id}/bookmark'      => ['MarketplaceController', 'bookmark'],
        'marketplace/{id}/report'        => ['MarketplaceController', 'report'],
        'marketplace/{id}/close'         => ['MarketplaceController', 'close'],
        'marketplace/{id}/sold'          => ['MarketplaceController', 'markSold'],
        'marketplace/{id}/rate/{userId}' => ['MarketplaceController', 'submitRating'],
        'marketplace/{id}/delete'        => ['MarketplaceController', 'delete'],

        // Messages
        'messages/new'                   => ['MessagesController', 'create'],
        'messages/{id}/delete'           => ['MessagesController', 'delete'],

        // Wishlist API
        'api/wishlist/add'              => ['WishlistController', 'apiAdd'],
        'api/wishlist/remove'           => ['WishlistController', 'apiRemove'],
        'api/wishlist/update'           => ['WishlistController', 'apiUpdate'],

        // Marketplace API
        'api/marketplace/saved-search'  => ['MarketplaceController', 'apiSavedSearchStore'],
        'api/marketplace/saved-search/delete' => ['MarketplaceController', 'apiSavedSearchDelete'],
        'admin/articles'                => ['ArticleController', 'adminStore'],
        'admin/articles/{id}'           => ['ArticleController', 'adminUpdate'],
        'admin/articles/{id}/delete'    => ['ArticleController', 'adminDelete'],
    ],
];
