<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UserController;
use App\Http\Controllers\MenuController;
use App\Http\Controllers\ProductController;
use App\Http\Controllers\DispensaryController;
use App\Http\Controllers\CompanyController;
use App\Http\Controllers\DigitalMenuController;
use App\Http\Controllers\ExclusiveproductController;
use App\Http\Controllers\GiftproductController;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\GridController;
use App\Http\Controllers\MomController;
use App\Http\Controllers\SettingController;
use App\Http\Controllers\EmailsettingsController;
use App\Http\Controllers\BrandController;
use App\Http\Controllers\DestinationController;
use App\Http\Controllers\CustomerController;
use App\Http\Controllers\CategoryController;
use App\Http\Controllers\CustomFilterController;
use App\Http\Controllers\ReferralConfigController;
use App\Http\Controllers\ReportController;
use App\Http\Controllers\SubcategoryController;
use App\Http\Controllers\AttributeController;
use App\Http\Controllers\RoleController;
use App\Http\Controllers\TaxController;
use App\Http\Controllers\BannerController;
use App\Http\Controllers\MapBannerController;
use App\Http\Controllers\LandingPageController;
use App\Http\Controllers\OrdersController;
use App\Http\Controllers\CartController;
use App\Http\Controllers\CommentController;
use App\Http\Controllers\CategoryorderController;
use App\Http\Controllers\WishlistController;
use App\Http\Controllers\DriverandlocationController;
use App\Http\Controllers\DiscountController;
use App\Http\Controllers\LanguagesettingController;
use App\Http\Controllers\IntegrationController;
use App\Http\Controllers\UploadController;
use App\Http\Controllers\DiagnosticsController;
use App\Http\Controllers\TreezController;
use App\Http\Controllers\PeriodicSalesController;
use App\Http\Controllers\SupportController;
use App\Http\Controllers\WidgetController;
use App\Http\Controllers\EventsController;
use App\Http\Controllers\EffectsController;
use App\Http\Controllers\InventoryLogController;
use App\Http\Controllers\Ecommerce\CustomerController as ECustomerController;
use App\Http\Controllers\Ecommerce\PaymentController as EPaymentController;
// use App\Http\Controllers\Ecommerce\DiscountController as EDiscountController;
use App\Http\Controllers\Ecommerce\CommentRatingController as ECommentRatingController;
use App\Http\Controllers\Ecommerce\DomainRegistryController as EDomainRegistryController;
use App\Http\Controllers\Ecommerce\EmailController as EEmailController;
use App\Http\Controllers\Ecommerce\SMSController as ESMSController;
use App\Http\Controllers\Events\CustomerController as EVCustomerController;
use App\Http\Controllers\Events\OrdersController as EVOrdersController;
use App\Http\Controllers\CatalogController;
use App\Http\Controllers\CatalogNewController;
use App\Http\Controllers\ProductSimilarityController;
use Illuminate\Support\Facades\Cache;
use App\Http\Controllers\ArtisanCommandController;

/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/

Route::post('cron-command', [ArtisanCommandController::class, 'executeCustomCommand']);

Route::post('auth', [UserController::class,'login']);
Route::post('remove', [GridController::class,'removeAdvSearchData']);
Route::get('getLanguage/{type}/{lang}', [LanguagesettingController::class,'show']);
Route::post('periodicsales', [PeriodicSalesController::class,'post']);
Route::get('sendNotification', [WishlistController::class,'sendNotification']);
Route::post('upldoc', [UploadController::class,'uploadDoc']);
Route::get('generate_tiker_data', [IntegrationController::class,'generate_tiker_data']);
Route::get('compress_log', [IntegrationController::class,'compress_log']);
Route::get('flush', [IntegrationController::class,'flush']);
Route::post('generate_timeslot_report', [IntegrationController::class,'generate_timeslot_report']);
Route::post('abandoncart', [CartController::class,'abandoncart']);
Route::post('generate_routes', [ProductController::class,'generateRoutes']);
Route::post('uplodcustomer', [UploadController::class,'uplodcustomer']);
Route::post('forgotpassword', [UserController::class,'forgotpassword']);
Route::get('star/cloudprnt/to-device/{mac}/order-client-action', [OrdersController::class,'printReceiptGET']);
Route::get('apikey', [CompanyController::class,'get']);
Route::get('existcompanycode', [UserController::class,'existcompanycode']);

