where('business_id', auth()->user()->business_id) ->when($request->filled('channel'), function ($q) use ($request) { $q->where('channel', $request->channel); }) ->when($request->filled('search'), function ($q) use ($request) { $q->where(function ($query) use ($request) { $query->where('name', 'like', '%' . $request->search . '%') ->orWhereHas('type', function ($type) use ($request) { $type->where('name', 'like', '%' . $request->search . '%'); }); }); }) ->latest() ->paginate($request->per_page ?? 20) ->appends($request->query()); if ($request->ajax()) { return response()->json([ 'data' => view('marketingaddon::sms-gateways.datas', compact('gateways'))->render() ]); } return view('marketingaddon::sms-gateways.index', compact('gateways')); } public function create(Request $request) { $types = GatewayType::where('channel', $request->channel) ->latest() ->get(); return view('marketingaddon::sms-gateways.create', compact('types')); } public function store(Request $request) { $request->validate([ 'status' => 'required|integer', 'params' => 'required|array', 'params.*' => 'required|string', 'name' => [ 'required', Rule::unique('smsgateways')->where(function ($q) { return $q->where('business_id', auth()->user()->business_id); }), ], 'type_id' => 'required|exists:gateway_types,id', ]); $type = GatewayType::findOrFail($request->type_id); Smsgateway::create($request->all() + [ 'driver' => $type->driver, 'namespace' => $type->namespace, 'business_id' => auth()->user()->business_id ]); return response()->json([ 'message' => __(':channel gateway created successfully.', ['channel' => ucfirst($request->channel)]), 'redirect' => route('business.sms-gateways.index', ['channel' => $request->channel]) ]); } public function show(string $id) { $gateway = Smsgateway::findOrFail($id); $gateway->update(['status' => !$gateway->status]); return response()->json(['message' => 'Sms gateway']); } public function edit(Request $request, string $id) { $types = GatewayType::where('channel', $request->channel)->latest()->get(); $gateway = Smsgateway::where('business_id', auth()->user()->business_id)->findOrFail($id); return view('marketingaddon::sms-gateways.edit', compact('gateway', 'types')); } public function update(Request $request, string $id) { $request->validate([ 'status' => 'required|integer', 'params' => 'required|array', 'params.*' => 'required|string', 'type_id' => 'required|exists:gateway_types,id', 'name' => [ 'required', Rule::unique('smsgateways', 'name')->ignore($id)->where(function ($q) { return $q->where('business_id', auth()->user()->business_id); }), ], ]); $type = GatewayType::findOrFail($request->type_id); $gateway = Smsgateway::findOrFail($id); $gateway->update($request->all() + [ 'driver' => $type->driver, 'namespace' => $type->namespace ]); return response()->json([ 'message' => __(':channel gateway updated successfully.', ['channel' => ucfirst($request->channel)]), 'redirect' => route('business.sms-gateways.index', ['channel' => $request->channel]) ]); } public function destroy(Request $request, string $id) { Smsgateway::where('id', $id)->delete(); return response()->json([ 'message' => __(':channel gateway deleted successfully.', ['channel' => ucfirst($request->channel)]), 'redirect' => route('business.sms-gateways.index', ['channel' => $request->channel]) ]); } public function deleteAll(Request $request) { Smsgateway::whereIn('id', $request->ids)->delete(); return response()->json([ 'message' => __('Selected :channel gateway deleted successfully.', ['channel' => $request->channel]), 'redirect' => route('business.sms-gateways.index', ['channel' => $request->channel]) ]); } public function exportExcel() { return Excel::download(new SmsGatewayExport, 'sms-gateway.xlsx'); } public function exportCsv() { return Excel::download(new SmsGatewayExport, 'sms-gateway.csv'); } }