155 lines
5.4 KiB
PHP
155 lines
5.4 KiB
PHP
<?php
|
|
|
|
namespace Modules\MarketingAddon\App\Http\Controllers;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Validation\Rule;
|
|
use Maatwebsite\Excel\Facades\Excel;
|
|
use Modules\MarketingAddon\App\Exports\SmsGatewayExport;
|
|
use Modules\MarketingAddon\App\Models\GatewayType;
|
|
use Modules\MarketingAddon\App\Models\Smsgateway;
|
|
|
|
class AcnooSmsGatewayController extends Controller
|
|
{
|
|
public function index(Request $request)
|
|
{
|
|
$gateways = Smsgateway::with('type:id,name')
|
|
->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');
|
|
}
|
|
}
|