Route::post('get-email-sms-template', [EEmailController::class, 'getNotificationTemplate']);

Route::post('test-email-service', [IntegrationController::class,'testEmailService']);
Route::post('test-sms-service', [IntegrationController::class,'testSMSService']);

Route::middleware('auth:sanctum')->get('user', function (Request $request) {
    return $request->user();
});

Route::group(['prefix' => 'company({cmp})','middleware' => 'admin.auth'], function () use ($router) {
    Route::get('logout', [UserController::class,'logout']);
    Route::get('menu', [MenuController::class,'get']);
    Route::post('changepassword', [UserController::class,'changepassword']);
    Route::get('getMapKey', [CompanyController::class,'getMapKey']);
    
    Route::get('showSetting', [SettingController::class,'show']);
    Route::get('show', [GridController::class,'show']);
    Route::get('getColumns', [GridController::class,'getColumns']);
    Route::get('getproduct', [ProductController::class,'show']);
    Route::get('getproductsimilarityreport', [ProductSimilarityController::class,'get']);
    
    Route::get('getcompany', [CompanyController::class,'show']);
    Route::get('getMom', [MomController::class,'show']);
    Route::get('getMom', [MomController::class,'get']);
    Route::post('createMom', [MomController::class,'post']);
    Route::get('getEmailsetting', [EmailsettingsController::class,'show']);
    Route::post('upsertEmailsetting', [EmailsettingsController::class,'upsert']);
    Route::get('getCountryStateCity', [DestinationController::class,'get']);
    Route::get('report', [ReportController::class,'get']);
    Route::get('ordersummary', [ReportController::class,'getOrdersSummaryReport']);
    Route::get('orderradius', [ReportController::class,'getOrdersRadiusReport']);
    Route::get('reportorder', [ReportController::class,'reportorder']);
    Route::get('homedeliverymap', [ReportController::class,'generateHomeDeliveryMap']);
    Route::post('add', [GridController::class,'addAdvSearchData']);
    Route::get('getSavedSearch', [GridController::class,'getSavedSearch']);
    Route::get('getDatasource', [GridController::class,'getDatasource']);
    Route::post('updateorders', [OrdersController::class,'updateorders']);
    Route::post('upload', [UploadController::class,'post']);
    Route::post('uploadCoupon', [DiscountController::class,'uploadCoupon']);
    Route::post('uploadmultipledoc', [UploadController::class,'uploadmultipledoc']);
    Route::post('syncdiscount', [DiscountController::class,'syncdiscount']);
    Route::get('couponreport', [ReportController::class,'getCouponUsageReport']);
    
    // Dispensory
    Route::group(['prefix' => 'dispensary'], function () use ($router) {
        Route::post('', [DispensaryController::class,'post']);
        Route::get('', [DispensaryController::class,'show']);
        Route::delete('', [DispensaryController::class,'delete']);
        Route::patch('', [DispensaryController::class,'active']);
        Route::post('schedule', [DispensaryController::class,'schedule']);
        Route::post('savezones', [DispensaryController::class,'savezones']);
        Route::post('deliveryzones', [DispensaryController::class,'deliveryzones']);
        Route::post('/general', [DispensaryController::class,'savesettings']);
        Route::get('/general', [DispensaryController::class,'getsettings']);
        Route::get('/banner', [DispensaryController::class,'show']);
        Route::post('savebanner', [DispensaryController::class,'banner']);
        Route::get('/zone', [DispensaryController::class,'show']);
        Route::post('zone', [DispensaryController::class,'saveZone']);
        Route::get('/delivery', [DispensaryController::class,'deliveryshow']);
        Route::get('getdeliveryzones', [DispensaryController::class,'show']);
        Route::get('gettemplate', [DispensaryController::class,'show']); 
        Route::get('template', [DispensaryController::class,'deliverytemplate']);
        Route::get('getstate', [DispensaryController::class,'show']); 
        Route::get('getcity', [DispensaryController::class,'show']); 
        Route::post('deleteaddr', [DispensaryController::class,'deleteaddr']);

        Route::group(['prefix' => 'cova'], function () use ($router) {
            Route::get('getLocations', [DispensaryController::class,'getCovaLocations']);
            Route::get('getRoomsForLocations', [DispensaryController::class,'getCovaRoomsForLocations']);
        });
    });

    //company
    Route::group(['prefix' => 'company'], function () use ($router) {
        Route::post('alpine', [CompanyController::class,'postalpine']);
        Route::post('', [CompanyController::class,'post']);
        Route::get('', [CompanyController::class,'get']);
        Route::delete('', [CompanyController::class,'delete']);
        Route::patch('', [CompanyController::class,'active']);
        Route::get('apikey', [CompanyController::class,'get']);
        Route::post('upsert', [CompanyController::class,'upsert']);
        Route::get('get-comp-dispensary', [CompanyController::class,'getCmpDispensary']);
    }); 

    //digitalmenu
    Route::group(['prefix' => 'digitalmenu'], function () use ($router) {
        Route::post('', [DigitalMenuController::class,'post']);
        Route::get('', [DigitalMenuController::class,'get']);
    });

    //digitalmenu
    Route::group(['prefix' => 'digitalmenuscreen'], function () use ($router) {
        Route::get('', [DigitalMenuController::class,'getscreen']);
    });

    //exclusiveproduct
    Route::group(['prefix' => 'exclusiveproduct'], function () use ($router) {
        Route::post('', [ExclusiveproductController::class,'post']);
        Route::get('', [ExclusiveproductController::class,'show']);
    });

    //dashboard
    Route::group(['prefix' => 'dashboard'], function () use ($router) {
        Route::post('', [DashboardController::class,'post']);
        Route::get('', [DashboardController::class,'get']);
    });

    //settings
    Route::group(['prefix' => 'settings'], function () use ($router) {
        Route::get('', [SettingController::class,'get']);
        Route::post('', [SettingController::class,'post']);
    });

    // brand
    Route::group(['prefix' => 'brand'], function () use ($router) {
        Route::post('', [BrandController::class,'post']);
        Route::get('', [BrandController::class,'get']);
    });

    // customer
    Route::group(['prefix' => 'customer'], function () use ($router) {
        Route::post('', [CustomerController::class,'post']);
        Route::get('', [CustomerController::class,'get']);
        Route::post('importcustomer', [CustomerController::class,'import']);
        Route::get('hyper', [CustomerController::class,'hyper']);
        Route::post('hyperdelete', [CustomerController::class,'hyperdelete']);
    });

    // category
    Route::group(['prefix' => 'category'], function () use ($router) {
        Route::get('', [CategoryController::class,'get']);
        Route::post('', [CategoryController::class,'post']);
    });

    // custom_filter
    Route::group(['prefix' => 'custom_filter'], function () use ($router) {
        Route::get('', [CustomFilterController::class,'get']);
        Route::post('', [CustomFilterController::class,'post']);
    });

    Route::group(['prefix' => 'referralconfig'], function () use ($router) {
        Route::get('', [ReferralConfigController::class,'get']);
        Route::post('', [ReferralConfigController::class,'post']);
    });
    
    //mom
    Route::post('mom', [MomController::class,'post']);
    Route::get('mom', [MomController::class,'get']);
    Route::post('momconsum', [MomController::class,'postconsum']);

    // subcategory
    Route::group(['prefix' => 'subcategory'], function () use ($router) {
        Route::post('', [SubcategoryController::class,'post']);
        Route::get('', [SubcategoryController::class,'get']);
    });

    // attribute
    Route::group(['prefix' => 'attribute'], function () use ($router) {
        Route::post('', [AttributeController::class,'post']);
        Route::get('', [AttributeController::class,'get']);
    });

    // role
    Route::group(['prefix' => 'role'], function () use ($router) {
        Route::post('', [RoleController::class,'post']);
        Route::get('', [RoleController::class,'get']);
    });

    // Product
    Route::group(['prefix' => 'product'], function () use ($router) {
        Route::post('', [ProductController::class,'post']);
        Route::get('', [ProductController::class,'get']);
        Route::delete('', [ProductController::class,'delete']);
        Route::patch('', [ProductController::class,'active']);
        Route::post('saveaddon', [ProductController::class,'saveaddon']);
        Route::post('deleteaddon', [ProductController::class,'deleteaddon']);
    });

    // Tax
    Route::group(['prefix' => 'tax'], function () use ($router) {
        Route::post('', [TaxController::class,'post']);
        Route::get('', [TaxController::class,'show']);
        Route::delete('', [TaxController::class,'delete']);
        Route::patch('', [TaxController::class,'active']);
    });

    // Company Banner
    Route::group(['prefix' => 'banner'], function () use ($router) {
        Route::post('', [BannerController::class,'post']);
        Route::get('', [BannerController::class,'get']);
    });

    // Company Map Banner
    Route::group(['prefix' => 'mapbanner'], function () use ($router) {
        Route::post('', [MapBannerController::class,'post']);
        Route::get('', [MapBannerController::class,'get']);
    });

    // Landingpage
    Route::group(['prefix' => 'landingpage'], function () use ($router) {
        Route::post('', [LandingPageController::class,'post']);
        Route::get('', [LandingPageController::class,'get']);
    });

    Route::group(['prefix' => 'orders'], function () use ($router) {
        Route::post('', [OrdersController::class,'post']);
        Route::get('', [OrdersController::class,'get']);
    });
    Route::group(['prefix' => 'cart'], function () use ($router) {
        Route::get('', [CartController::class,'grid']);
    });

    //user
    Route::group(['prefix' => 'user'], function () use ($router) {
        Route::post('', [UserController::class,'post']);
        Route::get('', [UserController::class,'get']);
    });

    // comment
    Route::group(['prefix' => 'comment'], function () use ($router) {
        Route::post('', [CommentController::class,'post']);
        Route::get('', [CommentController::class,'get']);
    });

    // categoryorder
    Route::group(['prefix' => 'categoryorder'], function () use ($router) {
        Route::post('', [CategoryorderController::class,'post']);
        Route::get('', [CategoryorderController::class,'get']);
    });

    // watchlist
    Route::group(['prefix' => 'watchlist'], function () use ($router) {
        Route::post('', [WishlistController::class,'post']);
        Route::get('', [WishlistController::class,'get']);
    });

    // driver and location
     Route::group(['prefix' => 'driverandlocation'], function () use ($router) {
        Route::get('', [DriverandlocationController::class,'getGrid']);
        Route::post('driver', [DriverandlocationController::class,'postDriver']);
        Route::get('driver', [DriverandlocationController::class,'getDriver']);
        Route::post('location', [DriverandlocationController::class,'postLocation']);
        Route::get('location', [DriverandlocationController::class,'getLocation']);
    });

    // Virtual Dispensory
    Route::group(['prefix' => 'coupon'], function () use ($router) {
        Route::post('', [DiscountController::class,'c_get']);    
    });

    Route::group(['prefix' => 'discount'], function () use ($router) {
        Route::post('', [DiscountController::class,'post']);
        Route::get('', [DiscountController::class,'c_get']);   
    });

    Route::group(['prefix' => 'agediscount'], function () use ($router) {
        Route::post('', [DiscountController::class,'agepost']);
        Route::get('', [DiscountController::class,'ageget']);     
    });

    // watchlist
    Route::group(['prefix' => 'watchlist'], function () use ($router) {
        Route::post('', [WishlistController::class,'post']);
        Route::get('', [WishlistController::class,'get']);
    });

    Route::group(['prefix' => 'virtualdispensary'], function () use ($router) {
        Route::post('', [DispensaryController::class,'virtualdispensary']);
    });

    Route::group(['prefix' => 'timedispensary'], function () use ($router) {
        Route::post('', [DispensaryController::class,'timedispensary']);
    });

    Route::group(['prefix' => '/diagnose'], function () use ($router) {
        Route::get('', [DiagnosticsController::class,'get']);
    });

    Route::group(['prefix' => '/integration'], function () use ($router) { 
        Route::post('/dynamic', [IntegrationController::class,'dynamic']);
        Route::post('/testimg', [UploadController::class,'testimg']);
        Route::get('/get', [IntegrationController::class,'get']);
        Route::post('/cacheconfig', [IntegrationController::class,'cacheconfig']);
        Route::get('/sysgetlog', [IntegrationController::class,'sysgetlog']);
        Route::get('/sysgetziplog', [IntegrationController::class,'sysgetziplog']);
        Route::get('/generatezip', [IntegrationController::class,'generatezip']);
        Route::post('/generatesitemaps', [IntegrationController::class,'generateSitemaps']);

    });

    // Integration
    Route::group(['prefix' => '/integration/treez'], function () use ($router) {
        Route::post('', [TreezController::class,'post']);
        Route::get('', [TreezController::class,'get']);
    });

    // customer
    Route::group(['prefix' => 'helpdesk'], function () use ($router) {
        Route::get('customer', [CustomerController::class,'get']);
    });

    // bogo discount
    Route::group(['prefix' => 'bogo'], function () use ($router) {
        Route::post('', [DiscountController::class,'post']);
        Route::get('', [DiscountController::class,'get']);
    });

    Route::group(['prefix' => 'widget'], function () use ($router) {
        Route::post('', [WidgetController::class,'post']);
        Route::get('', [WidgetController::class,'get']);
    });

    Route::group(['prefix' => 'orderstype'], function () use ($router) {
        Route::post('', [OrdersController::class,'postorderstype']);
        Route::get('', [OrdersController::class,'orderstype']);
    });

    Route::group(['prefix' => 'events'], function () use ($router) {
        Route::post('', [EventsController::class,'post']);
        Route::get('', [EventsController::class,'get']);
    });

    Route::group(['prefix' => 'ordersevent'], function () use ($router) {
        Route::get('', [EventsController::class,'getOrders']);
    });

    Route::group(['prefix' => 'giftproduct'], function () use ($router) {
        Route::post('', [GiftproductController::class,'post']);
        Route::get('', [GiftproductController::class,'show']);
    });
    //effects
    Route::group(['prefix' => 'effects'], function () use ($router) {
        Route::post('', [EffectsController::class,'post']);
        Route::get('', [EffectsController::class,'get']);
    });
    //search customer
    Route::group(['prefix' => 'cust'], function () use ($router) {
        Route::get('', [ReportController::class,'get']);
    });

    Route::group(['prefix' => 'config'], function () use ($router) {
        Route::post('login', [UserController::class,'configlogin']);
    });

    Route::group(['prefix' => 'utilities'], function () use ($router) {
        Route::post('inventory', [InventoryLogController::class,'import']);
        Route::get('inventory', [InventoryLogController::class,'export']);
        Route::get('inventory_date', [InventoryLogController::class,'last_inv_date']);
    });
    
    // category
    Route::group(['prefix' => 'categoryimg'], function () use ($router) {
        Route::get('', [CategoryController::class,'getimg']);
        Route::get('subcatwise', [CategoryController::class,'getimg']);
        Route::post('', [CategoryController::class,'postimg']);
    });

    Route::get('getLanguageseting', [LanguagesettingController::class,'show']);
    Route::post('upsertLanguagesetting', [LanguagesettingController::class,'upsert']);
});

