programService = $programService; } /** * Display a listing of the resource. */ public function index(Request $request) { $data['title'] = 'Program List'; $data['programs'] = $this->programService->findAll($request); $data['countryOptions'] = Country::where('status', 1)->pluck('title', 'id'); $data['institutionOptions'] = Institution::query() ->when($request->filled('country_id'), function ($query) use ($request) { $query->where('country_id', $request->country_id); }) ->pluck('title', 'id'); $data['programLevelOptions'] = ProgramLevel::where('status', 1)->pluck('title', 'id'); $data['intakeOptions'] = Program::INTAKE; $data['coopOptions'] = Coop::where('status', 1)->pluck('title', 'id'); $data['testOptions'] = Test::where('status', 1)->where('parent_id', null)->pluck('title', 'id'); $data['statusOptions'] = config('constants.page_status_options'); return view('coursefinder::program.index', $data); } /** * Show the form for creating a new resource. */ public function create() { $data['title'] = 'Program Create'; $data['editable'] = false; $data['intakeOptions'] = Program::INTAKE; $data['institutionOptions'] = Institution::where('status', 1)->pluck('title', 'id'); $data['programLevelOptions'] = ProgramLevel::where('status', 1)->pluck('title', 'id'); $data['testOptions'] = Test::where('status', 1)->where('parent_id', null)->pluck('title', 'id'); $data['coopOptions'] = Coop::where('status', 1)->pluck('title', 'id'); $data['requiredDocumentOptions'] = RequiredDocument::where('status', 1)->pluck('title', 'id'); return view('coursefinder::program.create', $data); } /** * Store a newly created resource in storage. */ public function store(Request $request) { $request->validate([ 'title' => 'required', ]); $input = $request->except(['prof_test_accepted']); DB::transaction(function () use ($input, $request) { $program = Program::create($input); $attachData = []; foreach ($request->prof_test_accepted as $item) { $attachData[$item['test_id']] = [ 'min_score' => $item['min_score'], 'band_score' => $item['band_score'], ]; } $program->tests()->sync($attachData); flash()->success('Program has been created!'); }); return redirect()->route('program.index'); } /** * Show the specified resource. */ public function show($id) { $data['title'] = 'View Program'; $data['program'] = Program::findOrFail($id); $data['intakeOptions'] = Program::INTAKE; return view('coursefinder::program.show', $data); } /** * Show the form for editing the specified resource. */ public function edit($id) { $data['title'] = 'Edit Program'; $data['editable'] = true; $data['program'] = Program::findOrFail($id); $data['intakeOptions'] = Program::INTAKE; $data['institutionOptions'] = Institution::where('status', 1)->pluck('title', 'id'); $data['programLevelOptions'] = ProgramLevel::where('status', 1)->pluck('title', 'id'); $data['testOptions'] = Test::where('status', 1)->where('parent_id', null)->pluck('title', 'id'); $data['coopOptions'] = Coop::where('status', 1)->pluck('title', 'id'); $data['requiredDocumentOptions'] = RequiredDocument::where('status', 1)->pluck('title', 'id'); return view('coursefinder::program.edit', $data); } /** * Update the specified resource in storage. */ public function update(Request $request, $id) { $input = $request->except(['prof_test_accepted']); DB::transaction(function () use ($input, $request, $id) { $program = Program::findOrFail($id); $program->update($input); $attachData = []; foreach ($request->prof_test_accepted as $item) { $attachData[$item['test_id']] = [ 'min_score' => $item['min_score'], 'band_score' => $item['band_score'], ]; } $program->tests()->sync($attachData); }); flash()->success('program has been updated!'); return redirect()->route('program.index')->withSuccess('Program has been updated!'); } /** * Remove the specified resource from storage. */ public function destroy($id) { try { $program = Program::findOrFail($id); $program->delete(); flash()->success('Program has been deleted!'); } catch (\Throwable $th) { flash()->error($th->getMessage()); } return response()->json(['status' => 200, 'message' => 'Program has been deleted!'], 200); } public function getProgramByInstitution(Request $request) { try { $program = Program::where(['institution_id' => $request->institution_id]) ->select('id', 'title') ->get(); return response()->json([ 'status' => true, 'data' => $program, 'msg' => 'Fetch', ], 200); } catch (\Throwable $th) { return response()->json([ 'status' => false, 'msg' => $th->getMessage(), ], 500); } } public function import(Request $request) { DB::beginTransaction(); try { Excel::import(new ProgramImport(), $request->file('file')->store('temp')); DB::commit(); return redirect()->back()->with('success', "Upload Succesfully"); } catch (\Throwable $th) { DB::rollback(); return redirect()->back()->with('error', $th->getMessage()); } } }