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

89 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 Illuminate\Http\Request;
class FoldersController extends Controller
{
public function index(Request $request) {
$folders = Directories::all();
2022-05-18 12:46:16 +02:00
return view('folder.index', ['folders' => $folders]);
2021-01-15 14:47:59 +01:00
}
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->needAuthorization = 0;
2021-01-15 14:47:59 +01:00
$directory->save();
if(isset($folder['children']) && count($folder['children']) > 0 ){
$this->recordOrder($folder['children'], $folder['id']);
}
}
return ['status' => 'OK', 'directories' => Directories::all()];
2021-01-15 14:47:59 +01:00
}
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']);
}
}
}
}