Route::group(['prefix' => 'company({cmp})'], function () use ($router) {
    //Route::get('exportInventoryReport', [ReportController::class,'exportInventoryReport']);
    //Route::get('exportOrderReport', [ReportController::class,'exportOrderReport']);
    //Route::get('exportOrderSummaryReport', [ReportController::class,'exportOrderSummaryReport']);
    //Route::get('exportOrderRadiusReport', [ReportController::class,'exportOrderRadiusReport']);
    Route::group(['prefix' => '/customFilter'], function () use ($router) {
        Route::get('categories', [CategoryController::class,'getFilterCategories']);
    });
    Route::get('getMenuAccess', [MenuController::class,'getMenuAccess']);
    Route::post('forgotpassword', [UserController::class,'forgotpassword']);
    Route::post('verify', [UserController::class,'verify']);
    Route::post('updatePass', [UserController::class,'update']);
    Route::get('exportInventory', [ProductController::class,'exportInventory']); //geetesh uncommented
    Route::group(['prefix' => '/integration'], function () use ($router) { 
        Route::post('/dynamic', [IntegrationController::class,'dynamic']);
        Route::post('/tv', [IntegrationController::class,'getTVData']);
    });
    Route::group(['prefix' => 'digitalmenu'], function () use ($router) {
        Route::post('', [DigitalMenuController::class,'post']);
        Route::get('', [DigitalMenuController::class,'get']);
    });
});

