Commit Graph

136 Commits

Author SHA1 Message Date
masoodafar-web
cf75f14003 feat: add club membership filters and activation details to network tree
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 2m13s
2025-12-14 02:56:04 +03:30
masoodafar-web
6ae1b0cd70 feat: update commission payout model with user names and timestamps
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 4m11s
2025-12-12 19:31:32 +03:30
masoodafar-web
2ae6034fbb refactor: remove admin user id from manual payment command
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 2m13s
2025-12-12 10:22:09 +03:30
masoodafar-web
094846ce8b feat: add manual membership payment processing with wallet and order management
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 7m8s
2025-12-12 10:07:14 +03:30
masoodafar-web
b19cf5e32e fix: use Gregorian week number for API and Persian for display
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 2m18s
2025-12-12 09:39:20 +03:30
masoodafar-web
b1c3fcfd66 feat: add Persian calendar support for week numbers and dates
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 6m35s
2025-12-12 09:18:31 +03:30
masoodafar-web
1f6c5a1f45 fix: update default sorting from descending to ascending Created
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 2m43s
2025-12-12 07:49:54 +03:30
masoodafar-web
99b217d5b5 fix: change weekly balance sorting from WeekNumber to Created
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 2m39s
2025-12-12 07:32:22 +03:30
masoodafar-web
8ee3fe6f7b fix: update week calculation to start from Saturday
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 2m2s
2025-12-12 07:07:28 +03:30
masoodafar-web
3c7ac68eeb feat: enhance network membership response with detailed stats and hierarchy
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 2m14s
2025-12-12 06:07:23 +03:30
masoodafar-web
f27418cff4 fix: adjust network tree depth limit and update commission mapping
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 2m5s
2025-12-12 05:42:19 +03:30
masoodafar-web
aba534e07c fix: update week calculation to use Saturday as the start of the week
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 2m12s
2025-12-12 04:37:34 +03:30
masoodafar-web
af3a29ed27 fix: adjust week calculation to FirstDay and Saturday
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 3m9s
2025-12-12 04:23:14 +03:30
masoodafar-web
db951699f8 fix: handle null pool and adjust week calculation rules
Some checks failed
Build and Deploy to Kubernetes / build-and-deploy (push) Has been cancelled
2025-12-12 04:22:16 +03:30
masoodafar-web
bb6b7c709c feat: add search text filter for user query
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 2m40s
2025-12-12 03:18:18 +03:30
masoodafar-web
12749ccb01 chore: bump version to 0.0.146
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 11m40s
2025-12-12 01:41:48 +03:30
masoodafar-web
ff1c1d5d61 feat: add IsActive field to UserClubFeatures for admin management 2025-12-12 01:40:26 +03:30
masoodafar-web
aa66ca10c8 feat: add Mapster mapping and update network tree request
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 2m11s
2025-12-08 04:10:46 +03:30
masoud
69d5ecf0d7 revert: Back to simple MigrateAsync - it's already idempotent
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 2m5s
MigrateAsync is smart enough to:
- Create DB if it doesn't exist
- Apply only pending migrations
- Skip if DB is up to date

