Viewing file: KeywordController.php (4.13 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Controllers\Customer;
use App\Http\Controllers\Controller; use App\Models\Group; use App\Models\Keyword; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB;
class KeywordController extends Controller { public function index() { return view('customer.keywords.index'); }
public function getAll() {
$keywords = auth('customer')->user()->keywords()->select(['id', 'word', 'customer_phone','group_id', 'confirm_message', 'optout_message', 'type','group_id']); return datatables()->of($keywords) ->addColumn('type', function(Keyword $q) { $type = ucfirst(str_replace('_', '', $q->type)); return $type; }) ->addColumn('contacts', function(Keyword $q) { $contacts = [];
foreach ($q->group->contacts as $c) { $contacts[] = $c->contact->contact_dial_code.trim($c->contact->number); } if($contacts){ return "<div class='show-more' style='max-width: 500px;white-space: pre-wrap'>" . implode(", ", $contacts) . "</div>"; } return ""; }) ->addColumn('action',function(Keyword $q){ return "<a class='btn btn-sm btn-info' href='".route('customer.keywords.edit', [$q->id])."'>Edit</a> ". '<button class="btn btn-sm btn-danger" data-message="Are you sure you want to delete this keyword?" data-action='.route('customer.keywords.destroy',[$q]).' data-input={"_method":"delete"} data-toggle="modal" data-target="#modal-confirm">Delete</button>' ; }) ->rawColumns(['contacts','action','type']) ->toJson(); }
public function create() { $data['groups'] = Group::where('status','active')->get(); $data['numbers']=auth('customer')->user()->numbers; return view('customer.keywords.create',$data); }
public function store(Request $request) { DB::beginTransaction(); try { $request->validate([ 'word' => 'required', 'type' => 'required|in:opt_in,opt_out', ]);
$customer_number = auth('customer')->user()->numbers()->where('id',$request->number_id)->firstOrFail(); $request['customer_phone'] = $customer_number->number; $request['customer_number_id'] = $customer_number->id;
auth('customer')->user()->keywords()->create($request->all());
DB::commit(); return back()->with('success', 'keyword successfully created'); }catch(\Exception $ex){ DB::rollBack(); return back()->withErrors(['failed'=>$ex->getMessage()]); } } public function edit(Keyword $keyword) { $data['keyword'] = $keyword; $data['groups'] = Group::where('status','active')->get(); $data['numbers']=auth('customer')->user()->numbers; return view('customer.keywords.edit',$data); } public function update(Keyword $keyword, Request $request) {
$request->validate([ 'word' => 'required', 'type' => 'required|in:opt_in,opt_out', ]); // $customer_number = auth('customer')->user()->numbers()->where('id',$keyword->customer_number_id)->first(); // // if(!$customer_number){ // return redirect()->back()->with('fail','Invalid number'); // } // // $request['customer_phone'] = $customer_number->number;
$keyword->update($request->all());
return back()->with('success', 'Keyword successfully updated'); } public function destroy(Keyword $keyword){
$customer_keyword = auth('customer')->user()->keywords()->where('id',$keyword->id)->first();
if(!$customer_keyword){ return redirect()->back()->with('fail','Invalid keyword'); } $keyword->delete();
return back()->with('success','Keyword successfully deleted'); }
}
|