Route::group(['prefix' => 'v1/company({cmp})','middleware' => 'cust.refresh'], function () use ($router) {
    Route::get('/refreshtoken', [ECustomerController::class,'refresh_token']);
});

Route::group(['prefix' => 'v1/company({cmp})','middleware' => 'cust.auth'], function () use ($router) {
    Route::group(['prefix' => '/users'], function () use ($router) {
        Route::post('/uploaddoc', [UploadController::class,'uploadDoc']);
        Route::get('/getUploadedDoc', [UploadController::class,'getUploadedDoc']);
        Route::get('/', [ECustomerController::class,'get']);
        Route::post('/deleteDoc', [UploadController::class,'deleteDoc']);
        Route::post('/update', [ECustomerController::class,'update']);
        Route::post('/request_deactivate', [ECustomerController::class,'request_deactive_account']);
        Route::get('/alpineLoyaltyPoints', [ECustomerController::class,'alpineLoyaltyPoints']);
        Route::post('/makeLoyaltyMember', [ECustomerController::class,'makeLoyaltyMember']);
        Route::get('/getalpinepoints', [ECustomerController::class,'getalpinepoints']);
    });
    Route::group(['prefix' => '/payment'], function () use ($router) {
        Route::get('/', [EPaymentController::class,'get']);
        Route::post('/', [EPaymentController::class,'delete']);
    });

    Route::group(['prefix' => '/discount'], function () use ($router) {
        Route::get('/', [DiscountController::class,'c_get']);
    });

    Route::group(['prefix' => '/cart'], function () use ($router) {
        Route::post('/order', [CartController::class,'post']);
    });
    //giftproduct
    Route::group(['prefix' => 'giftproduct'], function () use ($router) {
        Route::post('', [GiftproductController::class,'post']);
        Route::get('', [GiftproductController::class,'show']);
    });
    Route::group(['prefix' => '/payment'], function () use ($router) {
        Route::get('/', [EPaymentController::class,'get']);
        Route::post('/', [EPaymentController::class,'delete']);
        Route::get('/verifyhypurtoken', [EPaymentController::class,'verifyhypur']);
        Route::post('/createorder', [EPaymentController::class,'createorder']);
        Route::post('/updateAeropay', [EPaymentController::class,'updateAeropay']);
    });
    Route::get('/cspw/{status}/{orderno}/{key}', [OrdersController::class,'updateStatusOrder']);
});

