<?php

use Illuminate\Http\Request;
use App\Http\Controllers\Api\ApiController;
use App\Http\Controllers\Api\AuthApiController;
use App\Http\Controllers\Api\UserApiController;
use App\Http\Controllers\Api\CircleApiController;
use App\Http\Controllers\Api\UserCircleApiController;
use App\Http\Controllers\Api\SettingsApiController;


use App\Http\Controllers\Api\V1\AuthApiControllerV1;
use App\Http\Controllers\Api\V1\UserApiControllerV1;
use App\Http\Controllers\Api\V1\CircleApiControllerV1;
use App\Http\Controllers\Api\V1\UserCircleApiControllerV1;
use App\Http\Controllers\Api\V1\SettingsApiControllerV1;

use App\Http\Controllers\Api\V2\SettingsApiControllerV2;
use App\Http\Controllers\Api\V2\AuthApiControllerV2;
use App\Http\Controllers\Api\V2\UserCircleApiControllerV2;
use App\Http\Controllers\Api\V2\UserApiControllerV2;
use App\Http\Controllers\Api\V2\CircleApiControllerV2;

header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method, Authorization");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
/*
|--------------------------------------------------------------------------
| 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!
|
*/
//Get Currency
Route::get('/get-currency', [SettingsApiController::class, 'siteCurrency']);

//Get Bank Details
Route::get('/get-bank-details', [SettingsApiController::class, 'getBankDetails']);

//Get Stripe Public Key
Route::get('/get-stripe-public-key', [SettingsApiController::class, 'getStripePublicKey']);

//General Currency
Route::post('/get-reason', [SettingsApiController::class, 'getReason']);

//User authentication
Route::post('/signup', [AuthApiController::class, 'signup']);

//Resend OTP
Route::post('/resend-otp', [AuthApiController::class, 'resend_otp']);

//OTP authentication
Route::post('/mobile-otp-verification', [AuthApiController::class, 'mobile_otp_verification']);

//User forget password
Route::post('/forget-password', [AuthApiController::class, 'forget_password']);

//User upload files
Route::post('/upload-file', [UserApiController::class, 'upload_file']);

//User authentication
Route::post('/user-authentication', [AuthApiController::class, 'user_authentication']);

//Update User profile
Route::post('/update-profile', [UserApiController::class, 'profile_update']);

//Circle User Search
Route::post('/searchByMobile', [CircleApiController::class, 'searchByMobile']);

//Circle User create
Route::post('/create-circle-user', [CircleApiController::class, 'create_circle_user']);

//Delete User create
Route::post('/delete-circle-user', [CircleApiController::class, 'delete_circle_user']);

//Circle details
Route::post('/circle-details', [CircleApiController::class, 'circle_details']);

//Circle create
Route::post('/create-circle', [CircleApiController::class, 'create_circle']);

//Reorder User create
Route::post('/reorder-circle-user', [CircleApiController::class, 'rearrangeCircle_user']);

//CircleList status wise
Route::post('/circle-list', [UserCircleApiController::class, 'circleList']);

//Circle request reject
Route::post('/circle-request-reject', [UserCircleApiController::class, 'circleUserStatus']);

//Circle request accept
Route::post('/circle-request-accept', [UserCircleApiController::class, 'circleRequestAccept']);

//On goinf Circle details
Route::post('/ongoing-circle-details', [UserCircleApiController::class, 'onGoingCircleDetails']);

//Circle payment
Route::post('/circle-payment', [UserCircleApiController::class, 'circlePayment']);

//Block circle payment
Route::post('/block-circle-payment', [UserCircleApiController::class, 'blockedCirclePayment']);

//Circle terminate
Route::post('/circle-terminate', [CircleApiController::class, 'circleTerminate']);

//Circle payment
Route::post('/circle-terminate-request', [UserCircleApiController::class, 'circleTerminateRequest']);

//Circle refund payment
Route::post('/circle-refund-payment', [UserCircleApiController::class, 'circleRefundPayment']);

//Send reminder
Route::post('/send-reminder', [UserCircleApiController::class, 'reminderSend']);

