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

101 lines
3.3 KiB
PHP

<?php
namespace Modules\Crm\Http\Controllers;
use App\Business;
use App\Utils\ModuleUtil;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Crm\Utils\CrmUtil;
class CrmSettingsController extends Controller
{
/**
* All Utils instance.
*/
protected $crmUtil;
protected $moduleUtil;
/**
* Constructor
*
* @return void
*/
public function __construct(CrmUtil $crmUtil, ModuleUtil $moduleUtil)
{
$this->crmUtil = $crmUtil;
$this->moduleUtil = $moduleUtil;
}
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
$business_id = request()->session()->get('user.business_id');
$is_admin = $this->moduleUtil->is_admin(auth()->user());
if (! (auth()->user()->can('superadmin') || ($this->moduleUtil->hasThePermissionInSubscription($business_id, 'crm_module')) && $is_admin)) {
abort(403, 'Unauthorized action.');
}
$crm_settings = \Modules\Crm\Utils\TelemarketingUtil::mergeSettings($this->crmUtil->getCrmSettings($business_id));
return view('crm::settings.index')
->with(compact('crm_settings'));
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function updateSettings(Request $request)
{
$business_id = request()->session()->get('user.business_id');
$is_admin = $this->moduleUtil->is_admin(auth()->user());
if (! (auth()->user()->can('superadmin') || ($this->moduleUtil->hasThePermissionInSubscription($business_id, 'crm_module')) && $is_admin)) {
abort(403, 'Unauthorized action.');
}
try {
$input = $request->only([
'order_request_prefix', 'phone_list_reminder_days',
'call_lock_minutes', 'daily_call_target_per_agent', 'followup_days_after_interested',
]);
$crm_settings = $this->crmUtil->getCrmSettings($business_id);
$input = array_merge(\Modules\Crm\Utils\TelemarketingUtil::mergeSettings($crm_settings), $input);
$input['enable_order_request'] = $request->has('enable_order_request') ? 1 : 0;
$input['enable_phone_list_reminder'] = $request->has('enable_phone_list_reminder') ? 1 : 0;
$input['enable_telemarketing'] = $request->has('enable_telemarketing') ? 1 : 0;
$input['auto_create_followup_on_interested'] = $request->has('auto_create_followup_on_interested') ? 1 : 0;
$input['enable_call_recording'] = $request->has('enable_call_recording') ? 1 : 0;
$input['enable_ai_sentiment'] = $request->has('enable_ai_sentiment') ? 1 : 0;
Business::where('id', $business_id)
->update(['crm_settings' => json_encode($input)]);
$output = ['success' => true,
'msg' => __('lang_v1.updated_success'),
];
} catch (\Exception $e) {
\Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage());
$output = ['success' => false,
'msg' => __('messages.something_went_wrong'),
];
}
return redirect()->back()->with(['status' => $output]);
}
}