Route::group(['prefix' => 'v1/company({cmp})'], function () use ($router) {
    Route::get('/mom', [MomController::class,'get']);
    Route::get('/getCountryStateCity', [DestinationController::class,'get']);
    Route::get('/getCountryStateCityData', [DestinationController::class,'getCountryStateCityData']);
    Route::post('submit_support', [SupportController::class,'post']);
    Route::get('/app/lang',[LanguagesettingController::class,'show']);
    Route::get('/appdetail',[CompanyController::class,'appdetail']);
    Route::get('/check_version',[IntegrationController::class,'check_app_version']);
    Route::get('/verifyhome', [EDomainRegistryController::class,'verifyhome']);
    Route::get('verifydomainloaded', [EDomainRegistryController::class,'checkregistryloaded']);
    Route::get('verifydomainloadednew', [EDomainRegistryController::class,'checkregistryloadednew']); 

    Route::group(['prefix' => '/users'], function () use ($router) {
        Route::post('/signin', [ECustomerController::class,'signin']);
        Route::post('/signup', [ECustomerController::class,'signup']);
        Route::post('/forgotpassword', [ECustomerController::class,'forgotpassword']);
        Route::post('/verify', [ECustomerController::class,'verify']);
        Route::post('/sendemailverifylink', [ECustomerController::class,'sendEmailVerifyLink']);
        Route::get('/getAddress', [CustomerController::class,'get']);
        Route::post('/updatePass', [ECustomerController::class,'update']);
    });

    Route::get('customfilters', [CategoryController::class,'custom']);
    Route::get('widgetfilters', [CategoryController::class,'widgetFilters']);

    Route::group(['prefix' => '/customer'], function () use ($router) {
        Route::get('/', [CustomerController::class,'get']);
        Route::post('/', [CustomerController::class,'post']);
    });

    Route::get('customfilters', [CategoryController::class,'custom']);
    Route::get('widgetfilters', [CategoryController::class,'widgetFilters']);

    Route::group(['prefix' => '/product'], function () use ($router) {
        Route::get('/', [ProductController::class,'get']);
        Route::get('delimg', [ProductController::class,'delimg']);
        // Route::post('/productlist', [CatalogController::class,'productlist']);
        // Route::post('/catalog', [CatalogController::class,'catalog']);
        // Route::post('/overview', [CatalogController::class,'overview']);
        // Route::post('/addonproducts', [CatalogController::class,'addonproducts']);

        Route::post('/productlist', [CatalogNewController::class,'productlist']);
        Route::post('/catalog', [CatalogNewController::class,'catalog']);
        Route::post('/overview', [CatalogNewController::class,'overview']);
        Route::post('/addonproducts', [CatalogNewController::class,'addonproducts']); 
    });
    
    //Exclusiveproduct
    Route::group(['prefix' => '/excluprod'], function () use ($router) {
        Route::get('/', [ExclusiveproductController::class,'get']);
    });
    // brand
    Route::group(['prefix' => '/brand'], function () use ($router) {
        Route::get('/', [BrandController::class,'get']);
    });

    // category
    Route::group(['prefix' => '/category'], function () use ($router) {
        Route::get('/', [CategoryController::class,'get']);
        Route::post('/checkthc', [CategoryController::class,'checkthc']);
    });

    Route::group(['prefix' => '/verification'], function () use ($router) {
        Route::get('/', [CategoryController::class,'get']);
    });

    Route::group(['prefix' => '/orders'], function () use ($router) {
        Route::post('/', [OrdersController::class,'post']);
        Route::get('/', [OrdersController::class,'get']);
    });

    //comment rating
    Route::group(['prefix' => '/comments'], function () use ($router) {
        Route::post('/', [ECommentRatingController::class,'post']);
        Route::get('/', [ECommentRatingController::class,'get']);
        // Route::get('/', ['OrdersController@get']);
    });

    //wishlist
    Route::group(['prefix' => '/wishlist'], function () use ($router) {
        Route::post('/', [WishlistController::class,'post']);
        Route::get('/', [WishlistController::class,'get']);
    });

    //my review
    Route::group(['prefix' => '/myreview'], function () use ($router) {
       // Route::post('/', ['MyreviewController@post']);
        Route::get('/', [MyreviewController::class,'get']);
    });

    // dispensary
    Route::group(['prefix' => '/dispensary'], function () use ($router) {
        Route::get('/', [DispensaryController::class,'show']);
        Route::get('/findExpressDelivery', [DispensaryController::class,'findExpressDelivery']);
        Route::get('/validateExpressDelivery', [DispensaryController::class,'validateExpressDelivery']);
        Route::get('/findHomeDelivery', [DispensaryController::class,'findHomeDelivery']);
        Route::get('/validateHomeDelivery', [DispensaryController::class,'validateHomeDelivery']);
    });

    Route::group(['prefix' => '/cart'], function () use ($router) {
        Route::post('', [CartController::class,'post']);
        Route::post('/check', [CartController::class,'post']);
        Route::get('', [CartController::class,'get']);
    });

    Route::group(['prefix' => '/cli/integration'], function () use ($router) { 
        Route::get('/dynamic', [IntegrationController::class,'dynamic']);
    });

    Route::group(['prefix' => '/integration'], function () use ($router) { 
        Route::post('/dynamic', [IntegrationController::class,'dynamic']);
    });

    Route::group(['prefix' => 'widget'], function () use ($router) {
        Route::get('header', [CartController::class, 'widget']);
        Route::get('header/categories', [CategoryController::class, 'widget']);
        Route::get('header/menu', [MenuController::class, 'getWidgetHeaderMenu']);
    });

    Route::group(['prefix' => 'effects'], function () use ($router) {
        Route::get('', [EffectsController::class,'get']);
    });

    Route::group(['prefix' => 'catalog'], function () use ($router) {
        Route::get('', [ProductController::class,'catalog']);
        Route::get('/category', [ProductController::class,'catalogCategory']);
    });

    Route::group(['prefix' => 'compress'], function () use ($router) {
        Route::get('get', [UploadController::class,'getImagesToCompress']);
        Route::post('/update', [UploadController::class,'updateCompressedImages']);
    });
});


