Commit Graph

98 Commits

Author SHA1 Message Date
masoodafar-web ed24f505d3 chore(proto): update CMSMicroservice.Protobuf to 0.0.193
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 11m30s
2026-04-24 04:20:25 +03:30
masoodafar-web 3c2a0edca8 feat(commission/dashboard): add package selector for per-package calculation
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 11m26s
- Dashboard: added PackageSelect component to filter/trigger calculation per package
- LoadPoolData: now sends PackageId in GetWeeklyCommissionPoolRequest
- TriggerCalculation: now sends PackageId in TriggerWeeklyCalculationRequest
- Pool Details: shows PackageTitle in table
2026-04-24 03:43:26 +03:30
masoodafar-web a8c52db544 fix: resolve MudBlazor v8 breaking changes (MUD0002 warnings)
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 15m20s
- MudListItem: Selected → Class with conditional CSS
- MudTextField: Dense → Margin="Margin.Dense"
- MudSwitch: remove HelperText (merged into Label)
- MudDatePicker: remove T parameter (no longer generic in v8)
2026-03-15 12:00:02 +03:30
masoodafar-web 9699833ac9 fix: exclude appsettings from service worker cache
Build and Deploy to Kubernetes / build-and-deploy (push) Has been cancelled
appsettings*.json files were cached by the service worker, causing
stale GwUrl (cms.kbs1.ir) to persist in the browser even after the
server files were updated. Now appsettings files are always fetched
fresh from the server, where the entrypoint injects the correct GW_URL.
2026-03-15 03:07:14 +03:30
masoodafar-web b3e6066c90 fix: don't send expired JWT tokens with gRPC requests
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 15m19s
AppTokenProvider now checks token expiry before returning it.
Expired tokens are removed from localStorage and not sent.

