Viewing file: FromGroupController.php (4.96 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\Campaign; use App\Models\FromGroup; use App\Models\FromGroupNumber; use Illuminate\Http\Request;
class FromGroupController extends Controller { public function index(){
return view('customer.from_group.index'); } public function show(){ $customers = auth('customer')->user()->from_groups()->select(['id', 'name','type','status']); return datatables()->of($customers) ->addColumn('numbers', function ($q) { $c = []; $from_numbers = FromGroupNumber::where('group_id', $q->id)->get(); foreach ($from_numbers as $contact) { $c[] = trim($contact->number); } $count=count($c); $text=$count>=100?' and more '.($q->from_group_numbers()->count()-$count):''; return "<div class='show-more' style='max-width: 500px;white-space: pre-wrap'>" . implode(", ", $c).$text. " </div>"; }) ->addColumn('status',function ($q){
return $q->status; }) ->addColumn('type',function ($q){
return str_replace('_','',ucwords($q->type)); }) ->addColumn('action', function ($q) {
return "<a class='btn btn-sm btn-info' href='" . route('customer.from-group.edit', [$q]) . "'>Edit</a> " . '<button class="btn btn-sm btn-danger" data-message="Are you sure you want to delete this from-group? <br><span class=\'text-danger text-sm\'>This will delete all the from numbers assigned to this group</span></br>" data-action=' . route('customer.from-group.destroy', [$q]) . ' data-input={"_method":"delete"} data-toggle="modal" data-target="#modal-confirm">Delete</button>'; }) ->rawColumns(['action', 'numbers','status']) ->toJson(); } public function create(){
return view('customer.from_group.create'); }
public function store(Request $request){
$request->validate([ 'name' => 'required|unique:from_groups,name', 'status' => 'required|in:active,inactive', 'type'=>'required|in:number,sender_id,whatsapp,voice', ]);
if (!$request->from_numbers || count($request->from_numbers) < 1){ return redirect()->back()->withErrors(['failed'=> trans('customer.messages.al_last_one_number_need')]); } $from_group= auth('customer')->user()->from_groups()->create($request->all()); if ($request->from_numbers){ foreach ($request->from_numbers as $number){ $group_number = new FromGroupNumber(); $group_number->group_id=$from_group->id; $group_number->number= $number; $group_number->save(); } }
return redirect()->route('customer.from-group.index')->with('success', trans('customer.messages.from_group_created')); }
public function edit(FromGroup $from_group){ $data['group'] = $from_group; $from_group_number = $from_group->from_group_numbers()->pluck('number'); $data['from_group_numbers'] = json_decode($from_group_number); return view('customer.from_group.edit', $data); }
public function update(FromGroup $from_group, Request $request){ $request->validate([ 'name' => 'required|unique:from_groups,name,'.$from_group->id, 'status' => 'required|in:active,inactive', ]); $from_group->update($request->all());
if (!$request->from_numbers || count($request->from_numbers) < 1){ return redirect()->back()->withErrors(['failed'=> trans('customer.messages.al_last_one_number_need')]); }
if ($request->from_numbers){ foreach ($request->from_numbers as $number){ $group_number = $from_group->id?FromGroupNumber::where('group_id',$from_group->id)->first():new FromGroupNumber(); $group_number->group_id=$from_group->id; $group_number->number= $number; $group_number->save(); } } return redirect()->route('customer.from-group.index')->with('success', trans('customer.messages.from_group_updated')); }
public function destroy(FromGroup $from_group){ $campaign = Campaign::where('from_group_id', $from_group->id)->first(); if ($campaign) { return redirect()->back()->withErrors(['failed' => trans('customer.messages.from_group_used')]); } if ($from_group->from_group_numbers()){ $from_group->from_group_numbers()->delete(); } $from_group->delete(); return redirect()->route('customer.from-group.index')->with('success', trans('customer.messages.from_group_deleted')); } }
|