feat: Add monitoring alerts skeleton and enhance worker with notifications

This commit is contained in:
masoodafar-web
2025-11-30 20:18:10 +03:30
parent 55fa71e09b
commit 199e7e99d1
23 changed files with 5038 additions and 1168 deletions

View File

@@ -20,23 +20,37 @@ public class ActivateClubMembershipCommandHandler : IRequestHandler<ActivateClub
throw new NotFoundException(nameof(User), request.UserId);
}
// دریافت مبلغ عضویت از Configuration
var membershipPrice = await _context.SystemConfigurations
.Where(x => x.Key == "club_membership_price" && x.IsActive)
.Select(x => x.Value)
.FirstOrDefaultAsync(cancellationToken);
long initialContribution = 25_000_000; // Default: 25 million Rials
if (!string.IsNullOrEmpty(membershipPrice) && long.TryParse(membershipPrice, out var parsedPrice))
{
initialContribution = parsedPrice;
}
// بررسی عضویت فعلی
var existingMembership = await _context.ClubMemberships
.FirstOrDefaultAsync(x => x.UserId == request.UserId, cancellationToken);
ClubMembership entity;
bool isNewMembership = existingMembership == null;
var activationDate = request.ActivationDate ?? DateTimeOffset.UtcNow;
var activationDate = request.ActivationDate ?? DateTimeOffset.Now; // استفاده از Local Time
if (isNewMembership)
{
// ایجاد عضویت جدید
// توجه: InitialContribution فقط ثبت می‌شود، از کیف پول کسر نمی‌شود!
// کاربر قبلاً باید کیف پول خود را شارژ کرده باشد
entity = new ClubMembership
{
UserId = request.UserId,
IsActive = true,
ActivatedAt = activationDate.DateTime,
InitialContribution = 0,
InitialContribution = initialContribution, // مبلغ عضویت از Configuration
TotalEarned = 0
};