<?php

namespace App\Http\Controllers\Frontend\Board;

use App\Http\Controllers\Controller;
use App\Models\Boards\Board;
use App\Models\Boards\BoardFolder;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class BoardFolderController extends Controller
{


    public function index(Request $request)
    {
        return;
    }

    /**
     * Make a new folder
     * @param Request $request
     * @return array
     */
    public function newFolder(Request $request)
    {
        $folder = BoardFolder::create(['user_id' => auth()->user()->id, 'label' => $request['label'],'lab_id'=>$request['lab_id']]);
        return array(
            'status' => $folder->id > 0 ? '0' : '1',
            'id' => $folder->id,
            'label' => $folder->label
        );

    }

    public function deleteFolder(Request $request)
    {
        $id = $request['id'];
        //@TODO validate that the logged on user can, in fact delete this folder
        $folder = BoardFolder::find($id)->first();
        if ($folder->user->id == Auth::id()) {
            $status = BoardFolder::destroy($id);
            $response = array(
               // 'status' => ($status > 0) ? 0 : 1,
                'status' => 0,
            );

        } else {
            $response = array(
                'status' => 1
                //'status' => 0,
            );
        }
        return $response;
    }

    /**
     * Update the board  metadata from listing page
     * @param Request $request
     */
    public function renameFolder(Request $request)
    {
        //  dd($request);
        // some presets
        $folder = BoardFolder::find($request['id']);
        //dd($folder);
        // is it my board? @TODO Or am I allowed to update it (lab member,public etc)
        if ($folder->user->id == Auth::id()) {
            // new board entry
            $folder->label  = $request['label'];
            $folder->save();

            return array(
                'status' => ($folder->wasChanged() ? '0' : '1'),
                'id' => $request['id'],
                'label'=>$folder->label
            );
        } else {
            return array(
                'status' => '1'
            );
        }
    }

    /**
     * Set the order parameters for a user's folder list
     * @param Request $request
     * @return array
     */
    public function reorderFolders(Request $request)
    {
//dd($request['order']);
        foreach (json_decode($request['order']) as $item) {
            //          dd($item);
            $folder = BoardFolder::find($item->id);
            $folder->order = $item->sortorder;
            $folder->parent_id = isset($item->parentId) ? $item->parentId : null;
            $folder->save();
        }
        return array(
            'status' => 0,
        );

    }

    /**
     * get folders (for the current user)
     * @param Request $request
     * @return array
     */
    public function getFolders(Request $request)
    {

        return BoardFolder::foruser(auth()->user()->id)->orderBy('order', 'asc')->get();
    }

    /**
     * Add a board to a folder
     * @param Request $request
     * @return int[]
     */
    public function addBoardToFolder(Request $request)
    {
        $board = Board::find($request['board_id']);
        $folder = BoardFolder::find($request['folder_id']);

        $board['board_folder_id']=$request['folder_id'];
        $board->save();
        return array(
            'status' => $board->wasChanged()?0:1,
        );
    }


    public function newlabfolder(Request $request){
        $folder = BoardFolder::create([
            'user_id' => auth()->user()->id,
            'label' => $request['label'],
            'lab_id'=>$request['lab_id'],
            'parent_id' => $request['folder_id']
            ]);
        return array(
            'status' => $folder->id > 0 ? '0' : '1',
            'id' => $folder->id,
            'label' => $folder->label,
            'data' =>$folder
        );
    }

}
