Commit Graph
441 Commits
Author SHA1 Message Date
mohmdsdgandCursor 1c8ab4b725 feat(schedule): add schedule:bootstrap and minute-precise automation runs
Install per-module schedule:run cron from artisan, store sms/in_app send minutes, and match scheduled triggers at exact HH:mm Tehran time.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-24 22:13:06 +03:30
mohmdsdgandCursor 995f6984ed feat(automations): add run-now test endpoint and sends log table
Enable immediate automation test runs without waiting for the scheduled hour, expose send history for debugging, and return all SuperAdmin overlay keys on refresh instead of only enable_automation.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-24 21:46:13 +03:30
mohmdsdgandCursor 7e8979d78d fix(settings): honor per-day trading hours and refresh SuperAdmin overlay
Use trading_hours_by_day for close_price gates, prefer public SuperAdmin fetch, and add refresh endpoint/command so stale last-good cache no longer keeps switches like enable_automation off.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-24 21:22:44 +03:30
mohmdsdgandCursor 352bb9976d feat(settings): enable_automation gate; reject stale montzar quote jumps
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-24 16:15:52 +03:30
mohmdsdgandCursor b28a98938e feat(settings): add menu/show_to_user and public get_settings for client apps
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-24 15:32:35 +03:30
mohmdsdgandCursor d2fd315e8a setting pushed
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-23 22:34:18 +03:30
mohmdsdg d3997cfc8f added time working 2026-08-23 17:13:30 +03:30
mohmdsdg 657c10d1cc added automation 2026-08-23 14:16:00 +03:30
mohmdsdg 0c0b424a69 fix price 2026-08-22 18:06:35 +03:30
mohmdsdg 7bdb2c91a0 fix(settings): read SuperAdmin overlay via ConfigService everywhere 2026-08-22 15:10:54 +03:30
mohmdsdg 197b49b719 fix(pargar): read login credentials from ConfigService overlay 2026-08-22 15:04:36 +03:30
mohmdsdgandCursor 2e960c07a1 fix(settings): keep local can_edit=0 keys in get_settings when SA omits them
Customer /api/get_settings dropped price_provider because SuperAdmin
catalog did not return it. Merge SA values when present; otherwise keep
the tenant copy so the app still receives the key.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 22:02:10 +03:30
mohmdsdgandCursor b7eed369c6 fix(settings): force can_edit=1 for runtime keys in API and DB writes
editable_only now includes RUNTIME_KEYS; normalize can_edit in responses.
UpdateConfig and montzar login persist can_edit=1. SQL override moved before COMMIT.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 20:15:28 +03:30
mohmdsdgandCursor 027170a33f fix(settings): fee only from fee_service_charge_percentage; deploy:tenant
Remove service_charge_percentage alias and config/fee.php fallback (empty → 0).
Move code-managed Montzar/price runtime keys to can_edit=1 in deploy SQL.
Add settings:deploy and deploy:tenant artisan commands for server deploy.
Advanced admin settings merge runtime keys from local DB; block manual edits.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 19:55:29 +03:30
mohmdsdgandCursor 5b2ed2e5fc 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>
2026-08-19 19:02:46 +03:30
mohmdsdgandCursor 08d51ab1d1 feat(admin): add Montzar partner product list API for settings select
Expose GET /admin/montzar/products using MontzarService::listProductOptions().

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 14:02:48 +03:30
mohmdsdgandCursor a321ebdaad feat(product): add show_in_list toggle and TV price formula
- New `show_in_list` column to control product visibility in customer list
- New `tv_price_formula_enabled` + `tv_price_formula` columns for separate TV pricing
- FormulaPriceService: isTvEnabled() and calculateTvForProduct()
- listTvProducts applies TV formula overrides before returning
- filterProductData handles both new field sets

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 11:51:54 +03:30
mohmdsdgandCursor b0296c6e94 feat(server): evaluate price alerts per product and fix gold discharge rounding
Alerts now bind to a product_id and share one evaluator; displayed gold within a rounding step discharges the full wallet.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 22:23:20 +03:30
mohmdsdgandCursor 341b2da2c9 feat(server): expose settings table API and compose get_settings from SA locks plus local edits
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 18:52:29 +03:30
mohmdsdg 5337818396 fix setting bug 2026-08-18 18:32:41 +03:30
mohmdsdgandCursor 0afa01eea9 fix(server): queue tiny Pargar gold wallet documents instead of skipping them
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 17:57:22 +03:30
mohmdsdgandCursor e158831fd3 feat(server): add show_on_tv product flag and public /tv products API
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 17:17:01 +03:30
mohmdsdgandCursor da9f98b958 feat(server): overlay admin get_settings from SuperAdmin program-settings
Fetch public program-settings with 3-origin retry and no Laravel cache so
local DB settings stay in sync with the sold version.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 16:10:37 +03:30
mohmdsdgandCursor 7d405cb83b feat(server): store and apply negative special price profits
Keep signed buy/sell extras so discounts work on quotes and orders, and ignore the nested user clone in this repo.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-17 13:11:00 +03:30
mohmdsdg bd8284e4f8 added setting for user 2026-08-16 22:00:23 +03:30
mohmdsdg c3c3a60088 added table of co-woeker requests and new features 4 2026-08-16 20:58:56 +03:30
mohmdsdg 0e45a83088 added table of co-woeker requests and new features 3 2026-08-16 20:46:10 +03:30
mohmdsdg 28fd07d176 added table of co-woeker requests and new features 2 2026-08-16 20:26:23 +03:30
mohmdsdg acd1c2ea20 added table of co-woeker requests and new features 2026-08-16 20:03:18 +03:30
MahdiandCursor c09b73763a fix(admin): stop dashboard OOM by aggregating product stats in SQL
Drop unbounded TransactionsAdmin/customer dumps from dashboardMaster
and aggregate GT_products_report without loading all transactions.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 21:51:55 +03:30
MahdiandCursor 9a101292ea fix(admin): stop dashboard OOM by aggregating product stats in SQL
Drop unbounded TransactionsAdmin/customer dumps from dashboardMaster
and aggregate GT_products_report without loading all transactions.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 21:45:59 +03:30
MahdiandCursor b81a840ffd fix(super): accept SMS shared secret as Bearer for kill-switch
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 19:53:40 +03:30
MahdiandCursor 5cd81b9663 fix(super): accept SMS shared HMAC for kill-switch auth
Allow SUPERADMIN_SMS_SHARED_SECRET (+ domain) like SMS remote, with
Bearer SUPERADMIN_REMOTE_TOKEN as fallback.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 19:33:30 +03:30
MahdiandCursor e92be66e54 feat: SuperAdmin server-access kill switch gate
Add /super/settings endpoints and API middleware that returns generic 503 while keeping unlock routes whitelisted.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 15:51:17 +03:30
mohmdsdgandCursor fabce6176a Price orders at the provider's real trade rate instead of the mid quote.
montzar_live_price is the midpoint between the colleague's buy and sell rates,
so orders priced straight from it charged the customer less than we pay the
provider and the whole spread was lost on every trade, even though the app
already showed the correct side. Order base price now follows the traded side
(base + spread on buy, base - spread on sell), which also makes price_original
the real cost basis so the dashboard stops counting the provider spread as
profit. Conditional order triggers compare against the same displayed price.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 19:21:56 +03:30
mohmdsdgandCursor 279e4bc881 Enable gated multi-level referral profit and harden chat/SMS notify paths.
Honor enable_customer_level_profit for order referral payouts, and tighten support-chat webhook/SMS plus SuperAdmin SMS panel sync settings.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 16:48:53 +03:30
mohmdsdgandCursor f421fcb83f Add formula-based product pricing (P/W/MG) for Parsian-style unit prices.
Port FormulaPriceService from colleague app so admins can compute a single unit price from reference mid, weight, and wage instead of offset coefficients.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 16:47:29 +03:30
MahdiandCursor 62d83a5bfd Sync SMS panel with SuperAdmin and mirror local wallet/logs.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 22:24:35 +03:30
mohmdsdg f42ae09d14 fix support issue 2026-08-05 12:56:52 +03:30
mohmdsdg bfb8b91133 added trigger for chat sms 2026-08-04 18:59:38 +03:30
mohmdsdg 406ab4387f added rahimi dashboard 2026-08-03 19:42:23 +03:30
mohmdsdg 020219f887 added rahimi 2026-08-03 18:44:27 +03:30
mohmdsdg d360539208 fix title 2026-08-03 11:51:16 +03:30
mohmdsdg ec0fd28efc fix gift 2026-08-02 16:47:19 +03:30
mohmdsdg eaff9dead2 added gholak 2026-08-01 17:30:14 +03:30
mohmdsdg c5361a5706 fix some bugs from chart 2026-08-01 15:53:10 +03:30
mohmdsdg 2d713ce592 Merge remote-tracking branch 'origin/montify' into Abshode_Khanegi 2026-08-01 15:52:17 +03:30
mohmdsdg dcc6ffb3ca added chat 2 2026-07-30 18:06:53 +03:30
mohmdsdg abb778e090 added chat 2026-07-30 15:46:11 +03:30
mohmdsdg 381d28aae5 fix some bugs 2026-07-29 19:57:32 +03:30