fix(price-trigger): restrict notifications to SMS only

Remove email/in-app paths and enforce sms action on create/update so
price alerts match the product requirement for SMS-only delivery.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-19 19:02:46 +03:30
co-authored by Cursor
parent 832a7683fb
commit 5b2ed2e5fc
3 changed files with 10 additions and 8 deletions
@@ -31,6 +31,7 @@ class PriceTriggerController extends Controller
$trigger = PriceTrigger::create([ $trigger = PriceTrigger::create([
...$data, ...$data,
'action' => 'sms',
'is_active' => $data['is_active'] ?? true, 'is_active' => $data['is_active'] ?? true,
]); ]);
@@ -46,6 +47,7 @@ class PriceTriggerController extends Controller
{ {
$trigger = PriceTrigger::findOrFail($id); $trigger = PriceTrigger::findOrFail($id);
$data = $this->validatedPayload($request, true); $data = $this->validatedPayload($request, true);
$data['action'] = 'sms';
$trigger->update($data); $trigger->update($data);
@@ -82,7 +84,7 @@ class PriceTriggerController extends Controller
'product_id' => ($partial ? 'sometimes|' : '') . 'required|integer|exists:products,id', 'product_id' => ($partial ? 'sometimes|' : '') . 'required|integer|exists:products,id',
'target_price' => ($partial ? 'sometimes|' : '') . 'required|numeric|min:1', 'target_price' => ($partial ? 'sometimes|' : '') . 'required|numeric|min:1',
'price_condition' => ($partial ? 'sometimes|' : '') . 'required|in:>,<', 'price_condition' => ($partial ? 'sometimes|' : '') . 'required|in:>,<',
'action' => ($partial ? 'sometimes|' : '') . 'required|in:sms,email', 'action' => ($partial ? 'sometimes|' : '') . 'required|in:sms',
'is_active' => 'sometimes|boolean', 'is_active' => 'sometimes|boolean',
]; ];
@@ -37,6 +37,7 @@ class PriceTriggerController extends SuperController
public function store(Request $request) public function store(Request $request)
{ {
$this->sanitizeProductId($request, true); $this->sanitizeProductId($request, true);
$request->merge(['action' => 'sms']);
return parent::store($request); return parent::store($request);
} }
@@ -44,6 +45,7 @@ class PriceTriggerController extends SuperController
public function update(Request $request, $id) public function update(Request $request, $id)
{ {
$this->sanitizeProductId($request, false); $this->sanitizeProductId($request, false);
$request->merge(['action' => 'sms']);
return parent::update($request, $id); return parent::update($request, $id);
} }
+5 -7
View File
@@ -3,13 +3,11 @@
namespace App\Services; namespace App\Services;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Mail\YourMailableClass;
use App\Models\Customer; use App\Models\Customer;
use App\Models\Price; use App\Models\Price;
use App\Models\PriceTrigger; use App\Models\PriceTrigger;
use App\Models\Product; use App\Models\Product;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Mail;
class PriceTriggerService class PriceTriggerService
{ {
@@ -167,14 +165,14 @@ class PriceTriggerService
$shopName = (string) Controller::Config('name_fa'); $shopName = (string) Controller::Config('name_fa');
$message = 'قیمت ' . $title . ' به ' . number_format((int) $current) . " رسید\n" . $shopName; $message = 'قیمت ' . $title . ' به ' . number_format((int) $current) . " رسید\n" . $shopName;
if ($trigger->action === 'email' && ! empty($customer->email)) { if (! Controller::isSmsNotifEnabled('sms_notif_price_trigger')) {
Mail::to($customer->email)->send(new YourMailableClass($message, '', '', '', ''));
return; return;
} }
if ($trigger->action === 'sms' && Controller::isSmsNotifEnabled('sms_notif_price_trigger')) { if (trim((string) ($customer->mobile ?? '')) === '') {
Controller::Send($customer->mobile, $message); return;
} }
Controller::Send($customer->mobile, $message);
} }
} }