<?php
namespace Modules\Jobs\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Illuminate\Support\Str;
use Modules\Jobs\Entities\CareerLevel;
use Modules\Jobs\Entities\Company;
use Modules\Jobs\Entities\DegreeLevel;
use Modules\Jobs\Entities\FunctionalArea;
use Modules\Jobs\Entities\Gender;
use Modules\Jobs\Entities\Job;
use Modules\Jobs\Entities\JobExperience;
use Modules\Jobs\Entities\JobShift;
use Modules\Jobs\Entities\JobType;
use Modules\Jobs\Entities\SalaryPeriod;
use Modules\Jobs\Http\Requests\ApplyJobRequest;
use Modules\Location\Entities\City;
class JobsController extends Controller
{
public function index(Request $request)
{
$data = Job::orderBy('created_at', 'DESC');
if ($request->filled('search'))
{
$data->where('title', 'like', '%' . $request->search . '%');
}
$data = $data->paginate(10);
return view('jobs::jobs.index', compact('data'));
}
public function create(Request $request)
{
$companies = Company::active()->get();
$cities = City::active()->get();
$careerLevels = CareerLevel::active()->get();
$salaryPeriods = SalaryPeriod::active()->get();
$functionalAreas = FunctionalArea::active()->get();
$genders = Gender::active()->get();
$jobTypes = JobType::active()->get();
$jobShifts = JobShift::active()->get();
$degreeLevels = DegreeLevel::active()->get();
$jobExperiences = JobExperience::active()->get();
return view('jobs::jobs.create', compact('companies', 'cities', 'careerLevels', 'salaryPeriods', 'functionalAreas', 'genders', 'jobTypes', 'jobShifts', 'degreeLevels', 'jobExperiences'));
}
public function store(Request $request)
{
$request->validate([
'company_id' => 'required',
'title' => 'required',
'city_id' => 'required',
'description' => 'required',
'responbilities' => 'required',
'requirements' => 'required'
]);
$inputData = $request->all();
!$request->filled('is_active') ? $inputData['is_active'] = false : $inputData['is_active'] = true;
!$request->filled('is_featured') ? $inputData['is_featured'] = false : $inputData['is_featured'] = true;
!$request->filled('is_freelance') ? $inputData['is_freelance'] = false : $inputData['is_freelance'] = true;
!$request->filled('hide_salary') ? $inputData['hide_salary'] = false : $inputData['hide_salary'] = true;
$item = Job::create($inputData);
$item->slug = Str::slug($item->title, '-') . '-' . $item->id;
$item->update();
return redirect()
->route('settings.jobs.index')
->with('success', __('Created successfully'));
}
public function edit(Request $request, $id)
{
$job = Job::findOrFail($id);
$companies = Company::active()->get();
$cities = City::active()->get();
$careerLevels = CareerLevel::active()->get();
$salaryPeriods = SalaryPeriod::active()->get();
$functionalAreas = FunctionalArea::active()->get();
$genders = Gender::active()->get();
$jobTypes = JobType::active()->get();
$jobShifts = JobShift::active()->get();
$degreeLevels = DegreeLevel::active()->get();
$jobExperiences = JobExperience::active()->get();
return view('jobs::jobs.edit', compact('job', 'companies', 'cities', 'careerLevels', 'salaryPeriods', 'functionalAreas', 'genders', 'jobTypes', 'jobShifts', 'degreeLevels', 'jobExperiences'));
}
public function update(Request $request, $id)
{
$request->validate([
'company_id' => 'required',
'title' => 'required',
'city_id' => 'required',
'description' => 'required',
'responbilities' => 'required',
'requirements' => 'required'
]);
$inputData = $request->all();
$item = Job::findorFail($id);
$inputData['slug'] = Str::slug($inputData['title'], '-') . '-' . $item->id;
!$request->filled('is_active') ? $inputData['is_active'] = false : $inputData['is_active'] = true;
!$request->filled('is_featured') ? $inputData['is_featured'] = false : $inputData['is_featured'] = true;
!$request->filled('is_freelance') ? $inputData['is_freelance'] = false : $inputData['is_freelance'] = true;
!$request->filled('hide_salary') ? $inputData['hide_salary'] = false : $inputData['hide_salary'] = true;
$item->update($inputData);
return redirect()
->back()
->with('success', __('Updated successfully'));
}
public function destroy(Request $request, $id)
{
$item = Job::findOrFail($id);
$item->delete();
return redirect()->route('settings.companies.index')
->with('success', __('Deleted successfully'));
}
}