The orphaned CMS.mdf files were cleaned from SQL Server.
2025-12-07 21:27:46 +00:00
masoud
1dbe90d020 fix: Use EnsureCreatedAsync instead of MigrateAsync for initial db setup
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 2m9s
- EnsureCreatedAsync creates db only if it doesn't exist
- Returns false if db already exists (idempotent)
- Prevents 'CMS.mdf already exists' error
- Still applies pending migrations when needed
2025-12-07 21:21:47 +00:00
masoud
7ec9c4077c fix: Improve database migration strategy - only migrate if needed
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 2m16s
- Check if database exists before creating
- Only apply pending migrations
- Skip migration if database is up to date
- Prevents 'file already exists' error on restart
2025-12-07 21:16:49 +00:00
masoud
0fe39cf9f6 feat: enable pure HTTP/2 for gRPC compatibility with nginx ingress 2025-12-07 17:53:43 +00:00
masoodafar-web
e7937fe7ee fix: Remove trailing whitespace in Seq config 2025-12-07 20:09:01 +03:30
masoodafar-web
9fb5119fc1 fix: Remove trailing whitespace in Seq config 2025-12-07 19:46:36 +03:30
masoodafar-web
adcc776230 feat: Add Kestrel HTTP/2 configuration for macOS 2025-12-06 22:24:28 +03:30
masoodafar-web
a0da7eb8e0 feat: Implement real Daya API integration with configurable mock/real service 2025-12-06 21:02:51 +03:30
masoodafar-web
e46f54ca5b Merge branch 'test' into kub-stage
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 2m16s
2025-12-06 00:17:39 +03:30
masoodafar-web
00ba911703 feat: Add archive and schedule fields to PublicMessages 2025-12-06 00:16:30 +03:30
masoud
bfcb0d880f feat: Read Seq logging config from appsettings.json + add Console logging 2025-12-05 19:32:28 +00:00
masoud
ed642947dc Fix: Suppress EF Core 9 PendingModelChangesWarning 2025-12-05 18:55:12 +00:00
masoodafar-web
217ef147dd feat: Implement manual payment system with gRPC service and related commands/queries 2025-12-05 17:26:58 +03:30
masoodafar-web
ee1fa9d064 feat: Enhance withdrawal request handling with additional fields and network level configurations 2025-12-04 19:53:30 +03:30
masoodafar-web
5e3112d71f feat: Implement withdrawal reports query and service integration 2025-12-04 17:29:10 +03:30
masoodafar-web
abda623519 chore: Bump CMSMicroservice.Protobuf version to 0.0.142 2025-12-04 05:21:25 +03:30
masoodafar-web
ba6d74fe35 feat: Implement Public Message Management Commands and Queries
- Add GetUserPackageStatusQueryValidator for user package status validation.
- Create ArchiveMessageCommand and ArchiveMessageCommandHandler for archiving public messages.
- Implement ArchiveMessageCommandValidator to validate message ID.
- Introduce PublishMessageCommand and PublishMessageCommandHandler for publishing messages.
- Add PublishMessageCommandValidator for validating publish message requests.
- Implement GetPublicMessageQuery and GetPublicMessageQueryHandler for retrieving public messages.
- Create GetPublicMessageQueryValidator for validating public message requests.
- Add ApplyDiscountToOrderCommand and ApplyDiscountToOrderCommandHandler for applying discounts to orders.
- Implement ApplyDiscountToOrderCommandValidator for validating discount application requests.
- Create UpdateOrderStatusCommand and UpdateOrderStatusCommandHandler for changing order statuses.
- Implement UpdateOrderStatusCommandValidator for validating order status updates.
- Add CalculateOrderPVQuery and CalculateOrderPVQueryHandler for calculating order PV.
- Implement CalculateOrderPVQueryValidator for validating PV calculation requests.
- Create GetOrdersByDateRangeQuery and GetOrdersByDateRangeQueryHandler for retrieving orders by date range.
- Implement GetOrdersByDateRangeQueryValidator for validating date range queries.
- Add PublicMessage entity to represent public messages in the system.
- Implement PublicMessageService for handling public message operations via gRPC.
2025-12-04 03:43:19 +03:30
masoodafar-web
84f642e900 feat: Implement bulk update for product prices and stock, and add low stock products query and toggle product status functionality 2025-12-04 02:56:03 +03:30
masoodafar-web
f0f48118e7 Add validators and services for Product Galleries and Product Tags
- Implemented Create, Delete, Get, and Update validators for Product Galleries.
- Added Create, Delete, Get, and Update validators for Product Tags.
- Created service classes for handling Discount Categories, Discount Orders, Discount Products, Discount Shopping Cart, Product Categories, Product Galleries, and Product Tags.
- Each service class integrates with CQRS for command and query handling.
- Established mapping profiles for Product Galleries.
2025-12-04 02:40:49 +03:30
masoodafar-web
40d54d08fc feat: Implement Bank Mellat and Daya payment gateway services with initiation, verification, and payout processing 2025-12-02 03:31:17 +03:30
masoodafar-web
78606cc5cc feat: Add ClearCart command and response, implement CancelOrder command with validation, and enhance DeliveryStatus and User models 2025-12-02 03:30:36 +03:30
masoodafar-web
25fc73ae28 feat: Enhance network membership and withdrawal processing with user tracking and logging 2025-12-01 20:52:18 +03:30
masoodafar-web
4aaf2247ff feat: Implement Approve and Reject Withdrawal commands with handlers 2025-12-01 16:48:07 +03:30
masoodafar-web
8d31a8c026 feat: Add GetClubStatistics and GetNetworkStatistics APIs with corresponding request and response messages 2025-12-01 16:43:53 +03:30
masoodafar-web
199e7e99d1 feat: Add monitoring alerts skeleton and enhance worker with notifications 2025-11-30 20:18:10 +03:30
masoodafar-web
0ddf64370d feat: Complete Phase 8 - Migration & Seed Data
Database Migration:
- Applied migration 20251129002222_AddNetworkClubSystemV2
- Created 11 new tables:
  * SystemConfigurations
  * SystemConfigurationHistories
  * ClubMemberships
  * ClubMembershipHistories
  * ClubFeatures
  * UserClubFeatures
  * NetworkWeeklyBalances
  * WeeklyCommissionPools
  * UserCommissionPayouts
  * CommissionPayoutHistories
  * NetworkMembershipHistories
