Files
mmc_info/app/Http/Controllers/AUKController.php
Александр Бабкин 97bacd4423 Continue MMC
2022-07-14 11:01:44 +03:00

212 lines
6.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\AUK;
use App\Models\Project;
use Illuminate\Support\Facades\Log;
class AUKController extends Controller
{
/**
* Display a listing of the resource.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$project_id = $request->session()->get('project_id');
$project = Project::find($project_id);
$top_auks = $project->auks()->where('parent_id', 0)->get();
return view('auks.list', ['project' => $project, 'top_auks' => $top_auks]);
}
/**
* Show the form for creating a new resource.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function create(Request $request)
{
$project_id = $request->session()->get('project_id');
$project = Project::find($project_id);
$top_auks = $project->auks()->where('parent_id', 0)->get();
return view('auks.create', ['project' => $project, 'top_auks' => $top_auks]);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$project_id = $request->session()->get('project_id');
$request->validate([
'auk_name' => ['required', 'string', 'max:255'],
'auk_path' => ['required', 'string', 'max:255'],
'image_dir' => ['required', 'string', 'max:255'],
'parent_id' => ['required', 'integer'],
]);
// $user =
AUK::create([
'project_id' => $project_id,
'auk_name' => $request->auk_name,
'auk_path' => $request->auk_path,
'image_dir' => $request->image_dir,
'parent_id' => $request->parent_id,
]);
return redirect(route('auks.index'));
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit(Request $request, $id)
{
$project_id = $request->session()->get('project_id');
$project = Project::find($project_id);
$top_auks = $project->auks()->where('parent_id', 0)->get();
$auk = AUK::find($id);
return view('auks.edit', ['project' => $project, 'top_auks' => $top_auks, 'auk' => $auk]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$project_id = $request->session()->get('project_id');
$request->validate([
'auk_name' => ['required', 'string', 'max:255'],
'auk_path' => ['required', 'string', 'max:255'],
'image_dir' => ['required', 'string', 'max:255'],
'parent_id' => 'required|integer|different:id',
]);
$auk = AUK::find($id);
$auk->project_id = $project_id;
$auk->auk_name = $request->auk_name;
$auk->auk_path = $request->auk_path;
$auk->image_dir = $request->image_dir;
$auk->parent_id = $request->parent_id;
$auk->save();
return redirect()->route('auks.index');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
AUK::findOrFail($id)->delete();
return redirect()->route('auks.index');
}
/**
* Show form to to load AUKs from file system
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function scan(Request $request)
{
$project_id = $request->session()->get('project_id');
$project = Project::find($project_id);
$auks = array();
$MMC_PATH = $project->mmc_path;
if(is_dir($MMC_PATH))
{
$mmc_dir = scandir($MMC_PATH);
foreach ($mmc_dir as $entry) {
$course_path = $MMC_PATH . '/' . $entry;
if (is_dir($course_path)) {
if (intval($entry) > 0 && intval($entry) < 99) {
$tmp_array = array();
$tmp_array['auk_name'] = "АУК " . $entry;
$tmp_array['auk_path'] = $entry;
$tmp_array['image_dir'] = "";
$mmc_course_dir = scandir($course_path);
foreach ($mmc_course_dir as $course_entry) {
if (strcasecmp($course_entry, 'images') == 0) {
$course_image_path = $course_path . '/' . $course_entry;
if (is_dir($course_image_path)) {
$tmp_array['image_dir'] = $course_entry;
}
}
}
array_push($auks, $tmp_array);
}
}
}
}
return view('auks.scan', ['project' => $project, 'auks' => $auks]);
}
/**
* Load AUKs from file system
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function load(Request $request)
{
Log::alert("In load");
$project_id = $request->session()->get('project_id');
$i = 0;
while ($request->input('auk_name_' . $i) !== null) {
Log::alert("Loading " . $i);
$auk_name = $request->input('auk_name_' . $i);
$auk_path = $request->input('auk_path_' . $i);
$image_dir = $request->input('image_dir_' . $i);
Log::alert("auk_name \"" . $auk_name . "\"");
Log::alert("auk_path \"" . $auk_path . "\"");
Log::alert("image_dir \"" . $image_dir . "\"");
AUK::create([
'project_id' => $project_id,
'auk_name' => $auk_name,
'auk_path' => $auk_path,
'image_dir' => $image_dir,
'parent_id' => 0,
]);
$i++;
}
return redirect(route('auks.index'));
}
}