ldc-com-app-bo/app/Http/Controllers/FoldersController.php

94 lines
2.8 KiB
PHP
Raw Normal View History

2021-01-15 14:47:59 +01:00
<?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) {
$count = $folder->documents->count();
if ($count > 0)
{
return ['status' => 'KO', 'error' => sprintf("Il y a %d document(s) lié(s).", $count)];
}
2021-01-15 14:47:59 +01:00
$folder->delete();
}
return ['status' => 'OK', 'directories' => Directories::all()];
2021-01-15 14:47:59 +01:00
}
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']);
}
}
}
}