mirror of
https://github.com/Bigherollc/wticreatorstudio.git
synced 2026-09-29 12:13:06 -04:00
221 lines
7.6 KiB
PHP
221 lines
7.6 KiB
PHP
<?php
|
|
namespace Modules\JobPortalCompany\Admin;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Str;
|
|
use Modules\JobPortal\Http\Controllers\JobPortalAdminController;
|
|
use Modules\JobPortal\Entities\Attributes;
|
|
use Modules\JobPortal\Entities\AttributesTranslation;
|
|
use Modules\JobPortal\Entities\Terms;
|
|
use Modules\JobPortal\Entities\TermsTranslation;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class AttributeController extends JobPortalAdminController
|
|
{
|
|
protected $attributesClass;
|
|
protected $termsClass;
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->attributesClass = Attributes::class;
|
|
$this->termsClass = Terms::class;
|
|
}
|
|
|
|
public function index(Request $request)
|
|
{
|
|
$this->checkPermission('employer_manage_others');
|
|
$listAttr = $this->attributesClass::where("service", 'company');
|
|
if (!empty($search = $request->query('s'))) {
|
|
$listAttr->where('name', 'LIKE', '%' . $search . '%');
|
|
}
|
|
$listAttr->orderBy('created_at', 'desc');
|
|
$data = [
|
|
'rows' => $listAttr->get(),
|
|
'row' => new $this->attributesClass(),
|
|
'translation' => new AttributesTranslation()
|
|
];
|
|
return view('jobportalcompany::admin.attribute.index', $data);
|
|
}
|
|
|
|
public function edit(Request $request, $id)
|
|
{
|
|
$row = $this->attributesClass::find($id);
|
|
if (empty($row)) {
|
|
return redirect()->back()->with('error', __('Attributes not found!'));
|
|
}
|
|
$translation = $row->translateOrOrigin($request->query('lang'));
|
|
$this->checkPermission('employer_manage_others');
|
|
$data = [
|
|
'translation' => $translation,
|
|
'enable_multi_lang'=>true,
|
|
'rows' => $this->attributesClass::where("service", 'company')->get(),
|
|
'row' => $row
|
|
];
|
|
return view('jobportalcompany::admin.attribute.detail', $data);
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$this->checkPermission('employer_manage_others');
|
|
$this->validate($request, [
|
|
'name' => 'required'
|
|
]);
|
|
$id = $request->input('id');
|
|
if ($id) {
|
|
$row = $this->attributesClass::find($id);
|
|
if (empty($row)) {
|
|
return redirect()->back()->with('error', __('Attributes not found!'));
|
|
}
|
|
} else {
|
|
$row = new $this->attributesClass($request->input());
|
|
$row->service = 'company';
|
|
}
|
|
$row->fill($request->input());
|
|
$res = $row->saveOriginOrTranslation($request->input('lang'));
|
|
if ($res) {
|
|
return redirect()->back()->with('success', __('Attribute saved'));
|
|
}
|
|
}
|
|
|
|
public function editAttrBulk(Request $request)
|
|
{
|
|
$this->checkPermission('employer_manage_others');
|
|
$ids = $request->input('ids');
|
|
$action = $request->input('action');
|
|
if (empty($ids) or !is_array($ids)) {
|
|
return redirect()->back()->with('error', __('Select at least 1 item!'));
|
|
}
|
|
if (empty($action)) {
|
|
return redirect()->back()->with('error', __('Select an Action!'));
|
|
}
|
|
if ($action == "delete") {
|
|
foreach ($ids as $id) {
|
|
$query = $this->attributesClass::where("id", $id);
|
|
$query->first();
|
|
if(!empty($query)){
|
|
$query->delete();
|
|
}
|
|
}
|
|
}
|
|
return redirect()->back()->with('success', __('Updated success!'));
|
|
}
|
|
|
|
public function terms(Request $request, $attr_id)
|
|
{
|
|
$this->checkPermission('employer_manage_others');
|
|
$row = $this->attributesClass::find($attr_id);
|
|
if (empty($row)) {
|
|
return redirect()->back()->with('error', __('Term not found'));
|
|
}
|
|
$listTerms = $this->termsClass::where("attr_id", $attr_id);
|
|
if (!empty($search = $request->query('s'))) {
|
|
$listTerms->where('name', 'LIKE', '%' . $search . '%');
|
|
}
|
|
$listTerms->orderBy('created_at', 'desc');
|
|
$data = [
|
|
'rows' => $listTerms->paginate(20),
|
|
'attr' => $row,
|
|
"row" => new $this->termsClass(),
|
|
'translation' => new TermsTranslation()
|
|
];
|
|
return view('jobportalcompany::admin.terms.index', $data);
|
|
}
|
|
|
|
public function term_edit(Request $request, $id)
|
|
{
|
|
$this->checkPermission('employer_manage_others');
|
|
$row = $this->termsClass::find($id);
|
|
if (empty($row)) {
|
|
return redirect()->back()->with('error', __('Term not found'));
|
|
}
|
|
$translation = $row->translateOrOrigin($request->query('lang'));
|
|
$attr = $this->attributesClass::find($row->attr_id);
|
|
$data = [
|
|
'row' => $row,
|
|
'translation' => $translation,
|
|
'enable_multi_lang'=>true
|
|
];
|
|
return view('jobportalcompany::admin.terms.detail', $data);
|
|
}
|
|
|
|
public function term_store(Request $request)
|
|
{
|
|
$this->checkPermission('employer_manage_others');
|
|
$this->validate($request, [
|
|
'name' => 'required'
|
|
]);
|
|
$id = $request->input('id');
|
|
if ($id) {
|
|
$row = $this->termsClass::find($id);
|
|
if (empty($row)) {
|
|
return redirect()->back()->with('error', __('Term not found'));
|
|
}
|
|
} else {
|
|
$row = new $this->termsClass($request->input());
|
|
$row->attr_id = $request->input('attr_id');
|
|
}
|
|
$row->fill($request->input());
|
|
$row->image_id = $request->input('image_id');
|
|
$res = $row->saveOriginOrTranslation($request->input('lang'));
|
|
if ($res) {
|
|
return redirect()->back()->with('success', __('Term saved'));
|
|
}
|
|
}
|
|
|
|
public function editTermBulk(Request $request)
|
|
{
|
|
$this->checkPermission('employer_manage_others');
|
|
$ids = $request->input('ids');
|
|
$action = $request->input('action');
|
|
if (empty($ids) or !is_array($ids)) {
|
|
return redirect()->back()->with('error', __('Select at least 1 item!'));
|
|
}
|
|
if (empty($action)) {
|
|
return redirect()->back()->with('error', __('Select an Action!'));
|
|
}
|
|
if ($action == "delete") {
|
|
foreach ($ids as $id) {
|
|
$query = $this->termsClass::where("id", $id);
|
|
$query->first();
|
|
if(!empty($query)){
|
|
$query->delete();
|
|
}
|
|
}
|
|
}
|
|
return redirect()->back()->with('success', __('Updated success!'));
|
|
}
|
|
|
|
public function getForSelect2(Request $request)
|
|
{
|
|
$pre_selected = $request->query('pre_selected');
|
|
$selected = $request->query('selected');
|
|
|
|
if($pre_selected && $selected){
|
|
if(is_array($selected))
|
|
{
|
|
$query = $this->termsClass::getForSelect2Query('company');
|
|
$items = $query->whereIn('bravo_terms.id',$selected)->take(50)->get();
|
|
return response()->json([
|
|
'items'=>$items
|
|
]);
|
|
}
|
|
|
|
if(empty($item)){
|
|
return response()->json([
|
|
'text'=>''
|
|
]);
|
|
}else{
|
|
return response()->json([
|
|
'text'=>$item->name
|
|
]);
|
|
}
|
|
}
|
|
$q = $request->query('q');
|
|
$query = $this->termsClass::getForSelect2Query('company',$q);
|
|
$res = $query->orderBy('bravo_terms.id', 'desc')->limit(20)->get();
|
|
return response()->json([
|
|
'results' => $res
|
|
]);
|
|
}
|
|
}
|