//Send reminder
Route::post('/circle-report', [CircleApiController::class, 'circleReport']);

//Test admin email
Route::get('/get-admin-email', [CircleApiController::class, 'test_admin_email']);

//Send Test Notification
Route::get('/send-test-notification', [SettingsApiController::class, 'getTestNotification']);

//Send Test SMS
Route::post('/send-test-sms', [AuthApiController::class, 'sendTestSMS']);


Route::get('/send-test-email', [ApiController::class, 'sendTestEmail']);

Route::get('/send-test-lang', [ApiController::class, 'sendTestLang'])->middleware('localization');

//Version V1 API: 
//============================

Route::group([
			'prefix' => 'v1'
		], function () {
			//Get Currency
			Route::get('/get-currency', [SettingsApiControllerV1::class, 'siteCurrency']);

			//Get Bank Details
			Route::get('/get-bank-details', [SettingsApiControllerV1::class, 'getBankDetails']);

			//Get Stripe Public Key
			Route::get('/get-stripe-public-key', [SettingsApiControllerV1::class, 'getStripePublicKey']);

			//General Currency
			Route::post('/get-reason', [SettingsApiControllerV1::class, 'getReason']);

			//User authentication
			Route::post('/signup', [AuthApiControllerV1::class, 'signup']);

			//Resend OTP
			Route::post('/resend-otp', [AuthApiControllerV1::class, 'resend_otp']);

			//OTP authentication
			Route::post('/mobile-otp-verification', [AuthApiControllerV1::class, 'mobile_otp_verification']);

			//User forget password
			Route::post('/forget-password', [AuthApiControllerV1::class, 'forget_password']);

			//User upload files
			Route::post('/upload-file', [UserApiControllerV1::class, 'upload_file']);

			//User authentication
			Route::post('/user-authentication', [AuthApiControllerV1::class, 'user_authentication']);

			//Update User profile
			Route::post('/update-profile', [UserApiControllerV1::class, 'profile_update']);

			//Circle User Search
			Route::post('/searchByMobile', [CircleApiControllerV1::class, 'searchByMobile']);

			//Circle User create
			Route::post('/create-circle-user', [CircleApiControllerV1::class, 'create_circle_user']);

			//Delete User create
			Route::post('/delete-circle-user', [CircleApiControllerV1::class, 'delete_circle_user']);

			//Circle details
			Route::post('/circle-details', [CircleApiControllerV1::class, 'circle_details']);

			//Circle create
			Route::post('/create-circle', [CircleApiControllerV1::class, 'create_circle']);

			//Reorder User create
			Route::post('/reorder-circle-user', [CircleApiControllerV1::class, 'rearrangeCircle_user']);

			//CircleList status wise
			Route::post('/circle-list', [UserCircleApiControllerV1::class, 'circleList']);

			//Circle request reject
			Route::post('/circle-request-reject', [UserCircleApiControllerV1::class, 'circleUserStatus']);

			//Circle request accept
			Route::post('/circle-request-accept', [UserCircleApiControllerV1::class, 'circleRequestAccept']);

			//On goinf Circle details
			Route::post('/ongoing-circle-details', [UserCircleApiControllerV1::class, 'onGoingCircleDetails']);

			//Circle payment
			Route::post('/circle-payment', [UserCircleApiControllerV1::class, 'circlePayment']);

			//Block circle payment
			Route::post('/block-circle-payment', [UserCircleApiControllerV1::class, 'blockedCirclePayment']);

			//Circle terminate
			Route::post('/circle-terminate', [CircleApiControllerV1::class, 'circleTerminate']);

			//Circle payment
			Route::post('/circle-terminate-request', [UserCircleApiControllerV1::class, 'circleTerminateRequest']);

			//Circle refund payment
			Route::post('/circle-refund-payment', [UserCircleApiControllerV1::class, 'circleRefundPayment']);

			//Send reminder
			Route::post('/send-reminder', [UserCircleApiControllerV1::class, 'reminderSend']);

			//Send reminder
			Route::post('/circle-report', [CircleApiControllerV1::class, 'circleReport']);

			//Test admin email
			Route::get('/get-admin-email', [CircleApiControllerV1::class, 'test_admin_email']);
			
});

