feat: Implement GetMyWeeklyBalances query and handler, enhance ClubMembership service with JWT userId handling
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
using CMSMicroservice.Application.ClubFeatureCQ.Queries.GetUserClubFeatures;
|
||||
using CMSMicroservice.Application.Common.Interfaces;
|
||||
using CMSMicroservice.Domain.Common;
|
||||
using CMSMicroservice.Protobuf.Protos.Configuration;
|
||||
using Google.Protobuf.WellKnownTypes;
|
||||
using Grpc.Core;
|
||||
using MediatR;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace CMSMicroservice.WebApi.Services;
|
||||
@@ -12,10 +15,17 @@ namespace CMSMicroservice.WebApi.Services;
|
||||
public class ConfigurationService : ConfigurationContract.ConfigurationContractBase
|
||||
{
|
||||
private readonly ILogger<ConfigurationService> _logger;
|
||||
private readonly ICurrentUserService _currentUserService;
|
||||
private readonly IMediator _mediator;
|
||||
|
||||
public ConfigurationService(ILogger<ConfigurationService> logger)
|
||||
public ConfigurationService(
|
||||
ILogger<ConfigurationService> logger,
|
||||
ICurrentUserService currentUserService,
|
||||
IMediator mediator)
|
||||
{
|
||||
_logger = logger;
|
||||
_currentUserService = currentUserService;
|
||||
_mediator = mediator;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -41,6 +51,61 @@ public class ConfigurationService : ConfigurationContract.ConfigurationContractB
|
||||
return Task.FromResult(response);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// دریافت تنظیمات باشگاه مشتریان
|
||||
/// </summary>
|
||||
public override Task<GetClubConfigurationResponse> GetClubConfiguration(Empty request, ServerCallContext context)
|
||||
{
|
||||
var response = new GetClubConfigurationResponse
|
||||
{
|
||||
ActivationFee = SystemConstants.ClubActivationFee,
|
||||
MembershipGiftValue = SystemConstants.ClubMembershipGiftValue
|
||||
};
|
||||
|
||||
_logger.LogDebug("Club configuration requested: ActivationFee={ActivationFee}, GiftValue={GiftValue}",
|
||||
response.ActivationFee, response.MembershipGiftValue);
|
||||
|
||||
return Task.FromResult(response);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// دریافت ویژگیهای باشگاه مشتریان برای کاربر جاری
|
||||
/// </summary>
|
||||
public override async Task<GetClubFeaturesResponse> GetClubFeatures(Empty request, ServerCallContext context)
|
||||
{
|
||||
// دریافت UserId از JWT
|
||||
if (!long.TryParse(_currentUserService.UserId, out var userId) || userId <= 0)
|
||||
{
|
||||
_logger.LogWarning("GetClubFeatures called without valid user authentication");
|
||||
return new GetClubFeaturesResponse(); // لیست خالی برای کاربران غیر احراز هویت شده
|
||||
}
|
||||
|
||||
// فراخوانی GetUserClubFeatures از طریق MediatR (CQRS داخلی)
|
||||
var query = new GetUserClubFeaturesQuery { UserId = userId };
|
||||
var userFeatures = await _mediator.Send(query, context.CancellationToken);
|
||||
|
||||
// تبدیل به فرمت GetClubFeaturesResponse
|
||||
var response = new GetClubFeaturesResponse();
|
||||
foreach (var feature in userFeatures)
|
||||
{
|
||||
response.Features.Add(new ClubFeatureModel
|
||||
{
|
||||
Id = feature.ClubFeatureId,
|
||||
Title = feature.FeatureTitle ?? string.Empty,
|
||||
Description = feature.FeatureDescription ?? string.Empty,
|
||||
IsEnabled = feature.IsActive,
|
||||
DisplayOrder = feature.SortOrder,
|
||||
GrantedAt = Timestamp.FromDateTime(DateTime.SpecifyKind(feature.GrantedAt, DateTimeKind.Utc)),
|
||||
CreatedAt = Timestamp.FromDateTime(DateTime.SpecifyKind(feature.CreatedAt, DateTimeKind.Utc)),
|
||||
Notes = feature.Notes ?? string.Empty
|
||||
});
|
||||
}
|
||||
|
||||
_logger.LogDebug("Club features requested for user {UserId}: {Count} features returned", userId, response.Features.Count);
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// دریافت تمام تنظیمات
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user