EducationController.php 4.46 KB
<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Http\Requests\EducationRequest;
use App\Http\Requests\ProgramEducationRequest;
use App\Models\Education;
use App\Models\ProgramEducation;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;

class EducationController extends Controller
{
    public function index()
    {
        $education = Education::query()
            ->active()
            ->paginate(15);
        return view('admin.education.index', compact('education'));
    }

    public function create()
    {
        return view('admin.education.add');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(EducationRequest $request)
    {
        $params = $request->all();
        if ($request->has('image')) {
            $params['image'] = $request->file('image')->store("education", 'public');
        }
        Education::create($params);


        return redirect()->route('admin.education.index');
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Models\Education  $education
     * @return \Illuminate\Http\Response
     */
    public function show(Education $education)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Models\Education  $education
     * @return \Illuminate\Http\Response
     */
    public function edit(Education $education)
    {
        $program = ProgramEducation::query()->where('education_id', '=', $education->id)
            ->orderBy('level')->get();
        return view('admin.education.edit', compact('education', 'program'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Models\Education  $education
     * @return \Illuminate\Http\Response
     */
    public function update(EducationRequest $request, Education $education)
    {
        $params = $request->all();
        if ($request->has('image')) {
            if (!empty($education->image)) {
                Storage::delete($education->image);
            }
            $params['image'] = $request->file('image')->store("education", 'public');
        }

        $education->update($params);
        return redirect()->route('admin.education.index');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Models\Education  $education
     * @return \Illuminate\Http\Response
     */
    public function destroy(Education $education)
    {
        $education->update(['is_remove' => 1]);
        return redirect()->route('admin.education.index');
    }

    public function rename_program(Request $request) {
        if ($request->ajax()) {
            $oldnamelevel = $request->oldname;
            $newnamelevel = $request->newname;
            $id_education = $request->id_education;

            $result = DB::table('program_education')
                ->where('education_id', '=', $id_education)
                ->where('level', '=', $oldnamelevel)
                ->update(['level' => $newnamelevel]);

            return $result;
        } else return "";

    }

    public function add_program(Request $request) {
        $id_education = $request->id;
        $level = $request->level;
        return view('admin.education.program', compact('id_education', 'level'));
    }

    public function store_program(ProgramEducationRequest $request) {
        $education = $request->education_id;
        ProgramEducation::create($request->all());

        return redirect()->route('admin.education.edit', ['education' => $education]);
    }

    public function edit_program(ProgramEducation $program, Education $education) {
        $id_education = $education->id;
        return view('admin.education.program-edit', compact('id_education',  'education', 'program'));
    }

    public function update_program(ProgramEducationRequest $request, ProgramEducation $program, Education $education) {
        $program->update($request->all());
        return redirect()->route('admin.education.edit', ['education' => $education]);
    }

    public function delete_program(ProgramEducation $program, Education $education) {
        $education = $education->id;
        $program->delete();

        return redirect()->route('admin.education.edit', ['education' => $education]);
    }
}