Route::group([
			'prefix' => 'v2'
		], function () {	
			//Get Currency
			Route::get('/get-currency', [SettingsApiControllerV2::class, 'siteCurrency']);

			//Get Bank Details
			Route::get('/get-bank-details', [SettingsApiControllerV2::class, 'getBankDetails']);

			//Get Stripe Public Key
			Route::get('/get-stripe-public-key', [SettingsApiControllerV2::class, 'getStripePublicKey']);

			//General Currency
			Route::post('/get-reason', [SettingsApiControllerV2::class, 'getReason']);

			//User authentication
			Route::post('/signup', [AuthApiControllerV2::class, 'signup']);

			//Resend OTP
			Route::post('/resend-otp', [AuthApiControllerV2::class, 'resend_otp']);

			//OTP authentication
			Route::post('/mobile-otp-verification', [AuthApiControllerV2::class, 'mobile_otp_verification']);

			//User forget password
			Route::post('/forget-password', [AuthApiControllerV2::class, 'forget_password']);

			//User upload files
			Route::post('/upload-file', [UserApiControllerV2::class, 'upload_file']);

			//User authentication
			Route::post('/user-authentication', [AuthApiControllerV2::class, 'user_authentication']);

			//Update User profile
			Route::post('/update-profile', [UserApiControllerV2::class, 'profile_update']);

			//Circle User Search
			Route::post('/searchByMobile', [CircleApiControllerV2::class, 'searchByMobile']);

			//Circle User create
			Route::post('/create-circle-user', [CircleApiControllerV2::class, 'create_circle_user']);

			//Delete User create
			Route::post('/delete-circle-user', [CircleApiControllerV2::class, 'delete_circle_user']);

			//Circle details
			Route::post('/circle-details', [CircleApiControllerV2::class, 'circle_details']);

			//Circle create
			Route::post('/create-circle', [CircleApiControllerV2::class, 'create_circle']);

			//Reorder User create
			Route::post('/reorder-circle-user', [CircleApiControllerV2::class, 'rearrangeCircle_user']);

			//Circle request reject
			Route::post('/circle-request-reject', [UserCircleApiControllerV2::class, 'circleUserStatus']);

			//Circle request accept
			Route::post('/circle-request-accept', [UserCircleApiControllerV2::class, 'circleRequestAccept']);

			//Circle payment
			Route::post('/circle-payment', [UserCircleApiControllerV2::class, 'circlePayment']);

			//Block circle payment
			Route::post('/block-circle-payment', [UserCircleApiControllerV2::class, 'blockedCirclePayment']);

			//Circle terminate
			Route::post('/circle-terminate', [CircleApiControllerV2::class, 'circleTerminate']);

			//Circle payment
			Route::post('/circle-terminate-request', [UserCircleApiControllerV2::class, 'circleTerminateRequest']);

			//Circle refund payment
			Route::post('/circle-refund-payment', [UserCircleApiControllerV2::class, 'circleRefundPayment']);

			//Send reminder
			Route::post('/send-reminder', [UserCircleApiControllerV2::class, 'reminderSend']);

			//Send reminder
			Route::post('/circle-report', [CircleApiControllerV2::class, 'circleReport']);

			//Test admin email
			Route::get('/get-admin-email', [CircleApiControllerV2::class, 'test_admin_email']);

			//Get Terms Conditions
			Route::get('/get-terms', [AuthApiControllerV2::class, 'getTerms']);

			//Get About Us Details
			Route::get('/get-about-us-details', [SettingsApiControllerV2::class, 'getAboutUsDetails']);

			//Accept Terms Conditions
			Route::post('/accept-terms', [AuthApiControllerV2::class, 'acceptTerms']);

			//CircleList status wise
			Route::post('/circle-list', [UserCircleApiControllerV2::class, 'circleList']);

			//Circle remove
			Route::post('/remove-circle', [UserCircleApiControllerV2::class, 'circleRemove']);

			//On going Circle details
			Route::post('/ongoing-circle-details', [UserCircleApiControllerV2::class, 'onGoingCircleDetails']);
});