<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\IndexController;
use App\Http\Controllers\Auth\AuthController;
use App\Http\Controllers\Auth\RegisterController;
use App\Http\Controllers\Resources\UserController;
use App\Http\Controllers\Auth\SocialAuthController;

/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "api" middleware group. Make something great!
|
*/

Route::group([
    'middleware' => 'api',
    'namespace' => 'Auth',
    'prefix' => 'auth',
], function () {
    Route::post('login', [AuthController::class, 'login']);
    Route::post('logout', [AuthController::class, 'logout']);
    Route::get('refresh', [AuthController::class, 'refresh']);
    Route::get('user', [AuthController::class, 'user']);
    Route::post('register', [RegisterController::class, 'register']);

    Route::post('{provider}/callback', [SocialAuthController::class, 'handleProviderCallback']);
});

Route::get('users/template', [UserController::class, 'template'])->name('users.template');
Route::get('users/export', [UserController::class, 'export'])->name('users.export');

Route::group(['middleware' => ['jwt.auth'],], function () {
    Route::get('vue', [IndexController::class, 'vue']);
    Route::get('dashboard', [IndexController::class, 'dashboard']);
    Route::delete('users/{id}/notifications', [UserController::class, 'readAll'])->name('users.readAll');
    Route::delete('users/{id}/notifications/{notifiation}', [UserController::class, 'read'])->name('users.read');
    Route::put('users/{id}/actived', [UserController::class, 'actived'])->name('users.actived');
    Route::put('users/{id}/inactived', [UserController::class, 'inactived'])->name('users.inactived');
    Route::delete('users/delete', [UserController::class, 'destroyMany'])->name('users.destroyMany');
    Route::apiResource('users', UserController::class);
    // New ApiRoute
});
