commonUtil = $commonUtil; } /** * Display a listing of the resource. * * @return Response */ public function index() { if ((! auth()->user()->can('crm.view_all_call_log') && ! auth()->user()->can('crm.view_own_call_log')) || ! config('constants.enable_crm_call_log')) { abort(403, 'Unauthorized action.'); } $business_id = request()->session()->get('user.business_id'); if (request()->ajax()) { $query = CrmCallLog::where('crm_call_logs.business_id', $business_id) ->leftJoin('contacts as c', 'crm_call_logs.contact_id', '=', 'c.id') ->leftJoin('users as u', 'crm_call_logs.user_id', '=', 'u.id') ->leftJoin('users as created_users', 'crm_call_logs.created_by', '=', 'created_users.id') ->select( 'crm_call_logs.*', 'c.name as customer_name', 'c.supplier_business_name', DB::raw("CONCAT(COALESCE(u.surname, ''), ' ', COALESCE(u.first_name, ''), ' ', COALESCE(u.last_name, '')) as user_full_name"), DB::raw("CONCAT(COALESCE(created_users.surname, ''), ' ', COALESCE(created_users.first_name, ''), ' ', COALESCE(created_users.last_name, '')) as created_user_name") ); if (! auth()->user()->can('crm.view_all_call_log')) { $query->where('crm_call_logs.created_by', auth()->user()->id); } if (! empty(request()->get('contact_id'))) { $query->where('crm_call_logs.contact_id', request()->get('contact_id')); } if (! empty(request()->get('user_id'))) { $query->where('crm_call_logs.created_by', request()->get('user_id')); } if (! empty(request()->input('start_time')) && ! empty(request()->input('end_time'))) { $start_time = request()->input('start_time'); $end_time = request()->input('end_time'); $query->whereDate('crm_call_logs.start_time', '>=', $start_time) ->whereDate('crm_call_logs.start_time', '<=', $end_time); } return Datatables::of($query) ->editColumn('start_time', '@if(!empty($start_time)) @format_datetime($start_time) @endif') ->editColumn('end_time', '@if(!empty($end_time)) @format_datetime($end_time) @endif') ->editColumn('duration', function ($row) { $duration = ! empty($row->duration) ? CarbonInterval::seconds($row->duration)->cascade()->forHumans() : ''; return $duration; }) ->addColumn('contact_number', '{{$mobile_number}} @if(!empty($mobile_name))
({{$mobile_name}}) @endif') ->addColumn('contact_name', '@if(!empty($supplier_business_name)) {{$supplier_business_name}}
@endif {{$customer_name}}') ->addColumn('mass_delete', function ($row) { return ''; }) ->rawColumns(['contact_name', 'contact_number', 'mass_delete']) ->filterColumn('user_full_name', function ($query, $keyword) { $query->whereRaw("CONCAT(COALESCE(u.surname, ''), ' ', COALESCE(u.first_name, ''), ' ', COALESCE(u.last_name, '')) like ?", ["%{$keyword}%"]); }) ->filterColumn('created_user_name', function ($query, $keyword) { $query->whereRaw("CONCAT(COALESCE(created_users.surname, ''), ' ', COALESCE(created_users.first_name, ''), ' ', COALESCE(created_users.last_name, '')) like ?", ["%{$keyword}%"]); }) ->filterColumn('contact_name', function ($query, $keyword) { $query->where(function ($q) use ($keyword) { $q->where('c.name', 'like', "%{$keyword}%") ->orWhere('c.supplier_business_name', 'like', "%{$keyword}%"); }); }) ->filterColumn('contact_number', function ($query, $keyword) { $query->where(function ($q) use ($keyword) { $q->where('mobile_number', 'like', "%{$keyword}%") ->orWhere('mobile_name', 'like', "%{$keyword}%"); }); }) ->make(true); } $contacts = Contact::contactDropdown($business_id, false, false); $users = User::forDropdown($business_id, false); $is_admin = $this->commonUtil->is_admin(auth()->user()); return view('crm::call_logs.index')->with(compact('contacts', 'users', 'is_admin')); } /** * Mass deletes call logs. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function massDestroy(Request $request) { $is_admin = $this->commonUtil->is_admin(auth()->user()); $business_id = $request->session()->get('user.business_id'); $selected_rows = explode(',', $request->input('selected_rows')); if (! empty($selected_rows)) { CrmCallLog::where('business_id', $business_id) ->whereIn('id', $selected_rows) ->delete(); } $output = ['success' => 1, 'msg' => __('lang_v1.deleted_success'), ]; return redirect()->back()->with(['status' => $output]); } public function allUsersCallLog() { if (request()->ajax()) { $business_id = request()->session()->get('user.business_id'); $today = \Carbon::now()->format('Y-m-d'); $yesterday = \Carbon::yesterday()->format('Y-m-d'); $query = CrmCallLog::where('crm_call_logs.business_id', $business_id) ->join('users as u', 'crm_call_logs.created_by', '=', 'u.id') ->select( 'u.username', DB::raw("SUM(IF(DATE(start_time)='{$today}', 1, 0)) as calls_today"), DB::raw("SUM(IF(DATE(start_time)='{$yesterday}', 1, 0)) as calls_yesterday"), DB::raw('COUNT(crm_call_logs.id) as all_calls') )->groupBy('u.id'); return Datatables::of($query) ->make(true); } } }