<?php

use App\Http\Controllers\Frontend\Board\BoardController;

use App\Http\Controllers\Frontend\Board\UserUploadedImageController;
use \App\Http\Controllers\Frontend\Graphics\BackgroundImageController;
use App\Http\Controllers\Frontend\Board\BoardFolderController;

/*
 * Forum controllers
 * All route names are prefixed with 'frontend.'.
 */

/*
 * These frontend controllers require the user to be logged in
 * All route names are prefixed with 'frontend.'
 * These routes can not be hit if the password is expired
 */
Route::group(['middleware' => ['auth', 'password_expires']], function () {

    Route::get('board', [BoardController::class, 'index'])->name('board.index');
    // make a new board
    Route::post('board/store', [BoardController::class, 'store'])->name('board.store');

    // make a new board from a template
    Route::post('board/newfromtemplate', [BoardController::class, 'newFromTemplate'])->name('board.newfromtemplate');
    //update the metadetails
    Route::post('board/metaupdate', [BoardController::class, 'metaupdate'])->name('board.metaupdate');
    // user uploaded media
    Route::post('board/storeusermedia', [UserUploadedImageController::class, 'store'])->name('board.storeusermedia');
    Route::get('board/usermedia/getbypage', [UserUploadedImageController::class, 'get_by_page']);
    Route::get('board/usermedia/{id}/display', [UserUploadedImageController::class, 'display'])->name('board.displayusermedia');
    Route::get('board/usermedia/{id}/thumb', [UserUploadedImageController::class, 'thumb'])->name('board.displayusermediathumb');
    Route::get('board/usermedia/{id}/delete', [UserUploadedImageController::class, 'destroy'])->name('board.deleteusermedia');

    // user uploaded backgrounds
    Route::post('board/storeuserbackground', [BackgroundImageController::class, 'store'])->name('board.storeuserbackground');
    Route::post('board/fakestoreuserbackground', [BackgroundImageController::class, 'fakiestore'])->name('board.fakestoreuserbackground');
    Route::get('board/userbackground/{id}/display', [BackgroundImageController::class, 'display'])->name('board.displayuserbackground');
    Route::get('board/userbackground/{id}/thumb', [BackgroundImageController::class, 'thumb'])->name('board.displayuserbackgroundthumb');
    Route::get('board/userbackground/{id}/delete', [BackgroundImageController::class, 'destroy'])->name('board.deleteuserbackground');


    // search for a template by tags and text
    Route::get('board/searchtemplatesbytagsandtext', [BoardController::class, 'searchTemplatesByTagsAndText']);

    // folder operations

    //get folders (for the logged in user)
    Route::post('board/getfolders', [BoardFolderController::class, 'getFolders'])->name('board.getfolders');
    //make a new folder
    Route::post('board/newfolder', [BoardFolderController::class, 'newFolder'])->name('board.newfolder');
    //Rename a folder
    Route::post('board/renamefolder', [BoardFolderController::class, 'renameFolder'])->name('board.renamefolder');
    //delete a folder
    Route::post('board/deletefolder', [BoardFolderController::class, 'deleteFolder'])->name('board.deletefolder');
    //get boards for a folder
    Route::post('board/getboardsforfolder', [BoardController::class, 'getBoardsForFolder'])->name('board.getboardsforfolder');
    // reorder a folder list
    Route::post('board/reorderfolders', [BoardFolderController::class, 'reorderFolders'])->name('board.reorderfolders');
    // add a board to a folder
    Route::post('board/addboardtofolder', [BoardFolderController::class, 'addBoardToFolder'])->name('board.addboardtofolder');

    Route::post('board/newlabfolder', [BoardFolderController::class, 'newlabfolder'])->name('board.newlabfolder');
    // download a PDF
    Route::post('board/downloadaspdf', [BoardController::class, 'downloadaspdf'])->name('board.downloadaspdf');

    // get boards for a lab
    Route::post('board/getBoardsForLab', [BoardController::class, 'getBoardsForLab'])->name('board.getBoardsForLab');

    //
    // Specific board
    Route::group(['prefix' => 'board/{id}'], function () {
        Route::get('/', [BoardController::class, 'show'])->name('board.show');

        Route::get('destroy', [BoardController::class, 'destroy'])->name('board.destroy');
        Route::get('thumb', [BoardController::class, 'thumb']);
        Route::get('data', [BoardController::class, 'data']);
        Route::get('metadata', [BoardController::class, 'metadata']);
//        Route::get('edit', [ClipartController::class, 'edit'])->name('clipart.edit');
        Route::post('savecanvas', [BoardController::class, 'saveCanvas'])->name('board.savecanvas');
        Route::post('update', [BoardController::class, 'update'])->name('board.update');
        Route::post('favourite', [BoardController::class, 'toggleFavourite'])->name('board.favourite');
        Route::post('addtofolder', [BoardController::class, 'addToFolder'])->name('board.addtofolder');
        Route::post('saveDuplicate', [BoardController::class, 'saveDuplicate'])->name('board.saveDuplicate');
        Route::post('sendcanvasto', [BoardController::class, 'sendCanvas'])->name('board.sendcanvasto');
        Route::post('public', [BoardController::class, 'public'])->name('board.public');
//        Route::delete('/', [ClipartController::class, 'destroy'])->name('clipart.destroy');
    });

});