Route::group(['prefix' => 'v1'], function () use ($router) {
    Route::get('verifydomain', [EDomainRegistryController::class,'checkregistry']);
    Route::get('verifystore', [EDomainRegistryController::class,'verifystore']);
    Route::get('emailsend', [EEmailController::class,'test']);
    Route::get('smssend', [ESMSController::class,'test']);
    Route::post('updateDocumentStatus', [UploadController::class,'updateDocumentStatus']);
    Route::get('pay',[EPaymentController::class,'paymentForm']);
    Route::get('deactivate',[ECustomerController::class,'deactivate']);
    Route::get('getZones',[DispensaryController::class,'getZones']);
    Route::group(['prefix' => 'widget'], function () use ($router) {
        Route::get('product', [ProductController::class,'widget']);
        Route::get('tags', [ProductController::class,'widgettags']);
        Route::get('company', [EDomainRegistryController::class,'widget']);
    });
    Route::get('verifydomainnew', [EDomainRegistryController::class,'checkregistrynew']);
    Route::post('/users/verify', [ECustomerController::class,'verify']);
});

Route::group(['prefix' => 'v1/company({cmp})/events','middleware' => 'cust.refresh'], function () use ($router) {
    Route::get('refreshtoken', [EVCustomerController::class,'refresh_token']);
});

Route::group(['prefix' => 'v1/company({cmp})/events'], function () use ($router) {
    Route::group(['prefix' => 'users'], function () use ($router) {
        Route::post('verify',    [EVCustomerController::class,'verify']);
        Route::post('signup',    [EVCustomerController::class,'signup']);
        Route::post('config',    [EVCustomerController::class,'config']);
        Route::post('uploaddoc', [EVCustomerController::class,'uploaddoc']);
        Route::post('deleteDoc', [EVCustomerController::class,'deleteDoc']);
    });

    Route::group(['prefix' => 'product'], function () use ($router) {
        Route::post('import', [EVCustomerController::class,'import']);
        Route::post('get', [EVOrdersController::class,'getProduct']);
    });
    Route::group(['prefix' => 'order', 'middleware' => 'cust.auth'], function () use ($router) {
        Route::post('create', [EVOrdersController::class,'postOrder']);
    });
});

Route::group(['prefix' => 'v1/events'], function () use ($router) {
    Route::post('verifydomain', [EVCustomerController::class,'checkregistry']);
});

Route::get('clearcache', function() {
    Cache::flush();
});