Files
docs/03-BACKEND/FrontOffice.BFF
masoodafar-web 002e99f6bf Implement Persian Date Conversion and Enhance User Network Information Service
- Added PersianDateTimeService for converting Gregorian dates to Persian format in the BackOffice frontend.
- Updated multiple frontend pages (Dashboard, UserPayouts, WorkerControl, UserNetworkInfo) to utilize the new Persian date service.
- Enhanced GetUserNetworkPositionDto with 28+ new fields for comprehensive user network data.
- Updated GetUserNetworkPositionQueryHandler to include new methods for calculating network statistics.
- Modified Protobuf messages to accommodate the new fields, increasing from 14 to 42.
- Refined week number calculation algorithm to ensure consistency across C# and SQL implementations.
- Created new CSV and Excel files for binary plan calculations.
- Ensured all changes are tested and validated for accuracy and performance.
2025-12-20 06:15:59 +03:30
..

FrontOffice.BFF

Overview

FrontOffice.BFF (Backend-For-Frontend) is a gRPC-based API gateway that serves the FrontOffice web application. It communicates with the CMS microservice via gRPC and exposes APIs to the frontend.

Architecture

Frontend (FrontOffice) → FrontOffice.BFF → CMS Microservice

Project Structure

FrontOffice.BFF/
├── src/
│   ├── FrontOffice.BFF.Application/     # CQRS handlers, DTOs, interfaces
│   ├── FrontOffice.BFF.Domain/          # Domain entities
│   ├── FrontOffice.BFF.Infrastructure/  # gRPC clients, DI config
│   ├── FrontOffice.BFF.WebApi/          # gRPC services, mappings
│   └── Protobufs/                       # Proto definitions for frontend
│       ├── FrontOffice.BFF.Category.Protobuf/
│       ├── FrontOffice.BFF.DiscountShop.Protobuf/  # NEW
│       ├── FrontOffice.BFF.Package.Protobuf/
│       ├── FrontOffice.BFF.Products.Protobuf/
│       ├── FrontOffice.BFF.ShopingCart.Protobuf/
│       ├── FrontOffice.BFF.Transaction.Protobuf/
│       ├── FrontOffice.BFF.User.Protobuf/
│       ├── FrontOffice.BFF.UserAddress.Protobuf/
│       ├── FrontOffice.BFF.UserOrder.Protobuf/
│       └── FrontOffice.BFF.UserWallet.Protobuf/

Feature Modules

DiscountShopCQ (New - Jan 2025)

فروشگاه تخفیفی برای اعضای باشگاه مشتریان

Queries:

  • GetDiscountProducts - لیست محصولات تخفیفی
  • GetDiscountCategories - دسته‌بندی‌های فروشگاه
  • GetMyDiscountCart - سبد خرید تخفیفی کاربر
  • GetMyDiscountOrders - سفارشات تخفیفی کاربر

Commands:

  • AddToDiscountCart - افزودن به سبد خرید
  • RemoveFromDiscountCart - حذف از سبد خرید
  • PlaceDiscountOrder - ثبت سفارش

CommissionCQ

سیستم کمیسیون شبکه‌ای

Queries:

  • GetMyCommissionPayouts - لیست پرداخت‌های کمیسیون
  • GetMyWeeklyBalances - بالانس‌های هفتگی

NetworkMembershipCQ

عضویت شبکه‌ای و درخت باینری

Queries:

  • GetMyNetworkPosition - موقعیت کاربر در شبکه
  • GetMyNetworkStatistics - آمار شبکه
  • GetMyNetworkTree - درخت شبکه
  • GetSubordinateTree - درخت زیرمجموعه (NEW - ۲۸ آذر)

ClubMembershipCQ

عضویت باشگاه مشتریان

Queries:

  • GetMyClubMembership - وضعیت عضویت

Commands:

  • ActivateMyClubMembership - فعال‌سازی عضویت

UserWalletCQ

کیف پول کاربر

Queries:

  • GetUserWallet - موجودی کیف پول
  • GetAllUserWalletChangeLog - تاریخچه تراکنش‌ها

Commands:

  • WithdrawBalance - درخواست برداشت
  • TransferUserWalletBallance - انتقال موجودی (TODO: needs CMS proto)
  • DeleteUser - حذف کاربر

gRPC Clients (CMS Connection)

Defined in IApplicationContractContext.cs:

  • ProductContract - محصولات
  • CategoryContract - دسته‌بندی‌ها
  • ShopingCartContract - سبد خرید
  • TransactionContract - تراکنش‌ها
  • UserWalletContract - کیف پول
  • UserContract - کاربران
  • UserOrderContract - سفارشات
  • NetworkMembershipContract - عضویت شبکه
  • CommissionContract - کمیسیون
  • ClubMembershipContract - باشگاه مشتریان
  • DiscountProductContract - محصولات تخفیفی (NEW)
  • DiscountCategoryContract - دسته‌بندی تخفیفی (NEW)
  • DiscountShoppingCartContract - سبد خرید تخفیفی (NEW)
  • DiscountOrderContract - سفارش تخفیفی (NEW)

Build & Run

cd FrontOffice.BFF/src
dotnet build
dotnet run --project FrontOffice.BFF.WebApi

Last Updated

  • 28 آذر ۱۴۰۴: Added GetSubordinateTree handler for viewing subordinate network trees
  • January 2025: Added DiscountShop integration (4 gRPC clients, 7 handlers, Proto service)