update marketing
All checks were successful
All checks were successful
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\MarketingAddon\App\Http\Controllers;
|
||||
|
||||
use App\Models\Option;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Modules\MarketingAddon\App\Models\Template;
|
||||
|
||||
class AcnooTemplateController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
$businessId = auth()->user()->business_id;
|
||||
$type = $request->type;
|
||||
|
||||
$templates = Template::where('business_id', $businessId)
|
||||
->where('type', $type)
|
||||
->get()
|
||||
->keyBy('title');
|
||||
|
||||
$page_data = Option::where('key', 'notification_settings_' . $businessId)->first()?->value ?? [];
|
||||
|
||||
return view('marketingaddon::templates.index', compact('templates', 'page_data'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$businessId = auth()->user()->business_id;
|
||||
$type = $request->type;
|
||||
$tabs = ['new_sale', 'payment_received', 'payment_paid', 'purchase', 'payment_reminder', 'attendance'];
|
||||
|
||||
$request->validate(collect($tabs)
|
||||
->flatMap(function ($key) use ($request, $type) {
|
||||
if (!$request->has($key)) {
|
||||
return [];
|
||||
}
|
||||
return [
|
||||
"{$key}.template" => 'nullable|string|max:255',
|
||||
"{$key}.subject" => $type === 'email' ? 'required|string|max:255' : 'nullable|string|max:255',
|
||||
"{$key}.message" => 'required|string|max:1000',
|
||||
];
|
||||
})->toArray()
|
||||
);
|
||||
|
||||
$optionKey = 'notification_settings_' . $businessId;
|
||||
|
||||
$option = Option::firstOrCreate(
|
||||
['key' => $optionKey],
|
||||
['value' => []]
|
||||
);
|
||||
|
||||
$optionValue = $option->value ?? [];
|
||||
|
||||
foreach ($tabs as $tab) {
|
||||
if (!$request->has($tab)) continue;
|
||||
|
||||
$tabData = $request->{$tab};
|
||||
|
||||
$optionValue[$tab][$type]['enabled'] = $tabData[$type]['enabled'] ?? 0;
|
||||
|
||||
$message = $tabData['message'] ?? null;
|
||||
$variables = $message ? extractTemplateVariables($message) : [];
|
||||
|
||||
Template::updateOrCreate(
|
||||
[
|
||||
'business_id' => $businessId,
|
||||
'title' => $tab,
|
||||
'type' => $type,
|
||||
],
|
||||
[
|
||||
'subject' => $tabData['subject'] ?? null,
|
||||
'template' => $tabData['template'] ?? null,
|
||||
'message' => $message,
|
||||
'variables' => $variables,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
$option->update(['value' => $optionValue]);
|
||||
|
||||
Cache::forget($optionKey);
|
||||
|
||||
return response()->json(__(ucfirst($type) . ' template updated successfully'));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user