<?php

use App\Http\Middleware\CheckUserMemberState;
use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| 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!
|
*/

Route::group(
    [
        'prefix' => 'v1'
    ],
    function () {
        Route::post('/email/verify/{id}/{hash}', 'Api\UserController@verify')->name('verification.verify');
        Route::get('/email/resend/{id}', 'Api\UserController@resend')->name('verification.resend');
        Route::post('register', 'Api\UserController@postCreate');
        Route::post('upload-file', 'Api\FileController@uploadFile');
        Route::post('login', 'Api\UserController@postLogin');
        Route::post('forgot-password', 'Api\UserController@postForgotPassword');
        Route::post('reset-password', 'Api\UserController@postResetPassword')->name('password.reset');

        Route::middleware(['auth:api', CheckUserMemberState::class])->group(function () {
        // Route::middleware([TestAuthUser::class, CheckUserMemberState::class])->group(function () {

            Route::post('users/work-groups', 'Api\UserController@postWorkGroups');
            Route::post('logout', 'Api\UserController@postLogout');
            Route::get('users', 'Api\UserController@getIndex');
            Route::post('users/export', 'Api\UserController@postExport');
            Route::get('user', 'Api\UserController@getUser');
            Route::get('user/user-work-groups', 'Api\UserController@getUserWorkGroups');
            Route::get('user/user-committees-work-groups', 'Api\UserController@getUserCommitteesWorkGroups');
            Route::post('user/user-join-document-list', 'Api\UserController@postUserJoinDocumentList');
            Route::get('user/user-check-document-list', 'Api\UserController@getUserCheckDocumentList');
            Route::put('users/{userId}', 'Api\UserController@putUser')->where('userId', '[0-9]+');

            Route::delete('users/{id}', 'Api\UserController@deleteUser')->where('id', '[0-9]+');

            Route::post('users/profile-image', 'Api\UserController@uploadProfileImage');
            Route::post('users/change-password', 'Api\UserController@postChangePassword');

            //Committees
            Route::resource('committees', 'Api\CommitteeController')->only(['index', 'show']);
            Route::get('committees-emails', 'Api\CommitteeController@getEmails');

            //Work Groups
            Route::resource('work-groups', 'Api\WorkGroupController')->only(['index', 'show']);
            Route::get('work-groups-emails', 'Api\WorkGroupController@getEmails');

            //Document Lists
            // Route::resource('document-lists', 'Api\DocumentListsController')->only(['index', 'show']);

            //Documents
            Route::resource('documents', 'Api\DocumentController')->only(['index', 'show']);

            //Members
            Route::resource('members', 'Api\MemberController')->only(['index', 'show']);
            Route::get('member/member-committees', 'Api\MemberController@getMemberCommittees');

            //Meetings
            Route::resource('meetings', 'Api\MeetingController')->only(['index', 'show']);

            //Events
            Route::resource('events', 'Api\EventItemController')->only(['index', 'show']);

            //News
            Route::resource('news', 'Api\NewsItemController')->only(['index', 'show']);

            // Interactive Map
            Route::resource('map-items', 'Api\MapItemController')->only(['index']);
            Route::get('map-info-filters', 'Api\MapItemController@getMapInfoFilters');
            Route::get('map-info', 'Api\MapItemController@getMapInfoByMapItemId');
            Route::get('map-info-pdf', 'Api\MapItemController@generatePdf');

            //Download
            Route::get('download-file/{slug}', 'Api\FileController@downloadFile');

            //Menus
            Route::resource('menus', 'Api\MenuController')->only(['show']);

            //Entries / Pages
            Route::get('entries/export-pdf/{slug}', 'Api\EntryController@exportPdf');
            Route::get('entries/export-excel/{slug}', 'Api\EntryController@exportExcel');
            Route::resource('entries', 'Api\EntryController')->only(['index', 'show']);

            //Search
            Route::get('search', 'Api\SearchController@search');
            Route::get('search-autocomplete', 'Api\SearchController@searchAutocomplete');
        });
    }
);
