107 lines
3.7 KiB
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')]);
|
|
}
|
|
}
|