File: //var/www/console.fixgini.com/routes/api.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ReviewController;
use App\Http\Controllers\MessageController;
use App\Http\Controllers\Authentication\Pin;
use App\Http\Controllers\BookFormController;
use App\Http\Controllers\CategoryController;
use App\Http\Controllers\Admin\FaqController;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\Admin\HeroController;
use App\Http\Controllers\Authentication\Login;
use App\Http\Controllers\Profile\UpdateDetail;
use App\Http\Controllers\Seller\GIGController;
use App\Http\Controllers\SubscriberController;
use App\Http\Controllers\Authentication\Google;
use App\Http\Controllers\Seller\ShopController;
use App\Http\Controllers\Seller\FetchSellerData;
use App\Http\Controllers\Admin\CountryController;
use App\Http\Controllers\Authentication\Register;
use App\Http\Controllers\Seller\GigFaqController;
use App\Http\Controllers\BookingPaymentController;
use App\Http\Controllers\Onboarding\NinValidation;
use App\Http\Controllers\Admin\TestimonyController;
use App\Http\Controllers\Admin\SellerPlanController;
use App\Http\Controllers\Onboarding\EmailValidation;
use App\Http\Controllers\Onboarding\PhoneValidation;
use App\Http\Controllers\Seller\BankDetailController;
use App\Http\Controllers\Authentication\ForgetPassword;
use App\Http\Controllers\Authentication\RegisterSeller;
use App\Http\Controllers\Authentication\SetNewPassword;
use App\Http\Controllers\Seller\CertificationController;
use App\Models\User;
Route::prefix('v1')->group(function () {
Route::get('/get-location', [CountryController::class, 'location']);
// Country routes
Route::get('/seller-country', [CountryController::class, 'getCountry']);
Route::get('/seller-state', [CountryController::class, 'getState']); // cities with the state
Route::get('/get-country', [CountryController::class, 'listCountry']);
Route::get('/get-states', [CountryController::class, 'listStates']);
Route::get('/get-countries', [CountryController::class, 'list']);
Route::get('/get-cities', [CountryController::class, 'listCities']);
// Authentication routes Web
Route::post('/register', [Register::class, 'register']);
Route::post('/login', [Login::class, 'login']);
Route::post('/forget-password', [ForgetPassword::class, 'forgetPassword']);
Route::post('/set-new-password', [setNewPassword::class, 'setNewPassword']);
//setup your pin
Route::post('/setup-pin', [Pin::class, 'setupPin']);
//login with pin on mobile
Route::post('/pin-login', [Pin::class, 'loginPin']);
//forget pin
Route::post('/forget-pin', [Pin::class, 'forgetPin']);
//Set up new pin
Route::post('/new-pin', [Pin::class, 'setNewPin']);
// Delete account
Route::post('/request-account-delete', [Register::class, 'requestAccountDeletion']);
Route::post('/confirm-account-delete', [Register::class, 'confirmAccountDeletion']);
// Google authentication routes
Route::post('/google-auth', [Google::class, 'google']);
Route::post('/google-auth-callback', [Google::class, 'callBack']);
// Logout
Route::post('/logout', [Login::class, 'logout']);
// Seller registration
// Route::post('/validate-nin', [NinValidation::class, 'validate']);
Route::post('/register-seller', [RegisterSeller::class, 'register']);
Route::post('/verify-phone-otp', [RegisterSeller::class, 'verifyPhoneOtp']);
Route::post('/phone-otp', [RegisterSeller::class, 'phoneOtp']); //special needs
Route::post('/verify-email-otp', [Register::class, 'verifyEmailOtp']);
Route::post('/verify-delete-account-otp', [Register::class, 'verifyDeleteOtp']);
Route::post('/send-email-otp', [Register::class, 'sendMailOtp2']);
// For Seller and Buyer Email verification
Route::post('/resend-new-email', [EmailValidation::class, 'send']);
Route::post('/verify-new-email-otp', [EmailValidation::class, 'verifyNewEmail']);
Route::post('/send-phone-otp', [PhoneValidation::class, 'sendPhoneOtp']);
// Seller route
Route::middleware(['auth:sanctum'])->group(function () {
Route::get('/fetch-seller-nin', [FetchSellerData::class, 'fetchNin']);
Route::get('/list-category', [CategoryController::class, 'list']);
Route::get('/seller-category', [CategoryController::class, 'sellerCategory']);
Route::get('/get-state-cities', [ShopController::class, 'getStateCity']);
Route::get('/seller-shop', [ShopController::class, 'shop']);
Route::post('/save-shop', [ShopController::class, 'store']);
Route::put('/update-shop', [ShopController::class, 'update']);
Route::delete('/delete-shop', [ShopController::class, 'destroy']);
Route::delete('/delete-shop-photo', [ShopController::class, 'destroyPhoto']);
Route::delete('/delete-shop-workshop-photo', [ShopController::class, 'destroyWorkShop']);
Route::post('/save-certificate', [CertificationController::class, 'store']);
Route::get('/seller-certificate', [CertificationController::class, 'list']);
Route::get('/query-seller-certificate', [CertificationController::class, 'query']);
Route::put('/update-seller-certificate', [CertificationController::class, 'update']);
Route::delete('/delete-seller-certificate', [CertificationController::class, 'destroy']);
Route::get('/seller-gigs', [GIGController::class, 'sellerGig']); // listing
Route::post('/save-gig', [GIGController::class, 'store']);
Route::put('/update-gig', [GIGController::class, 'update']);
Route::delete('/delete-gig', [GIGController::class, 'destroy']);
Route::delete('/delete-gig-photo', [GIGController::class, 'destroyGigPhoto']);
Route::post('/save-bank-detail', [BankDetailController::class, 'store']);
Route::put('/update-bank-detail', [BankDetailController::class, 'update']);
Route::get('/seller-plans', [SellerPlanController::class, 'index']);
Route::post('/save-subscriber', [SubscriberController::class, 'store']);
Route::get('/query-gig-faq', [GigFaqController::class, 'query']);
Route::post('/save-gig-faq', [GigFaqController::class, 'store']);
Route::get('/get-gig-faqs', [GigFaqController::class, 'list']);
Route::get('/user-gig-faqs', [GigFaqController::class, 'userGigFaqs']);
Route::put('/update-gig-faq', [GigFaqController::class, 'update']);
Route::delete('/delete-gig-faq', [GigFaqController::class, 'destroy']);
});
//Both Role: Seller and Buyer
Route::middleware(['auth:sanctum'])->group(function () {
Route::post('/update-profile-photo', [UpdateDetail::class, 'updatePhoto']);
Route::post('/delete-profile-account', [UpdateDetail::class, 'deleteAccount']);
Route::post('/update-profile-email', [UpdateDetail::class, 'ChangeEmail']);
Route::post('/update-profile-phone', [UpdateDetail::class, 'ChangePhone']);
Route::post('/set-profile-password', [UpdateDetail::class, 'setNewPassword']);
Route::post('/change-profile-password', [UpdateDetail::class, 'ChangePassword']);
Route::post('/send-support-mail', [MessageController::class, 'supportMail']);
});
Route::post('/email-lookup', [UpdateDetail::class, 'queryUserEmail']);
// Buyer
Route::middleware(['auth:sanctum'])->group(function () {
//update profile
Route::put('/update-profile', [UpdateDetail::class, 'updateProfile']);
Route::get('/query-profile', [UpdateDetail::class, 'queryUser']);
Route::post('/save-testimony', [TestimonyController::class, 'store']);
//review
Route::post('/store-review', [ReviewController::class, 'store']);
Route::put('/update-review', [ReviewController::class, 'update']);
Route::get('/show-customer-reviews', [ReviewController::class, 'listCustomerReview']);
Route::get('/show-seller-reviews', [ReviewController::class, 'showSellerReview'])->middleware('seller');
Route::get('/show-gig-reviews', [ReviewController::class, 'showGigReviews']);
Route::delete('/delete-review', [ReviewController::class, 'deleteReview']);
// Booking Form
Route::post('/store-customer-booking', [BookFormController::class, 'store'])->middleware('buyer');
Route::post('/booking-action', [BookFormController::class, 'bookingAction']);
Route::get('/get-customer-bookings', [BookFormController::class, 'customerBookings']);
Route::get('/get-provider-bookings', [BookFormController::class, 'serviceProviderBookings']);
Route::post('/show-booking', [BookFormController::class, 'show']);
Route::post('/cancel-booking', [BookFormController::class, 'cancel'])->middleware('buyer');
Route::post('/complete-booking', [BookFormController::class, 'completeBooking']);
Route::post('/trigger-complete-booking', [BookFormController::class, 'triggerCompleteBooking'])->middleware('seller');
Route::get('/user-wallet', [BookFormController::class, 'userWallet']);
Route::post('/chat-message', [BookFormController::class, 'chatMessage']);
// Booking Payment
Route::post('/booking-payment', [BookingPaymentController::class, 'store']);
Route::get('/buyer-payment-histories', [BookingPaymentController::class, 'buyerPaymentHistory']);
Route::get('/seller-payment-histories', [BookingPaymentController::class, 'sellerPaymentHistory']);
//Board Analysis
Route::get('/customer-statistics', [DashboardController::class, 'customerStatistics']);
Route::get('/seller-statistics', [DashboardController::class, 'sellerStatistics']);
});
//no auth for the webhook
Route::any('/flutterwave/webhook', [BookingPaymentController::class, 'FluttewaveWebhook']);
// Admin and seller routes
Route::post('/save-country', [CountryController::class, 'save']);
Route::post('/save-state', [CountryController::class, 'saveState']);
Route::post('/save-city', [CountryController::class, 'saveCity']);
Route::middleware(['auth:sanctum'])->group(function () {
//countries
Route::put('/update-country/{id}', [CountryController::class, 'updateCountry']);
Route::put('/update-state/{id}', [CountryController::class, 'updateState']);
Route::put('/update-city/{id}', [CountryController::class, 'updateCity']);
Route::delete('/delete-country/{id}', [CountryController::class, 'deleteCountry']);
Route::delete('/delete-state/{id}', [CountryController::class, 'deleteState']);
Route::delete('/delete-city/{id}', [CountryController::class, 'deleteCity']);
// category
Route::get('/index-category', [CategoryController::class, 'index']);
Route::get('/query-category', [CategoryController::class, 'query']);
Route::post('/store-category', [CategoryController::class, 'store']);
Route::put('/update-category/{category}', [CategoryController::class, 'update']);
Route::delete('/delete-category/{category}', [CategoryController::class, 'destroy']);
Route::post('/save-gig', [GIGController::class, 'store']);
Route::delete('/delete-gig/{gig}', [GIGController::class, 'destroy']);
Route::get('/seller-bank-detail', [BankDetailController::class, 'index']);
Route::delete('/delete-bank-detail/{user_id}', [BankDetailController::class, 'destroy']);
Route::get('/seller-request-withdraw', [BankDetailController::class, 'requestWithdraw']);
Route::get('/transaction-history', [BankDetailController::class, 'transactionHistory']);
Route::post('/query-account-no', [BankDetailController::class, 'queryAccountNo']);
Route::get('/bank-list', [BankDetailController::class, 'bankList']);
Route::post('/save-seller-plan', [SellerPlanController::class, 'store']);
Route::delete('/delete-seller-plan/{id}', [SellerPlanController::class, 'destroy']);
Route::get('/get-subscribers', [SubscriberController::class, 'index']);
Route::put('/update-hero', [HeroController::class, 'update']);
Route::delete('/delete-hero/{hero}', [HeroController::class, 'destroy']);
Route::get('/hero-banners', [HeroController::class, 'list']);
Route::post('/save-hero', [HeroController::class, 'store']);
// FAQ
Route::get('/faqs', [FaqController::class, 'index']);
Route::post('/save-faq', [FaqController::class, 'store']);
Route::post('/save-gig-favourite', [GIGController::class, 'storeFavourite']);
Route::get('/favourite-gigs', [GIGController::class, 'listFavourite']);
//FMC
Route::post('/send-fcm-notification', [MessageController::class, 'sendFcmNotification']);
Route::post('/save-fcm-token', [MessageController::class, 'storeToken']);
});
//for the frontend
Route::get('/get-category', [CategoryController::class, 'get']);
Route::get('/query-category', [CategoryController::class, 'query']);
Route::get('/get-hero-banners', [HeroController::class, 'get']);
Route::get('/get-faqs', [FaqController::class, 'get']);
Route::post('/get-nearby-shops', [ShopController::class, 'getNearbyShop']);
Route::get('/query-shop', [ShopController::class, 'query']);
Route::post('/get-nearby-gigs', [GIGController::class, 'getNearbyGig']);
Route::post('/get-similar-gigs', [GIGController::class, 'getSimilarGig']);
Route::get('/query-gig', [GIGController::class, 'query']);
Route::post('/send-message', [MessageController::class, 'sendMessage']);
Route::get('/fetch-messages', [MessageController::class, 'fetchMessages']);
Route::get('/show-gig-reviews', [ReviewController::class, 'showGigReviews']);
});
Route::middleware('auth:sanctum')->group(function () {
Route::post('/block-user', [MessageController::class, 'blockUser']);
Route::get('/blocked-users', [MessageController::class, 'getBlockedUsers']);
Route::post('/unblock-user', [MessageController::class, 'unblockUser']);
});
Route::get('/work', function () {
return response()->json([
'status' => 'success',
'message' => 'It\'s working 🚀'
]);
});
Route::get('/token/{id}', function ($id) {
$user = User::findOrFail($id);
$token = $user->createToken('ManualToken')->plainTextToken;
return response()->json(['token' => $token]);
});