Files
kulakpos_web/Modules/MarketingAddon/App/Http/Controllers/AcnooTemplateController.php
eko54r 05fd3230b8
All checks were successful
Build, Push and Deploy / build-and-push (push) Successful in 5m14s
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 17s
Build, Push and Deploy / deploy-staging (push) Successful in 41s
Build, Push and Deploy / deploy-production (push) Has been skipped
update marketing
2026-05-14 11:55:22 +07:00

88 lines
2.7 KiB
PHP

<?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'));
}
}