ultimatepos/Modules/Crm/Http/Controllers/CallScriptController.php

107 lines
3.7 KiB
PHP

<?php
namespace Modules\Crm\Http\Controllers;
use App\Utils\ModuleUtil;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Modules\Crm\Entities\CrmCallScript;
use Modules\Crm\Utils\TelemarketingUtil;
use Yajra\DataTables\Facades\DataTables;
class CallScriptController extends Controller
{
protected $moduleUtil;
public function __construct(ModuleUtil $moduleUtil)
{
$this->moduleUtil = $moduleUtil;
}
protected function authorizeAccess(): void
{
$business_id = request()->session()->get('user.business_id');
TelemarketingUtil::authorizeTelemarketing($this->moduleUtil, $business_id, 'crm.telemarketing.manage_scripts');
}
public function index()
{
$this->authorizeAccess();
$business_id = request()->session()->get('user.business_id');
if (request()->ajax()) {
$query = CrmCallScript::where('business_id', $business_id);
return Datatables::of($query)
->addColumn('action', function ($row) {
return '<a href="'.action([self::class, 'edit'], $row->id).'" class="btn btn-xs btn-primary"><i class="fa fa-edit"></i></a>';
})
->rawColumns(['action'])
->make(true);
}
return view('crm::telemarketing.scripts.index');
}
public function create()
{
$this->authorizeAccess();
return view('crm::telemarketing.scripts.create');
}
public function store(Request $request)
{
$this->authorizeAccess();
$business_id = request()->session()->get('user.business_id');
if ($request->boolean('is_default')) {
CrmCallScript::where('business_id', $business_id)->update(['is_default' => false]);
}
CrmCallScript::create([
'business_id' => $business_id,
'name' => $request->input('name'),
'opening_text' => $request->input('opening_text'),
'discovery_questions' => array_filter(explode("\n", $request->input('discovery_questions', ''))),
'objection_handlers' => $request->input('objection_handlers', []),
'closing_cta' => $request->input('closing_cta'),
'is_default' => $request->boolean('is_default'),
'created_by' => auth()->id(),
]);
return redirect()->action([self::class, 'index'])->with('status', ['success' => 1, 'msg' => __('lang_v1.added_success')]);
}
public function edit($id)
{
$this->authorizeAccess();
$business_id = request()->session()->get('user.business_id');
$script = CrmCallScript::where('business_id', $business_id)->findOrFail($id);
return view('crm::telemarketing.scripts.edit')->with(compact('script'));
}
public function update(Request $request, $id)
{
$this->authorizeAccess();
$business_id = request()->session()->get('user.business_id');
$script = CrmCallScript::where('business_id', $business_id)->findOrFail($id);
if ($request->boolean('is_default')) {
CrmCallScript::where('business_id', $business_id)->update(['is_default' => false]);
}
$script->update([
'name' => $request->input('name'),
'opening_text' => $request->input('opening_text'),
'discovery_questions' => array_filter(explode("\n", $request->input('discovery_questions', ''))),
'objection_handlers' => $request->input('objection_handlers', []),
'closing_cta' => $request->input('closing_cta'),
'is_default' => $request->boolean('is_default'),
]);
return redirect()->action([self::class, 'index'])->with('status', ['success' => 1, 'msg' => __('lang_v1.updated_success')]);
}
}