- Updated existing tables:
  * Users: Added NetworkParentId, LegPosition
  * UserWallets: Added DiscountBalance
  * Products: Added IsClubExclusive, ClubDiscountPercent

Seed Data:
- Added 10 default SystemConfigurations:
  * Network settings (MaxDepth, AllowOrphanNodes)
  * Club settings (DefaultDuration, MinimumActivation)
  * Commission settings (PoolPercent, MinimumPayout, WithdrawalMethods)
  * System settings (MaintenanceMode, AuditLog)

Migration Status:  Applied successfully
Database Schema:  Verified
Build Status:  Success (0 errors)
2025-11-29 04:57:42 +03:30
masoodafar-web
2bb8c2a13c feat: Add gRPC API Layer - Phase 6 Integration
Added Protobuf definitions and gRPC services for all CQ layers:

Protobuf Files (4):
- configuration.proto: 2 Commands + 3 Queries (5 RPCs)
- clubmembership.proto: 3 Commands + 3 Queries (6 RPCs)
- networkmembership.proto: 3 Commands + 3 Queries (6 RPCs)
- commission.proto: 5 Commands + 4 Queries (9 RPCs)

gRPC Services (4):
- ConfigurationService: SetConfigurationValue, Deactivate, GetByKey, GetAll, GetHistory
- ClubMembershipService: Activate, Deactivate, AssignFeature, Get, GetAll, GetHistory
- NetworkMembershipService: Join, Move, Remove, GetPosition, GetTree, GetHistory
- CommissionService: Calculate+Process+Withdraw (5 commands), Get queries (4)

Features:
- HTTP transcoding enabled via google.api.http annotations
- Auto-registration via ConfigureGrpcEndpoints
- MetaData pagination support
- Request/Response DTOs for all endpoints
- Integration with MediatR CQRS handlers

Total: 4 proto files, 4 service classes, 26 RPC endpoints
Build:  Successful (0 errors)
2025-11-29 04:45:27 +03:30
masoodafar-web
487d1ceb15 feat: Add CommissionCQ - Phase 5 Application Layer
Added 5 Commands and 4 Queries for commission calculation and payout system:

Commands:
- CalculateWeeklyBalances: Recursive binary tree traversal for leg balances
- CalculateWeeklyCommissionPool: Calculate ValuePerBalance from total pool
- ProcessUserPayouts: Distribute commission to users, create payout records
- RequestWithdrawal: User requests cash/diamond withdrawal
- ProcessWithdrawal: Admin approves/rejects withdrawal

Queries:
- GetWeeklyCommissionPool: Retrieve pool details
- GetUserCommissionPayouts: List payouts with filters (status, week, user)
- GetCommissionPayoutHistory: Complete audit trail
- GetUserWeeklyBalances: Show leg balances and contributions

Total: 35 files, ~1,100 lines of code
Binary tree algorithm, state machine, withdrawal system implemented
2025-11-29 04:32:17 +03:30
masoodafar-web
db96a02f89 feat: Add NetworkMembershipCQ - Phase 4 Application Layer
- Implemented 3 Commands with handlers and validators:
  * JoinNetworkCommand: Add user to binary network tree
    - Validates parent exists and is in network
    - Validates leg position is empty
    - Records history with NetworkMembershipAction.Join
  * MoveInNetworkCommand: Move user to different position
    - Validates new parent and leg availability
    - Prevents circular dependencies (IsDescendant check)
    - Records old/new parent and leg in history
  * RemoveFromNetworkCommand: Remove user from network
    - Validates no children exist (must move/remove first)
    - Soft delete (sets NetworkParentId to null)
    - Idempotent design

