first commit
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Requests\Schedule\StoreRequest;
|
||||
use App\Http\Resources\ClientNavigationResource;
|
||||
use App\Http\Resources\FacultyResource;
|
||||
use App\Http\Resources\MainSectionResource;
|
||||
use App\Http\Resources\ScheduleResource;
|
||||
use App\Models\Faculty;
|
||||
use App\Models\MainSection;
|
||||
use App\Models\Schedule;
|
||||
use App\Models\SubSchedule;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Validation\Rules\File;
|
||||
use Inertia\Inertia;
|
||||
|
||||
class ScheduleController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$schedules = ScheduleResource::collection(Schedule::query()->ExistSubSchedule()->orderBy('name')->paginate(10));
|
||||
$filters = [
|
||||
'search' => request()->input('search'),
|
||||
];
|
||||
return Inertia::render('AdminPanel/Schedules/Index', compact('schedules', 'filters'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$faculties = FacultyResource::collection(Faculty::all());
|
||||
return Inertia::render('AdminPanel/Schedules/Create', compact('faculties'));
|
||||
}
|
||||
|
||||
public function store(StoreRequest $request)
|
||||
{
|
||||
$data = $request->validated();
|
||||
|
||||
$this->storeSchedules($request->file('files'), $data);
|
||||
|
||||
return redirect()->route('admin.index');
|
||||
}
|
||||
|
||||
public function show(Schedule $schedule)
|
||||
{
|
||||
$schedule = new ScheduleResource($schedule);
|
||||
return Inertia::render('AdminPanel/Schedules/Show', compact('schedule'));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public function destroy(Schedule $schedule)
|
||||
{
|
||||
$schedule->delete();
|
||||
}
|
||||
private function storeSchedules($files, $data)
|
||||
{
|
||||
foreach ($files as $file) {
|
||||
$scheduleTitle = $this->generateScheduleTitle($file);
|
||||
$schedule = $this->storeSchedule($scheduleTitle, $data);
|
||||
$this->storeSubSchedule($file, $schedule);
|
||||
}
|
||||
}
|
||||
|
||||
private function generateScheduleTitle($file)
|
||||
{
|
||||
$str = pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME);
|
||||
$words = explode(' ', $str);
|
||||
return implode(' ', array_slice($words, 0, 2));
|
||||
}
|
||||
|
||||
private function storeSchedule($title, $data)
|
||||
{
|
||||
return Schedule::firstOrCreate([
|
||||
'name' => $title,
|
||||
'faculty_id' => $data['faculty_id'],
|
||||
'is_fullTime' => $data['is_fullTime'],
|
||||
]);
|
||||
}
|
||||
|
||||
private function storeSubSchedule($file, $schedule)
|
||||
{
|
||||
$path = Storage::disk('public')->putFileAs('/schedules', $file, $file->getClientOriginalName());
|
||||
SubSchedule::updateOrCreate([
|
||||
'name' => pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME),
|
||||
'path_file' => '/storage/'.$path,
|
||||
'schedule_id' => $schedule->id,
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user