name : EmployerJobsController.php
<?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\Location\Entities\City;

class EmployerJobsController extends Controller
{
    public function index(Request $request)
    {
      $company = $request->user()->company()->firstOrFail();

      $data = $company->jobs()->orderBy('created_at', 'DESC');
      
      if ($request->filled('search'))
      {
          $data->where('title', 'like', '%' . $request->search . '%');
      }
      $data = $data->paginate(10);

      return view('jobs::employer_jobs.index', compact('data'));
    }

    public function create(Request $request)
    {
        $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::employer_jobs.create', compact('cities', 'careerLevels', 'salaryPeriods', 'functionalAreas', 'genders', 'jobTypes', 'jobShifts', 'degreeLevels', 'jobExperiences'));
    }

    public function store(Request $request)
    {
        $request->validate([
            'title' => 'required', 
            'city_id' => 'required', 
            'description' => 'required',
            'responbilities' => 'required',
            'requirements' => 'required'
        ]);
        $inputData = $request->all();

        $company = $request->user()->company()->firstOrFail();
        $inputData['company_id'] = $company->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 = Job::create($inputData);
        
        $item->slug = Str::slug($item->title, '-') . '-' . $item->id;
        $item->update();

        return redirect()
            ->route('company.jobs.index')
            ->with('success', __('Created successfully'));
    }

    public function edit(Request $request, $id)
    {
        $company = $request->user()->company()->firstOrFail();
        $job = $company->jobs()->findOrFail($id);

        $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::employer_jobs.edit', compact('job', 'cities', 'careerLevels', 'salaryPeriods', 'functionalAreas', 'genders', 'jobTypes', 'jobShifts', 'degreeLevels', 'jobExperiences'));
    }

    public function update(Request $request, $id)
    {
        $request->validate([
            'title' => 'required', 
            'city_id' => 'required', 
            'description' => 'required',
            'responbilities' => 'required',
            'requirements' => 'required'
        ]);
        $inputData = $request->all();

        $company = $request->user()->company()->firstOrFail();
        $item = $company->jobs()->findOrFail($id);

        $inputData['company_id'] = $company->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)
    {
        $company = $request->user()->company()->firstOrFail();

        $item = $company->jobs()->findOrFail($id);

        $item->delete();

        return redirect()->route('company.jobs.index')
            ->with('success', __('Deleted successfully'));
    }
}

© 2025 UnknownSec
afwwrfwafr45458465
Password