88 lines
2.7 KiB
PHP
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'));
|
||
|
|
}
|
||
|
|
}
|