- Implemented 3 Queries with handlers, validators, and DTOs:
  * GetNetworkTreeQuery: Binary tree visualization
    - Recursive tree building with MaxDepth limit (1-10)
    - Returns nested structure with Left/Right children
  * GetUserNetworkPositionQuery: User position details
    - Parent info, leg position, children counts
    - Left/Right child counts for balance view
  * GetNetworkMembershipHistoryQuery: Complete audit trail
    - Filter by UserId, pagination support
    - Shows Join/Move/Remove actions with full details

- All operations include complete history tracking
- Binary tree validation (parent-child relationships)
- Circular dependency prevention in MoveInNetwork
- 21 new files, ~850 lines of code
- Build successful with 0 errors
2025-11-29 04:19:40 +03:30
masoodafar-web
fe66d478ee feat: Add ClubMembershipCQ - Phase 3 Application Layer
- Implemented 3 Commands with handlers and validators:
  * ActivateClubMembership: Create/reactivate membership
  * DeactivateClubMembership: Deactivate existing membership
  * AssignClubFeature: Assign features to club members

- Implemented 3 Queries with handlers, validators, and DTOs:
  * GetClubMembership: Retrieve single membership by UserId
  * GetAllClubMemberships: List with filtering and pagination
  * GetClubMembershipHistory: Audit trail with full history

- All operations include history tracking via ClubMembershipHistory
- Property names aligned with Domain entity definitions
- 21 new files, ~600 lines of code
- Build successful with 0 errors
2025-11-29 04:13:27 +03:30
masoodafar-web
f6fa070067 feat: Add ConfigurationCQ - Phase 2 Application Layer
Implemented complete CQRS pattern for System Configuration management:

Commands:
- SetConfigurationValueCommand: Create or update configurations with history tracking
- DeactivateConfigurationCommand: Deactivate configurations with audit trail

Queries:
- GetConfigurationByKeyQuery: Retrieve configuration by Scope and Key
- GetAllConfigurationsQuery: List all configurations with filters and pagination
- GetConfigurationHistoryQuery: View complete audit history for any configuration

Features:
- All commands include FluentValidation validators
- History recording to SystemConfigurationHistory table
- Pagination support for list queries
- DTOs for clean data transfer
- Null-safe implementations

Updated:
- IApplicationDbContext: Added 11 new DbSets for network-club entities
- GlobalUsings: Added new entity namespaces

Build Status:  Success (0 errors, 184 warnings in legacy code)
2025-11-29 04:02:02 +03:30
masoodafar-web
04bc593184 feat: Add EF configurations and migration for network-club system
EF Core Configurations (11 files):
- SystemConfigurationConfiguration with Scope+Key composite index
- ClubMembershipConfiguration with one-to-one User relationship
- ClubFeatureConfiguration with IsActive+SortOrder index
- UserClubFeatureConfiguration with composite unique index
- NetworkWeeklyBalanceConfiguration with UserId+WeekNumber index
- WeeklyCommissionPoolConfiguration with unique WeekNumber
- UserCommissionPayoutConfiguration with multiple indexes
- ClubMembershipHistoryConfiguration for audit trail
- NetworkMembershipHistoryConfiguration for audit trail
- CommissionPayoutHistoryConfiguration for audit trail
- SystemConfigurationHistoryConfiguration for audit trail

Configuration Updates:
- UserConfiguration: Add NetworkParentId, LegPosition with indexes
- UserWalletConfiguration: Add DiscountBalance field
- ProductsConfiguration: Add IsClubExclusive, ClubDiscountPercent with index

Infrastructure Updates:
- ApplicationDbContext: Add 11 new DbSets for network-club entities
- GlobalUsings: Add Domain entity namespaces

Migration:
- AddNetworkClubSystemV2: Complete database schema for network-club system
2025-11-29 03:52:46 +03:30