<?php

use Illuminate\Http\Request;

/** @var \Laravel\Lumen\Routing\Router $router * */
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It is a breeze. Simply tell Lumen the URIs it should respond to
| and give it the Closure to call when that URI is requested.
|
*/
$router->post('conversions', 'WebhooksController@addSale');

// Service partner API (YK-366): key-authenticated, throttled, no member session
$router->group(['prefix' => 'partner/v1', 'middleware' => 'partner_auth|throttle:120,1'], function () use ($router) {
    $router->post('links', 'PartnerController@createLink');
    $router->get('links/{externalRef}', 'PartnerController@lookupLink');
    $router->get('reports/performance', 'PartnerController@performance');
});
$router->get('googledatatest', [
    'as' => 'daily.data.studio', // Add a name to the route
    'uses' => 'Data\GoogleDataApi@index',
]) ;

$router->group(['middleware' => 'cors|localization'], function () use ($router) {
    /* Mobile App Purposes */
    $router->post('/forceUpdate', 'AppController@forceUpdate');
    $router->post('/genToken', 'AppController@getToken');

    $router->post('/welcomeScreen', 'AppController@getHomeScreens');
    $router->post('/updateLang', 'AppController@updateSessLang');
    $router->post('/checkToken', 'AppController@updateSessionInfo');
    $router->post('/getSettings', 'SettingController@getSettings');
    $router->post('/extSettings', 'SettingController@extension_settings');
    $router->post('/getConfig', 'SettingController@getConfig');
    $router->post('/getTranslations', 'SettingController@getTranslations');
    $router->post('/getTopStores', 'StoreController@getTopStores');
    /* End App Purpose */

    $router->get('/auto/bonus/expiring', 'Auto\CashbackController@expiring_bonus');
    $router->get('/auto/bonus/expired', 'Auto\CashbackController@expired_bonus');
    $router->get('/auto/bonus/confirm', 'Auto\CashbackController@confirm_bonus');
    $router->get('/auto/cashback/confirm', 'Auto\CashbackController@confirm_cashback');

    //all stores, brands, tags, cats, individual cat, brands, tags etc
    $router->get('/auto/filter/store', 'Auto\FilterController@storeFilter');
    $router->get('/auto/filter/cat', 'Auto\FilterController@catFilter');
    $router->get('/auto/filter/tag', 'Auto\FilterController@tagFilter');
    $router->get('/auto/filter/brand', 'Auto\FilterController@brandFilter');
    $router->get('/auto/cat/storeCount', 'Auto\FilterController@storeCatCount');

    $router->get('/auto/ext/sweetStores', 'Auto\ExternalDataController@updateHoneyStores');

    $router->get('/auto/recommend/brands', 'Auto\RecommendStores@brands');
    $router->get('/auto/recommend/cats', 'Auto\RecommendStores@cats');
    $router->get('/auto/recommend/tags', 'Auto\RecommendStores@tags');

    $router->get('/auto/network/sales/{start_days}/{end_days}', 'Network\NetworkController@fetchSales');
    $router->get('/auto/network/stores/{id}', 'Network\NetworkController@fetchStores');
    $router->get('/auto/network/coupons/{id}', 'Network\NetworkController@fetchCoupons');

    $router->get('/auto/settings/pull', 'ConfigSetting@makeSettings');

    $router->post('/homepage/desktop', 'HomeController@desktop');
    $router->post('/homepage/mobile', 'HomeController@mobile');

    $router->post('/help/faqs', 'CommonController@help');
    $router->post('/help/terms', 'CommonController@terms');

    $router->post('/submitContact', 'CommonController@submitContact');

    $router->post('/brand/coupon/web/{brand_id}', 'CouponController@brandPage');
    $router->post('/store/coupon/web/{store_id}', 'CouponController@storePage');
    $router->post('/coupon/filter', 'CouponController@filerCoupon');
    $router->post('/store/byCategory/{cat_id}', 'StoreController@getStoresByCat');
    $router->post('/all-stores', 'StoreController@getAllStores');
    $router->post('/store/categories', 'CommonController@getStoreCategories');

    $router->post('/stores/all', 'StoreController@getAllStores');
    $router->post('/tags/all', 'CommonController@getTags');
    $router->post('/brands/all', 'CommonController@getBrands');
    $router->post('/coupon/categories', 'CommonController@getCouponCategories');
    $router->post('/coupons/popular/{cat_id}', 'CouponController@getPopularCoupons');

    $router->post('/findSlug/{type}/{slug}', 'CommonController@findBySlug');

    // Single pages
    $router->post('/store/ext/{store_id}', 'StoreController@getExtStore');
    $router->post('/store/{store_id}', 'StoreController@getStoreInfo');
    $router->post('/tag/{tag_id}', 'CommonController@getTagInfo');
    $router->post('/coupon/category/{cat_id}', 'CommonController@getCouponCatInfo');
    $router->post('/brand/{brand_id}', 'CommonController@getBrandInfo');

    // search
    $router->post('/search/{search_for}', 'CommonController@search');

    $router->post('/user/clicks/recent', 'MemberController@getRecentClicks');
    $router->post('/user/clicks/{monthyear}', 'MemberController@getClicks');
    $router->post('/user/bonus/{monthyear}', 'MemberController@getBonus');
    $router->post('/user/cashback/{monthyear}', 'MemberController@getSales');
    $router->post('/user/referral-cashback/{monthyear}', 'MemberController@getReferralSales');

    $router->post('/user/referral/users', 'MemberController@getReferredUsers');
    $router->post('/user/referral/invites', 'MemberController@getReferarlInvites');

    $router->post('/user/filterMonths/{month_for}', 'MemberController@getFilterMonths');

    $router->post('/user/claims', 'MemberController@getClaims');
    $router->post('/user/claim/info/{claim_id}', 'MemberController@getClaimInfo');
    $router->post('/user/claim/comment/{claim_id}', 'MemberController@makeComment');
    $router->post('/user/claim/stores', 'MemberController@getClaimableStores');
    $router->post('/user/claim/storeClicks/{store_id}', 'MemberController@getClaimableClicks');
    $router->post('/user/passbook/{data_for}', 'MemberController@getPassbook');

    $router->post('/user/claim/make', 'MemberController@makeClaim');
    $router->post('/user/claim/close', 'MemberController@closeClaim');


    $router->post('/user/links', 'MemberController@getLinks');
    $router->post('/user/shareStores', 'MemberController@getShareableStores');

    $router->post('/user/link/create', 'MemberController@createLink');
    $router->post('/user/claim/create', 'MemberController@createClaim');
    $router->post('/user/payouts/methods', 'MemberController@getPayoutMethods');
    $router->post('/user/payout/resend/{id}', 'MemberController@resendPayoutVerification');
    $router->post('/user/payouts/method/add', 'MemberController@addPayMethod');
    $router->post('/user/payouts/raise', 'MemberController@raisePayout');
    $router->post('/user/payouts/{monthyear}', 'MemberController@getPayouts');

    $router->post('/user/sendRefer', 'MemberController@sendReferralEmail');

    $router->post('/user/leaderboard', 'AppController@getLeaderboard');
    $router->post('/user/profile/update', 'MemberController@updateProfile');
    $router->post('/user/auth/resendEmail', 'MemberController@reVerifyEmail');
    $router->post('/user/auth/updatePassword', 'MemberController@updatePassword');
    $router->post('/user/auth/sendOTP', 'MemberController@sendOTP');
    $router->post('/user/auth/logout', 'AppController@logout');

    //Formatted currency
    $router->post('/v2/user/bonus/{monthyear}', 'MemberController@getBonusFormatted');
    $router->post('/v2/user/cashback/{monthyear}', 'MemberController@getSalesFormatted');
    $router->post('/v2/user/referral-cashback/{monthyear}', 'MemberController@getReferralSalesFormatted');
    $router->post('/v2/user/payouts/raise', 'MemberController@raisePayoutFormatted');
    $router->post('/v2/user/payouts/methods', 'MemberController@getPayoutMethodsFormatted');
    $router->post('/v2/user/payouts/{monthyear}', 'MemberController@getPayoutsFormatted');
    $router->post('/v2/user/claim/info/{claim_id}', 'MemberController@getClaimInfoFormatted');
    $router->post('/v2/user/passbook/{data_for}', 'MemberController@getPassbookFormatted');
    $router->post('/v2/user/claims', 'MemberController@getClaimsFormatted');

    // TODO: To Be Removed in new Release
    $router->get('/getRegions', 'AppController@getRegions');
    $router->get('/getCountries', 'AppController@getCountries');
    $router->get('/getBonuses', 'AppController@getBonuses');
    $router->post('/user/auth/login', 'AppController@login');
    $router->post('/user/auth/socialLogin', 'AppController@socialLogin');
    $router->post('/user/auth/register', 'AppController@registerUser');
    $router->post('/user/profile', 'MemberController@getProfile');
    $router->get('/getInitialData', 'AppController@getInitialData');
    $router->post('/home/sliders', 'HomeController@sliders');
    $router->post('/user/auth/forgotPassword', 'AppController@forgotPassword');
    $router->post('/user/auth/changePassword', 'AppController@resetPassword');
    $router->post('/user/favourite/action', 'MemberController@favouriteAction');
    $router->post('/user/favourites', 'MemberController@getFavourites');

    // TODO: Refactor
    $router->post('/v2/user/balance', 'MemberController@getBalanceFormatted');
    $router->post('/user/balance', 'MemberController@getBalance');
    $router->post('/getCountryCurrency', 'SettingController@countriesAndCurrencies');
    $router->post('/user/favourites/{fav_object}', 'MemberController@getFavouritesWithData');
});

// Shopify pixel
$router->get('/js/shopify.js', function (Request $request) use ($router) {
    header("Content-type: application/javascript");
    return view('shopify_js', [
        'url' => env('APP_URL'), 'shop' => $request->shop
    ]);
});
$router->post('/shopify/{shop}/conversions', 'Integration\ShopifyController@saveConversion');