This fixes 401 errors on anonymous endpoints (login/OTP) caused by
the gRPC channel attaching an old expired Bearer token to every request.
CMS validates the token even on unauthenticated endpoints and rejects
expired ones with 401.
2026-03-15 01:39:27 +03:30
masoodafar-web 148b8e4011 fix: inject GwUrl into appsettings at container startup
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 15m1s
The blazor-environment header is stripped by the Blazor WASM service
worker cache, causing Blazor to fall back to Production environment
and load appsettings.Production.json (GwUrl=https://cms.kbs1.ir).

Fix: use sed in docker-entrypoint.sh to replace GwUrl in ALL
appsettings*.json files at container startup with the GW_URL env var.
Default GW_URL=https://cms.se.kbs1.ir for staging deployment.
2026-03-15 00:42:38 +03:30
masoodafar-web 1ef5edf939 fix: add blazor-environment header to nginx for staging config
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 14m30s
BackOffice WASM app defaulted to Production environment because
nginx didn't set the blazor-environment response header. This caused
the app to load appsettings.Production.json (GwUrl=https://cms.kbs1.ir)
instead of appsettings.Staging.json (GwUrl=https://cms.se.kbs1.ir),
resulting in 401 gRPC errors on the login page.

- Add docker-entrypoint.sh that generates nginx config with blazor-environment header
- Default BLAZOR_ENVIRONMENT=Staging (configurable via K8s env var)
- This ensures the WASM app loads the correct staging configuration
2026-03-15 00:19:04 +03:30
masoodafar-web 148a9e0493 fix: remove local nupkg source from NuGet.config (breaks Docker builds)
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 11m28s
2026-03-12 02:28:07 +03:30
masoodafar-web aa1d21a616 Revert "fix: bypass broken Nexus, use nuget.org + local proto build"
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 1m28s
This reverts commit 7147e9930f.
2026-03-12 00:06:24 +03:30
masoodafar-web 7147e9930f fix: bypass broken Nexus, use nuget.org + local proto build
- NuGet.config: nuget.org for standard packages, local nupkg for proto
- Dockerfile: COPY nupkg/ before restore
- CI: build proto from CMS source before Docker build
2026-03-12 00:03:49 +03:30
masoodafar-web 85208da1b5 feat: manual payment - replace amount with package selector
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 1m39s
- Remove manual amount input field
- Add package selector dropdown (shows name + price)
- Pre-select base package, show price in alert
- Validate package selection before submit
- Send package_id to CMS, proto NuGet 0.0.192
2026-03-11 23:44:36 +03:30
masoodafar-web 92c992249e F4: ستون پکیج در CSV، اصلاح rename UserWalletChangeLog→UserWalletHistory
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 3m8s
- WithdrawalRequests: اضافه شدن PackageName به مدل و CSV
- ManualPayments: اضافه شدن ستون پکیج به CSV
- ConfigureService: اصلاح using و DI برای UserWalletHistory
- WalletManagementPage: اصلاح تمام رفرنس‌های UserWalletChangeLog
- NuGet: v0.0.189
2026-02-27 08:58:44 +03:30
masoodafar-web 6939780cd1 feat(Q28): UI Guidance alerts across BackOffice (G8-G13)
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 2m38s
Q28: Added informational/warning alerts to 6 BO pages:
G8: PackageCRUD — price change impact warning
G9: ClubFeatures — feature matrix explanation
G10: ManualPayments — package price matching warning
G11: Commission Dashboard+Payouts — independent pool info
G13: ClubMembers — package filter guidance
2026-02-27 05:41:03 +03:30
masoodafar-web e6cf90e3fa fix: ManualPaymentDialog — remove hardcoded 56M, enable Amount field
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 2m44s
- Default amount set to 0 (admin must enter)
- Amount field now editable with Required validation
2026-02-27 02:45:11 +03:30
masoodafar-web e0203541bf feat(F2+T4.13): ChangeNetworkParent dialog + PackageFeature checkbox matrix
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 2m32s
F2: ChangeNetworkParent UI
- Add ChangeParentDialog with parent ID, leg, reason fields
- Add 'تغییر والد' button to UserNetworkInfo operations

T4.13: PackageFeature checkbox matrix
- Update NuGet to v0.0.188
- Add ClubFeature checkbox list to CreateDialog and UpdateDialog
- Load features via ConfigClient.GetClubFeaturesAsync
- Sync selected FeatureIds to proto request on save
2026-02-26 22:00:20 +03:30
masoodafar-web 8be98ae33e feat(commission): add per-package filtering to commission pages
- New PackageSelect component: reusable dropdown for package filtering
- UserPayouts: add package filter + package column with MudChip
- BalancesReport: add package filter + package column with MudChip
- Update NuGet Foursat.CMSMicroservice.Protobuf to v0.0.187
2026-02-26 21:08:16 +03:30
masoodafar-web c96377a674 Phase 8d: NuGet bump 0.0.185 → 0.0.186 (proto cleanup) 2026-02-26 18:00:47 +03:30
masoodafar-web 89f5241680 Phase 8b: Expand Package CRUD with all package-based fields
- CreateDialog: Add 12 new fields (SortOrder, ActivationFee, DiscountMultiplier,
  MagicWalletMultiplier, MagicWalletMaxDeposit, MagicWalletMaxCredit,
  MaxBalancesPerLeg, MaxNetworkLevel, IsActive, IsBasePackage,
  SupportsDirectPurchase, SupportsDayaPurchase)
- UpdateDialog: Same 12 new fields added
- PackageMainPage grid: Add Price, SortOrder, IsActive, IsBasePackage columns
- Dialog size: Small → Medium for expanded forms
- CreateNew defaults: IsActive=true, DiscountMultiplier=2.0, etc.
- Fix HasPurchasedGoldenPackage → HasPurchasedPackage in UserNetworkInfo
- NuGet: 0.0.184 → 0.0.185 + local feed source
2026-02-26 17:44:53 +03:30
masoodafar-web f1b0085181 Cleanup: Rename 'پکیج طلایی' → 'خرید پکیج' in UserNetworkInfo 2026-02-26 02:03:26 +03:30
masoodafar-web 172101d0ab fix: rename wallet labels — اصلی، اعتباری، پاداش تیمی
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 9m58s
- شبکه → پاداش تیمی (WalletManagement, ManualPayments)
- تخفیف → اعتباری (ManualPayments, OrderDetails, DiscountOrders)
- طلایی → پاداش تیمی (WithdrawalReports)

Files: WalletManagementPage, ManualPayments, ManualPaymentDialog,
       WithdrawalReports, DiscountOrdersMainPage, OrderDetailsDialog
2026-02-23 23:24:41 +03:30
masoodafar-web fe72774d08 feat: ActivateClubDialog — dropdown پکیج + حذف مدت زمان + ForceActivation
Build and Deploy to Kubernetes / build-and-deploy (push) Has been cancelled
- جایگزینی MudNumericField پکیج با MudSelect dropdown (لود از سرور)
- حذف فیلد مدت زمان (DurationMonths) — عضویت باشگاه زمانی نیست
- ارسال ForceActivation=true در request (bypass order validation)
- اضافه کردن PackageContract client injection
- Proto NuGet بروزرسانی به 0.0.184
2026-02-22 23:51:55 +03:30
masoodafar-web 0386a2b1aa feat: club UserAutoComplete + member filter + wallet user name display
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 7m59s
- ActivateClubDialog: replaced numeric UserId input with UserAutoComplete
- ClubMembers: added UserAutoComplete filter in toolbar, wired to proto user_id
- WalletManagementPage: display user name + ID instead of just UserId
- Updated proto NuGet to 0.0.183 (user_name field)
2026-02-22 22:03:27 +03:30
masoodafar-web 8f29fbaf71 fix: replace ریال with تومان across all 30 admin UI files
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 7m55s
2026-02-22 21:30:47 +03:30
masoodafar-web c9affe62bd feat: smart product autocomplete for inventory dialogs
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 8m14s
- DiscountProductsAutoComplete: new autocomplete component for discount
  products with search/debounce (mirrors ProductsAutoComplete pattern)
- AddStockDialog: replace manual product ID input with smart autocomplete
  - When 'regular product' selected → shows ProductsAutoComplete
  - When 'discount product' selected → shows DiscountProductsAutoComplete
  - Admin never has to type product IDs manually
  - Product type selector controls which autocomplete is shown
- Validates product selection before submit
2026-02-18 00:43:12 +03:30
masoodafar-web 6147499f9c feat: replace raw JSON editor with Shopify-style typed settings editors
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 8m7s
- Create PageSettingsModels.cs: typed DTOs for landing, about, contact, licenses
- LandingSettingsEditor: accordion sections for hero buttons, trust badges, steps,
  features, stats, testimonials, FAQs, CTA — all with add/remove list management
- AboutSettingsEditor: vision/mission text + icon fields + section titles
- ContactSettingsEditor: address, phone, email, working hours + social media links
- LicensesSettingsEditor: page description + display style selector
- PageSettingsEditDialog: auto-switch editor by PageKey, JSON↔Model serialize/deserialize
- Fallback to raw JSON textarea for unknown page keys
2026-02-17 23:50:34 +03:30
masoodafar-web 3409133757 feat: Add SitePageSettings management UI
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 8m21s
- ISitePageSettingsService + SitePageSettingsService (gRPC client)
- PageSettingsManagementPage: 4 cards for fixed pages
- PageSettingsEditDialog: edit title, hero, meta, settingsJson
- PageImagesDialog: CRUD for page images (licenses, team, values)
- PageImageEditDialog: add/edit single image with upload
- Proto NuGet updated to 0.0.180
- NavMenu: added link to page settings
2026-02-17 22:34:59 +03:30
masoodafar-web af51c02d3d chore: clean up commented-out GwUrl lines in appsettings
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 7m16s
2026-02-17 02:56:07 +03:30
masoodafar-web e7bed65149 fix: production deployment — appsettings.Production.json + fix K8S_SERVER + set image
Build and Deploy to Kubernetes / build-and-deploy (push) Has been cancelled
- appsettings.Production.json: GwUrl=cms.kbs1.ir
- prod-deploy.yml: K8S_SERVER 194.5.195.53 → 45.149.79.127
- prod-deploy.yml: kubectl set image instead of rollout restart
2026-02-17 01:58:36 +03:30
masoodafar-web 6ec221cb41 fix: use local registry for nginx:alpine image in Dockerfile
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 7m16s
- Changed FROM nginx:alpine to 194.5.195.53:32082/nginx:alpine
- Fixes TLS handshake timeout when pulling from Docker Hub
2026-02-16 02:02:47 +03:30
masoodafar-web 4fd039b250 fix: switch to NuGet package reference for CMS Protobuf (Docker build fix)
Build and Deploy to Kubernetes / build-and-deploy (push) Has been cancelled
- Changed from ProjectReference to PackageReference (v0.0.178)
- Removed COPY libs/ from Dockerfile (no longer needed)
- Docker build context (src/) cannot resolve ../../../CMS path
- NuGet package restored from Nexus registry
2026-02-16 01:42:25 +03:30
masoodafar-web 49017027d0 feat: full BackOffice updates - discount shop, blog, content, UI improvements
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 2m20s
- Blog management pages (posts, categories)
- Content management pages (site pages, sections)
- Contract management pages
- Discount shop improvements (order details, product form, categories)
- Wallet management pages
- Commission withdrawal details/reject dialogs
- Orders hub, sales reports
- System hub, global search, breadcrumb
- Club features page, club hub
- UI/UX improvements across all pages
- AppBreadcrumb, GlobalSearch components
- NavMenu updates and styling
2026-02-16 00:56:39 +03:30
masoodafar-web 8d9942ddc2 Refactor: Update Protobuf references to CMSMicroservice across User, UserAddress, UserOrder, UserRole, and related services
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 3m9s
- Changed Protobuf imports from BackOffice.BFF to CMSMicroservice for User, UserAddress, UserOrder, UserRole components and services.
- Updated appsettings for direct connection to CMS, removing BFF references.
- Adjusted logic in services to accommodate new Protobuf structure and fields.
- Moved documentation to totalDoc directory.
2026-02-10 22:05:13 +03:30
masoodafar-web 66884d8216 Revert: use only Nexus (no fallback)
Build and Deploy / build (push) Failing after 39s
2026-01-29 03:44:39 +03:30
masoodafar-web ad47f1f495 Add nuget.org as fallback source
Build and Deploy / build (push) Has been cancelled
2026-01-29 03:41:17 +03:30
masoodafar-web 1a5a71a27f Remove afrino NuGet sources - use only Nexus
Build and Deploy / build (push) Failing after 32s
2026-01-29 03:14:39 +03:30
masoodafar-web 8a285e485b chore: تنظیم Nexus برای NuGet و Docker offline
Build and Deploy / build (push) Failing after 49s
- Dockerfile: استفاده از Nexus Docker (194.5.195.53:32082)
- NuGet.config: استفاده از Nexus NuGet با HTTP و allowInsecureConnections
- workflow: حذف kubectl dependency، اضافه کردن 32082 به insecure-registries
2026-01-29 02:56:20 +03:30
masoodafar-web 21ee004869 feat: enhance category selection in ProductFormDialog with multi-selection text and improved error handling
Build and Deploy / build (push) Failing after 16s
2026-01-05 21:51:39 +03:30
masoodafar-web 31226399ae feat: replace CategoryMultiSelectCombo with MudSelect for category selection; implement category loading and flattening logic
Build and Deploy / build (push) Failing after 16s
2026-01-05 02:01:05 +03:30
masoodafar-web 53f56636b3 feat: add image and thumbnail upload support in DiscountProduct forms and services
Build and Deploy / build (push) Failing after 17s
2026-01-05 01:23:49 +03:30
masoodafar-web a2c496c16f refactor: remove stock management fields from BulkEdit and related logic; adjust layout in ProductFormDialog and CreateDialog
Build and Deploy / build (push) Failing after 15s
2026-01-04 23:51:42 +03:30
masoodafar-web 910a1ebfcc feat: update external registry URLs to new domain
Build and Deploy / build (push) Failing after 23s
2026-01-03 17:30:30 +03:30
masoodafar-web c062bd358c Refactor code structure for improved readability and maintainability
Build and Deploy / build (push) Failing after 16s
2026-01-03 15:38:50 +03:30
masoodafar-web 2d833605b4 feat: Implement Inventory Management Pages
Build and Deploy / build (push) Successful in 2m18s
- Added InventoryMainPage for managing inventory items with filtering options.
- Created LowStockPage to display low stock items with filtering capabilities.
- Developed MovementsPage to track inventory movements with detailed filtering.
- Introduced WarehousesPage for managing warehouses, including creation and viewing inventory.
- Enhanced backend integration with InventoryBFFContract for data retrieval.
- Implemented user-friendly UI components using MudBlazor for better user experience.
- Added necessary dialog components for adding stock, adjusting inventory, and viewing movements.
2026-01-03 08:18:55 +03:30
masoodafar-web 81ee23e313 feat(BalancesReport): enhance balance display with new member counts and totals
Build and Deploy / build (push) Successful in 2m9s
2025-12-28 21:20:43 +03:30
masoodafar-web 1a65babb9d feat(UserPayouts): update status options and colors for user payouts
Build and Deploy / build (push) Successful in 2m8s
2025-12-27 07:34:38 +03:30
masoodafar-web bbe783dc83 feat(UserPayouts): implement withdrawal approval and rejection functionality
Build and Deploy / build (push) Successful in 2m6s
2025-12-27 06:22:11 +03:30
masoodafar-web 6f5bfba0a5 feat(AppVersionEditDialog): replace ReleaseNotes text field with HTML editor for enhanced formatting
Build and Deploy / build (push) Successful in 2m9s
2025-12-27 05:08:14 +03:30
masoodafar-web 98a4ba9e99 feat(config): Add staging configuration for backend URL and authentication
Build and Deploy / build (push) Has been cancelled
2025-12-27 05:07:50 +03:30
masoodafar-web ece29956b2 feat(app-versions): Add functionality to create new app versions and update UI components
Build and Deploy / build (push) Successful in 2m26s
2025-12-27 02:45:47 +03:30
masoodafar-web d69b838a72 fix(dashboard): Disable DiscountShopWidget temporarily
Build and Deploy to Production / build-and-deploy (push) Successful in 3m51s
- Comment out DiscountShopWidget that requires unregistered IDiscountOrderService
- Add placeholder card with 'coming soon' message
- Fix null reference warnings with null! attributes
2025-12-26 06:19:57 +03:30