<?php
namespace Modules\Jobs\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Jobs\Entities\Company;
use Modules\Jobs\Entities\Industry;
use Modules\Jobs\Entities\OwnershipType;
use Modules\Location\Entities\City;
use Modules\Jobs\Http\Requests\CompanyStoreRequest;
use Modules\User\Entities\User;
use Illuminate\Support\Str;
class CompaniesController extends Controller
{
public function index(Request $request)
{
$data = Company::orderBy('created_at', 'DESC');
if ($request->filled('search'))
{
$data->where('company_name', 'like', '%' . $request->search . '%');
}
$data = $data->paginate(10);
return view('jobs::companies.index', compact('data'));
}
public function create(Request $request)
{
$employers = User::where('role', 'employer')->get();
$industries = Industry::active()->get();
$ownershipType = OwnershipType::active()->get();
$cities = City::active()->get();
$no_of_offices = Industry::active()->get();
$no_of_employees = OwnershipType::active()->get();
$established_in = City::active()->get();
return view('jobs::companies.create', compact(
'industries','ownershipType','cities','employers'
));
}
public function store(Request $request)
{
$request->validate([
'user_id' => 'required',
'logo' => 'required|max:155',
'company_name' => 'required|max:155',
'company_email' => 'required',
'industry_id' => 'required',
'city_id' => 'required'
]
);
$inputData = $request->all();
$user = User::findorFail($inputData['user_id']);
$image = $request->file('logo');
!$request->filled('is_active') ? $inputData['is_active'] = false : $inputData['is_active'] = true;
!$request->filled('is_featured') ? $inputData['is_featured'] = false : $inputData['is_featured'] = true;
if ($image != '')
{
$request->validate([
'logo' => 'sometimes|required|mimes:jpg,jpeg,png,svg|max:20000', ],
['logo.mimes' => __('The :attribute must be an jpg,jpeg,png,svg') , ]
);
$path_folder = public_path('storage/user_storage/'.$user->id);
$image_name = "company_logo_" . rand() . '.' . $image->getClientOriginalExtension();
$image->move($path_folder , $image_name);
$inputData['logo'] = $image_name;
}
$item = Company::create($inputData);
$item->slug = Str::slug($item->company_name, '-') . '-' . $item->id;
$item->update();
return redirect()
->route('settings.companies.index')
->with('success', __('Created successfully'));
}
public function edit($id,Request $request)
{
$company = Company::findOrFail($id);
$employers = User::where('role', 'employer')->get();
$industries = Industry::active()->get();
$ownershipType = OwnershipType::active()->get();
$cities = City::active()->get();
$no_of_offices = Industry::active()->get();
$no_of_employees = OwnershipType::active()->get();
$established_in = City::active()->get();
return view('jobs::companies.edit', compact(
'employers','company','industries','ownershipType','cities'
));
}
public function update($id,Request $request)
{
$request->validate([
'user_id' => 'required',
'company_name' => 'required|max:155',
'company_email' => 'required',
'industry_id' => 'required',
'city_id' => 'required'
]
);
$item = Company::findorFail($id);
$inputData = $request->all();
$user = User::findorFail($inputData['user_id']);
$inputData['slug'] = Str::slug($inputData['company_name'], '-') . '-' . $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;
$image = $request->file('logo');
if ($image != '')
{
$request->validate([
'logo' => 'sometimes|required|mimes:jpg,jpeg,png,svg|max:20000', ],
['logo.mimes' => __('The :attribute must be an jpg,jpeg,png,svg') , ]
);
$path_folder = public_path('storage/user_storage/'.$user->id);
$path = $path_folder."/".$item->logo;
deleteImageWithPath($path);
$image_name = "company_logo_" . rand() . '.' . $image->getClientOriginalExtension();
$image->move($path_folder , $image_name);
$inputData['logo'] = $image_name;
}
else $inputData['logo'] = $item->logo;
$item->update($inputData);
return redirect()
->back()
->with('success', __('Updated successfully'));
}
/**
* Remove the specified resource from storage.
* @param int $id
* @return Response
*/
public function destroy($id)
{
$item = Company::findOrFail($id);
if ($item->jobs()->count() > 0) {
return redirect()->route('settings.companies.index')->with('error',"Can't delete because it has jobs in it");
}
// delete image
$path = public_path('storage/thumb_templates') . "/" . $item->thumb;
$path_folder = public_path('storage/user_storage/'.$item->user->id);
$path = $path_folder."/".$item->logo;
deleteImageWithPath($path);
$item->delete();
return redirect()->route('settings.companies.index')
->with('success', __('Deleted successfully'));
}
}