<?php
/** @var \Laravel\Lumen\Routing\Router $router * */

$router->get('/', function () use ($router) {
    return $router->app->version();
});

$router->group(['prefix' => 'app'], function () use ($router) {
    $router->post("/check-email", "AppController@CheckEmail");
    $router->get('/data', 'DiscoveryController@Campagne');
    $router->post('/segmentapi', 'DiscoveryController@CampagneAPI');
    $router->get('/zoho-token', 'DiscoveryController@zohoAccessToken');

    $router->post('/user/auth/refresh-token', 'AuthController@refreshToken');


    $router->get('/options/orders_status', 'OptionsManagerController@getUserOrderSettingStatus');


    $router->group(['middleware' => 'validateAdminReferer'], function () use ($router) {
        $router->get('genMailTemplate', 'ConfigSetting@makeEmailTemplateSettings');
    });
    // GUEST MODE ENDPOINTS
    $router->group(['prefix' => 'guest'], function () use ($router) {
        $router->get('/user-bonuses', 'GuestController@UserBonuses');
        $router->get('/popular_stores', 'GuestController@PopularStores');
        $router->get('/store_of_the_week', 'GuestController@FeaturedStoreOfTheWeek');
        $router->get('/stores_offers', 'GuestController@StoresOffers');
        $router->get('/home_slider', 'GuestController@HomeSlider');
        $router->get('/cashback_slider', 'GuestController@CashbackSlider');
        $router->get('/coupon_slider', 'GuestController@CouponSlider');
        $router->get('/coupon_top_slider', 'GuestController@CouponTopSlider');
        $router->get('/coupon_top_slider', 'GuestController@CouponTopSlider');
        $router->get('/ads', 'GuestController@Ads');
        $router->get('/categories', 'GuestController@Categories');
        $router->get('/help/faqs', 'GuestController@Help');
        $router->get('/featured_stores', 'GuestController@FeaturedStores');
        $router->get('/top_cashback_stores', 'GuestController@TopCashbackStores');
        $router->get('/recent_stores', 'GuestController@RecentStores');
        $router->get('/store_details/{store_id}', 'GuestController@StoreDetails');
        $router->get('/featured_coupons', 'GuestController@FeaturedCoupons');
        $router->get('/exclusive_coupons', 'GuestController@ExclusiveCoupons');
        $router->get('/recent_added_coupons', 'GuestController@RecentlyAddedCoupons');
        $router->get('/top_coupons', 'GuestController@TopCoupons');
        $router->get('/stores', 'GuestController@Stores');
        $router->get('/store_info/{store_id}', 'GuestController@StoreInfo');
        $router->get('/coupons', 'GuestController@getAllCoupons');

    });

    /** Public Routes **/
    $router->get('/regions', 'AppController@getRegions');
    $router->get('/countries', 'AppController@getCountries');
    $router->get('/dial-codes', 'AppController@getDialCodes');
    $router->post('/auth/forget-password', 'AuthController@forgetPassword');
    $router->post('/auth/verify-password-otp', 'AuthController@verifyResetPasswordOTP');
    $router->post('/auth/verify-otp/reset-password', 'AuthController@verifydOTPAndResetPasswordOTP');
    $router->post('/auth/reset-password', 'AuthController@resetPassword');
    $router->post('/auth/verify/referral_code', 'AuthController@verifyReferalCode');
    $router->get('/test-amazon-orders', 'AppController@test_amazon_orders');




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

    $router->delete('/user/delete', 'AppController@deleteAccountForDev');
    /**
     * mock data endpoint
     */
    $router->get('/list/reffered', function () {
        return [[
            'id' => 1,
            'user' =>
                array(
                    'id' => 1,
                    'firstName' => 'Ann',
                    'lastName' => 'Schleifer',
                    'image' => 'https://cdn3.vectorstock.com/i/1000x1000/30/97/flat-business-man-user-profile-avatar-icon-vector-4333097.jpg'
                ),
            'state' => 0,
            'index' => 1
        ], [
            'id' => 2,
            'user' =>
                array(
                    'id' => 4,
                    'firstName' => 'Jack',
                    'lastName' => 'Timo',
                    'image' => 'https://cdn.vectorstock.com/i/preview-2x/41/11/flat-business-woman-user-profile-avatar-icon-vector-4334111.webp 2x, https://cdn.vectorstock.com/i/preview-1x/41/11/flat-business-woman-user-profile-avatar-icon-vector-4334111.webp 1.5x'
                ),
            'state' => 0,
            'index' => 2
        ], [
            'id' => 5,
            'user' =>
                array(
                    'id' => 7,
                    'firstName' => 'Sam',
                    'lastName' => 'Holand',
                    'image' => 'https://cdn3.vectorstock.com/i/1000x1000/30/97/flat-business-man-user-profile-avatar-icon-vector-4333097.jpg'
                ),
            'state' => 0,
            'index' => 12
        ]];
    });

    $router->get('/list/leaderboard', function () {
        return [[
            'id' => 11,
            'user' => [
                'id' => 11,
                'firstName' => 'Alena',
                'lastName' => 'Schleifer',
                'image' => 'https://cdn.vectorstock.com/i/preview-2x/41/11/flat-business-woman-user-profile-avatar-icon-vector-4334111.webp 2x, https://cdn.vectorstock.com/i/preview-1x/41/11/flat-business-woman-user-profile-avatar-icon-vector-4334111.webp 1.5x'
            ],
            'validationDate' => '12 Jan 2022',
            'totalEarned' => 75.5,
            'totalCashback' => 100,
            'state' => 1,
            'index' => 11
        ], [
            'id' => 13,
            'user' => [
                'id' => 16,
                'firstName' => 'Ali',
                'lastName' => 'Sayed',
                'image' => 'https://cdn3.vectorstock.com/i/1000x1000/30/97/flat-business-man-user-profile-avatar-icon-vector-4333097.jpg'
            ],
            'validationDate' => '24 Jan 2022',
            'totalEarned' => 12.5,
            'totalCashback' => 50,
            'state' => 1,
            'index' => 10
        ], [
            'id' => 16,
            'user' => [
                'id' => 19,
                'firstName' => 'Ben',
                'lastName' => 'Lee',
                'image' => 'https://cdn.vectorstock.com/i/preview-2x/41/11/flat-business-woman-user-profile-avatar-icon-vector-4334111.webp 2x, https://cdn.vectorstock.com/i/preview-1x/41/11/flat-business-woman-user-profile-avatar-icon-vector-4334111.webp 1.5x'
            ],
            'validationDate' => '15 Jan 2022',
            'totalEarned' => 55.5,
            'totalCashback' => 200,
            'state' => 1,
            'index' => 13
        ]];
    });


    /** Authentication Route Groups **/
    $router->group(['middleware' => 'authenticate'], function () use ($router) {
        $router->post('/user/auth/login', 'AuthController@login');
        $router->post('/user/auth/social-login', 'AuthController@socialLogin');
        $router->post('/user/auth/facebook-login', 'AuthController@facebookLogin');
        $router->post('/user/auth/apple-login', 'AuthController@appleLogin');
        $router->post('/user/auth/google-login', 'AuthController@googleLogin');
        $router->post('/user/auth/register', 'AuthController@registerUser');

        // New Referral Routes
        $router->post('/user/referredlist', 'ReferralController@getReferredusers');
        $router->post('/user/referrerleaderboard', 'ReferralController@getReferredleaderboard');
    });

    /** Authenticated if exist Routes **/
    $router->group(['middleware' => 'authenticated_if_exist|app_localization'], function () use ($router) {
        $router->get('/initial-data', 'AppController@getInitialData');
        $router->get('/init', 'AppController@initData');
        $router->get('/home', 'HomeController@getAppHomeData');

        /**  New App version discovery **/
        $router->get('/discovery/home', "DiscoveryController@getMainData");
        $router->get('/discovery/cashback', 'DiscoveryController@getCashbackData');
        $router->get('/discovery/coupons', 'DiscoveryController@getCouponsData');
        $router->get('/discovery/all_offers', 'DiscoveryController@getOffersData');

        /** Discovery Home separated data **/
        $router->get('/discovery/home/slider', "DiscoveryController@getMainSlider");
        $router->get('/discovery/home/popular_stores', "DiscoveryController@getMainPopularStores");
        $router->get('/discovery/home/ads', "DiscoveryController@getMainAds");
        $router->get('/discovery/home/stores_offers', "DiscoveryController@getMainStoresOffers");
        $router->get('/discovery/home/categories', "DiscoveryController@getMainCategories");
        $router->get('/discovery/home/balance', "DiscoveryController@getMainBalance");

        /** Discovery Cashback separated data **/
        $router->get('/discovery/cashback/slider', 'DiscoveryController@getCashbackSlider');
        $router->get('/discovery/cashback/top_cashback_stores', 'DiscoveryController@getCashbackTopCashbackStores');
        $router->get('/discovery/cashback/recent_stores', 'DiscoveryController@getCashbackRecentStores');
        $router->get('/discovery/cashback/featured_stores', 'DiscoveryController@getCashbackFeaturedStores');
        $router->get('/discovery/cashback/all_stores', 'DiscoveryController@getCashbackAllStores');
        $router->get('/discovery/cashback/recommended_stores', 'DiscoveryController@getCashbackRecommendedStores');
        $router->get('/discovery/cashback/balance', 'DiscoveryController@getCashbackBalance');

        /** Discovery Coupons separated data **/

        $router->get('/discovery/coupons/topslider', 'DiscoveryController@getCouponsTopSlider');
        $router->get('/discovery/coupons/slider', 'DiscoveryController@getCouponsSlider');
        $router->get('/discovery/coupons/top_coupons', 'DiscoveryController@getCouponsTopCoupons');
        $router->get('/discovery/coupons/featured_coupons', 'DiscoveryController@getCouponsFeaturedCoupons');
        $router->get('/discovery/coupons/recently_add_coupons', 'DiscoveryController@getCouponsRecentlyAddedCoupons');
        $router->get('/discovery/coupons/exclusive_coupons', 'DiscoveryController@getCouponsExclusiveCoupons');
        $router->get('/discovery/coupons/stores', 'DiscoveryController@getCouponsStores');
        $router->get('/discovery/coupons/all_stores', 'DiscoveryController@getCouponsAllStores');
        $router->get('/discovery/coupons/balance', 'DiscoveryController@getCouponsBalance');

        /** Discovery Offers separated data **/
        $router->get('/discovery/all_offers/coupons', 'DiscoveryController@getCoupons');
        $router->get('/discovery/all_offers/recommendeddeals', 'DiscoveryController@getOffersRecommendedDeals');
        $router->get('/discovery/all_offers/offers', 'DiscoveryController@getAllOffers');

        $router->get('/home/top_home_slide', 'HomeController@getTopHomeSlide');
        $router->get('/home/featured_store/week', 'HomeController@getFeaturedStores');


        $router->get('/bonuses', 'AppController@getBonuses');
        $router->post('/search/{search_for}', 'CommonController@search');
        $router->get('/top-stores', 'StoreController@getTopStores');
        $router->get('/featured-stores/week', 'StoreController@getFeaturedStoresOfTheWeek');
        $router->get('/stores', 'HomeController@getAllStores');
        $router->get('/store/{store_id}', 'StoreController@getStoreInfo');
        $router->get('/store-details/{store_id}', 'StoreController@getStoreDetails');
        $router->get('/categories', 'HomeController@getCategories');
        $router->get('/categories/{category_id}/stores', 'HomeController@getCategoryStores');
        $router->get('/coupons', 'CouponController@getCouponsData');

        /** New Endpoints for Coupons data with pagination  */
        $router->get('/coupons/coupons', 'CouponController@getAllCoupons');
        $router->get('/coupons/exclusivecoupons', 'CouponController@getAllExclusiveCoupons');
        $router->get('/coupons/couponcategories', 'CouponController@getCouponCategories');
        $router->get('/coupons/couponsliders', 'CouponController@getCouponSlider');
        $router->get('/coupons/recentcoupons', 'CouponController@getRecentCoupons');
        $router->get('/coupons/adspositions', 'CouponController@getadsPositions');
        $router->get('/coupons/positions', 'CouponController@getPositions');


        $router->get('/categories/{cat_id}/coupons', 'CouponController@getCouponCategoryData');
        $router->get('/deals', 'HomeController@getDealsPageData');
        $router->get('/black-friday', 'HomeController@getBlackFridayPageData');
        $router->get('/cyber-monday', 'HomeController@getCyberMondayPageData');
        $router->get('/christmas', 'HomeController@getChristmasPageData');
        $router->post('/help/faqs', 'CommonController@help');
        $router->post('/submitContact', 'CommonController@submitContact');
        $router->get('/events/{slug}', 'EventsController@getEventPage');
        $router->get('/competitions/{slug}', 'CompetitionsController@getCompetitionPage');
        $router->get('/calculator-search', 'CashbackCalculatorController@search');
        $router->get('/loyalty-landing', 'LoyaltyProgramsController@landing');
        $router->post('/registration-codes/validate', 'AuthController@validateRegisterCode');
        $router->get('/stores/{store_slug}/deals/{deal_slug}', 'StoreDealsController@getStoreDeal');
    });

    $router->group(['middleware' => 'authenticated_if_exist|app_localization'], function () use ($router) {

        $router->get('/categories/{cat_id}/coupons/{page}/{limit}',   'CouponController@getCouponCategoryDataWithPagination');
        $router->post('/categories/{cat_id}/coupons',   'CouponController@CouponCategoryDataWithPagination');
        $router->get('/sponsor/coupons',   'CouponController@getSponsorCoupons');

       $router->get('/coupon/categories', 'CouponController@getCouponCategories');
    });

    /** Authenticated Routes **/
    $router->group(['middleware' => 'authenticated|app_localization'], function () use ($router) {
        $router->get('/user/profile', 'MemberController@getProfile');
        $router->post('/user/update', 'MemberController@updateUser');
        $router->post('/user/update/verifiedName', 'MemberController@updateVerifiedName');
        $router->post('/user/auth/verify-mobile', 'AuthController@verifyMobile');
        $router->post('/user/auth/verify-mobile-otp', 'AuthController@verifyMobileOTP');
        $router->get('/user/favourites', 'UserFavoritesController@getUserFavourites');
        $router->get('/user/new-bonuses', 'MemberController@getNewBonuses');
        $router->get('/user/bonus-rewarded', 'MemberController@getRewardedBonuses');

        $router->post('/user/new-bonuses', 'MemberController@assignNewBonus');
        $router->get('/user/notifications', 'MemberController@getNotifications');
        $router->post('/user/notifications/{notification_id}', 'MemberController@updateNotification');
        $router->post('/user/updateNotificationSetting', 'MemberController@updateNotificationSetting');
        $router->post('/user/incompleteOrder', 'MemberController@getIncompleteOrder');
        $router->post('/user/hideincompleteOrder', 'MemberController@HideIncompleteOrder');
        /**  Extension Installation  **/
        $router->post('user/extension', 'MemberController@getExtension');

        $router->post('/user/favourites/toggle', 'UserFavoritesController@toggleUserFavourites');
        $router->post('/user/favourites/multi_toggle', 'UserFavoritesController@toggleUserMultiFavourites');
        $router->get('/user/favourites/{fav_object}', 'MemberController@getFavouritesWithData');
        $router->get('/user/{fav_object}/favourites/stores', 'UserFavoritesController@getLastCouponsFromFavorites');
        $router->post('/user/locale', 'MemberController@updateLocale');
        $router->get('/user/bonus/{monthyear}', 'MemberController@getBonus');
        $router->get('/user/favorite-stores', 'WalletController@getUserFavoriteStores');


        $router->post('/user/{couponId}/like',  'UserLikeDislikeController@likeCoupon' ) ;
        $router->post('/user/{couponId}/dislike',  'UserLikeDislikeController@dislikeCoupon' ) ;



        $router->get('/user/cashouts', 'WalletController@getUserCashouts');
        $router->get('/user/clicks', 'WalletController@getUserClicks');
        $router->get('/user/account', 'MemberController@getAccountData');
        $router->post('/user/account/delete', 'MemberController@deleteAccount');
        $router->get('/user/yajny-plus', 'MemberController@getLoyaltyAchievement');
        $router->post('/user/send-email-verification', 'MemberController@SendVerifyemailcode');
        $router->post('/user/verify-email', 'MemberController@Verifyemail');
        $router->post('/user/survey', 'MemberController@Survey');
        $router->post('/user/rating', 'HomeController@addRating');
        $router->get('/user/rating', 'HomeController@getRating');


        //TODO remove unused
        $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('/tag/{tag_id}', 'CommonController@getTagInfo');
        $router->post('/coupon/category/{cat_id}', 'CommonController@getCouponCatInfo');
        $router->post('/brand/{brand_id}', 'CommonController@getBrandInfo');

        $router->post('/user/clicks/recent', 'MemberController@getRecentClicks');
        $router->post('/user/history/{object}', 'MemberController@getHistoryClicks');
        $router->post('/user/clicks/{monthyear}', 'MemberController@getClicks');

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

        $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/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/payout/resend/{id}', 'MemberController@resendPayoutVerification');

        $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/checkPassword', 'MemberController@checkPassword');
        $router->post('/user/auth/updateNewPassword', 'MemberController@updateNewPassword');

        /**
         * is M
         */
        $router->group(['middleware' => 'is_merchant'], function () use ($router) {
            $router->get('/user/transactions', 'WalletController@getUserTransactions');
            $router->get('/user/orders', 'MemberController@getOrders');
            $router->get('/user/orders/{id}', 'OrderController@getSale');
            $router->get('/user/bonuses/{id}', 'OrderController@getBonus');
            $router->get('/user/new-bonuses/{id}', 'OrderController@getNewBonus');
            $router->get('/user/wallet', 'WalletController@getUserWallet');
            $router->get('/user/wallet-transactions', 'WalletController@getTransaction');
            $router->post('/user/filterMonths/{month_for}', 'MemberController@getFilterMonths');
            $router->get('/user/balance', 'MemberController@getBalanceFormatted');
            $router->get('/user/balance-details', 'MemberController@getBalanceDetails');
            $router->post('/user/payouts/method/add', 'MemberController@addPayMethod');

            //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');
            $router->post('/v2/user/balance', 'MemberController@getBalanceFormatted');
            $router->post('/v3/user/payouts/raise', 'MemberController@Payout');

        });
    });
});
