Files
docs/03-BACKEND/FrontOffice.BFF
masoodafar-web 996a6e885b feat: Update CURRENT-SPRINT.md with progress and task completion details
- Added last updated date and refined project status for Backend and Frontend.
- Updated completion percentages for FrontOffice UI and BFF.
- Documented completed tasks for BackOffice in the current sprint.
- Added new high-priority tasks related to commission calculation fixes.
- Resolved blockers and minor issues, providing a clearer progress summary.

docs: Create commission-calculation-fix.md for weekly commission calculation analysis

- Documented critical issues affecting commission calculations.
- Provided a detailed plan for fixing the commission calculation logic.
- Included code analysis, affected files, and step-by-step tasks for implementation.
- Outlined the expected timeline and important notes regarding changes.
2025-12-04 19:54:08 +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 - درخت شبکه

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

January 2025 - Added DiscountShop integration (4 gRPC clients, 7 handlers, Proto service)