![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/job-board.corals.io/Corals/modules/Jobs/Http/Controllers/ |
<?php namespace Corals\Modules\Jobs\Http\Controllers; use Corals\Foundation\Http\Controllers\BaseController; use Corals\Modules\Jobs\DataTables\JobApplicationDataTable; use Corals\Modules\Jobs\Http\Requests\JobApplicationRequest; use Corals\Modules\Jobs\Models\Job; use Corals\Modules\Jobs\Models\Jobapplication; use Corals\Modules\Jobs\Services\JobApplicationService; use Corals\User\Models\User; class JobsApplicationController extends BaseController { protected $jobApplicationService; public function __construct(JobApplicationService $jobApplicationService) { $this->jobApplicationService = $jobApplicationService; $this->resource_url = config('jobs.models.job_application.resource_url'); $this->title = trans('Jobs::module.jobApplication.title'); $this->title_singular = trans('Jobs::module.jobApplication.title_singular'); parent::__construct(); } /** * @param JobApplicationRequest $request * @param JobApplicationDataTable $dataTable * @return mixed */ public function index(JobApplicationRequest $request, JobApplicationDataTable $dataTable) { return $dataTable->render('Jobs::job_applications.index'); } /** * @param JobApplicationRequest $request * @param Job $job * @param Jobapplication $jobApplication * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View */ public function getApplicationForm(JobApplicationRequest $request, Job $job, JobApplication $jobApplication) { $this->setViewSharedData([ 'title_singular' => trans('Corals::labels.create_title', ['title' => $this->title_singular]) ]); return view('Jobs::job_applications.apply')->with(compact('jobApplication', 'job')); } /** * @param JobApplicationRequest $request * @param Job $job * @param User $user * @return \Illuminate\Foundation\Application|\Illuminate\Http\JsonResponse|mixed */ public function submitApplication(JobApplicationRequest $request, Job $job) { try { $jobApplication = $this->jobApplicationService->store($request, JobApplication::class, ['job_id' => $job->id]); flash(trans('Corals::messages.success.created', ['item' => $this->title_singular]))->success(); } catch (\Exception $exception) { log_exception($exception, JobApplication::class, 'store'); } return redirectTo('/jobs'); } /** * @param JobApplicationRequest $request * @param Job $job * @param Jobapplication $jobApplication * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View */ public function updateStatusForm(JobApplicationRequest $request, Job $job, JobApplication $jobApplication) { $this->setViewSharedData([ 'title_singular' => trans('Corals::labels.create_title', ['title' => $this->title_singular]) ]); return view('Jobs::job_applications.update_status')->with(compact('jobApplication', 'job')); } /** * @param JobApplicationRequest $request * @param Job $job * @param Jobapplication $jobApplication * @return \Illuminate\Foundation\Application|\Illuminate\Http\JsonResponse|mixed * @throws \Illuminate\Auth\Access\AuthorizationException */ public function submitUpdateStatus(JobApplicationRequest $request, Job $job, JobApplication $jobApplication) { $this->authorize('update', $jobApplication); try { $oldStatus = $jobApplication->status; $newStatus = $request->get('status'); $jobApplication->update(['status' => $newStatus]); if ($oldStatus != $newStatus) { event('notifications.jobs.job_application_status_changed', [ 'jobApplication' => $jobApplication, 'user' => $jobApplication->user, ]); } } catch (\Exception $exception) { log_exception($exception, JobApplication::class, 'update'); } return redirectTo(config('jobs.models.job_application.resource_url')); } }