ldc-com-app-bo/app/Http/Controllers/FoldersController.php
Vincent BRIDIER f01e1501b4 init
2021-01-15 14:47:59 +01:00

88 lines
2.6 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Directories;
use App\Models\Documents;
use Illuminate\Http\Request;
class FoldersController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index(Request $request) {
$folders = Directories::all();
return view('folders', ['folders' => $folders, 'static_folders' => config('app.STATIC_FOLDERS')]);
}
public function toggleAuthorization(Request $request) {
$folderId = $request->id;
$folder = Directories::find($folderId);
if ($folder) {
if ($folder->needAuthorization === 0){
$folder->needAuthorization = 1;
}else{
$folder->needAuthorization = 0;
}
$folder->save();
}
return Directories::all();
}
public function saveOrder(Request $request) {
return $this->orderFolders($request->folders);
}
public function saveName(Request $request) {
$folder = Directories::find($request->id);
if($folder) {
$folder->name = $request->name;
$folder->save();
}
return Directories::all();
}
public function add(Request $request) {
$folder = new Directories();
$folder->name = $request->name;
$folder->order = $request->order;
$folder->save();
return Directories::all();
}
public function delete(Request $request) {
$folder = Directories::find($request->id);
if($folder) {
$folder->delete();
}
return Directories::all();
}
private function orderFolders($folders){
foreach ($folders as $folder) {
$directory = Directories::where('id', $folder['id'])->first();
$directory->order = $folder['order'];
$directory->parent = null;
$directory->save();
if(isset($folder['children']) && count($folder['children']) > 0 ){
$this->recordOrder($folder['children'], $folder['id']);
}
}
return 'OK';
}
private function recordOrder($folders, $parentId) {
foreach ($folders as $k => $folder) {
$directory = Directories::where('id', $folder['id'])->first();
$directory->order = $folder['order'];
$directory->parent = $parentId;
$directory->save();
if(isset($folder['children']) && count($folder['children']) > 0 ){
$this->recordOrder($folder['children'], $folder['id']);
}
}
}
}