feat: add IsActive field to UserClubFeatures for admin management

This commit is contained in:
masoodafar-web
2025-12-12 01:40:26 +03:30
parent aa66ca10c8
commit ff1c1d5d61
68 changed files with 11456 additions and 198 deletions
@@ -0,0 +1,47 @@
using CMSMicroservice.Application.ClubFeatureCQ.Commands.ToggleUserClubFeature;
using CMSMicroservice.Application.ClubFeatureCQ.Queries.GetUserClubFeatures;
using CMSMicroservice.Protobuf.Protos.ClubMembership;
using Google.Protobuf.WellKnownTypes;
using System;
using System.Collections.Generic;
namespace CMSMicroservice.WebApi.Common.Mappings;
public class ClubFeatureProfile : IRegister
{
void IRegister.Register(TypeAdapterConfig config)
{
// GetUserClubFeaturesRequest → GetUserClubFeaturesQuery
config.NewConfig<GetUserClubFeaturesRequest, GetUserClubFeaturesQuery>()
.Map(dest => dest.UserId, src => src.UserId);
// UserClubFeatureDto → UserClubFeatureModel
config.NewConfig<UserClubFeatureDto, UserClubFeatureModel>()
.Map(dest => dest.Id, src => src.Id)
.Map(dest => dest.UserId, src => src.UserId)
.Map(dest => dest.ClubMembershipId, src => src.ClubMembershipId)
.Map(dest => dest.ClubFeatureId, src => src.ClubFeatureId)
.Map(dest => dest.FeatureTitle, src => src.FeatureTitle)
.Map(dest => dest.FeatureDescription, src => src.FeatureDescription ?? "")
.Map(dest => dest.IsActive, src => src.IsActive)
.Map(dest => dest.GrantedAt, src => Timestamp.FromDateTime(DateTime.SpecifyKind(src.GrantedAt, DateTimeKind.Utc)))
.Map(dest => dest.Notes, src => src.Notes ?? "");
// List<UserClubFeatureDto> → GetUserClubFeaturesResponse
config.NewConfig<List<UserClubFeatureDto>, GetUserClubFeaturesResponse>()
.Map(dest => dest.Features, src => src.Adapt<List<UserClubFeatureModel>>());
// ToggleUserClubFeatureRequest → ToggleUserClubFeatureCommand
config.NewConfig<ToggleUserClubFeatureRequest, ToggleUserClubFeatureCommand>()
.Map(dest => dest.UserId, src => src.UserId)
.Map(dest => dest.ClubFeatureId, src => src.ClubFeatureId)
.Map(dest => dest.IsActive, src => src.IsActive);
// ToggleUserClubFeatureResponse (App) → ToggleUserClubFeatureResponse (Proto)
config.NewConfig<Application.ClubFeatureCQ.Commands.ToggleUserClubFeature.ToggleUserClubFeatureResponse, Protobuf.Protos.ClubMembership.ToggleUserClubFeatureResponse>()
.Map(dest => dest.Success, src => src.Success)
.Map(dest => dest.Message, src => src.Message)
.Map(dest => dest.UserClubFeatureId, src => src.UserClubFeatureId.HasValue ? (long?)src.UserClubFeatureId.Value : null)
.Map(dest => dest.IsActive, src => src.IsActive.HasValue ? (bool?)src.IsActive.Value : null);
}
}
@@ -0,0 +1,38 @@
using CMSMicroservice.Application.CommissionCQ.Queries.GetAvailableWeeks;
using CMSMicroservice.Protobuf.Protos.Commission;
using Google.Protobuf.WellKnownTypes;
using Mapster;
namespace CMSMicroservice.WebApi.Common.Mappings;
public class CommissionProfile : IRegister
{
public void Register(TypeAdapterConfig config)
{
// GetAvailableWeeks Request Mapping
config.NewConfig<GetAvailableWeeksRequest, GetAvailableWeeksQuery>()
.Map(dest => dest.FutureWeeksCount, src => src.FutureWeeksCount > 0 ? src.FutureWeeksCount : 4)
.Map(dest => dest.PastWeeksCount, src => src.PastWeeksCount > 0 ? src.PastWeeksCount : 12);
// GetAvailableWeeks Response Mapping
config.NewConfig<GetAvailableWeeksResponseDto, GetAvailableWeeksResponse>()
.Map(dest => dest.CurrentWeek, src => src.CurrentWeek)
.Map(dest => dest.CalculatedWeeks, src => src.CalculatedWeeks)
.Map(dest => dest.PendingWeeks, src => src.PendingWeeks)
.Map(dest => dest.FutureWeeks, src => src.FutureWeeks);
// WeekInfo Mapping
config.NewConfig<WeekInfoDto, WeekInfo>()
.Map(dest => dest.WeekNumber, src => src.WeekNumber)
.Map(dest => dest.StartDate, src => Timestamp.FromDateTime(src.StartDate.ToUniversalTime()))
.Map(dest => dest.EndDate, src => Timestamp.FromDateTime(src.EndDate.ToUniversalTime()))
.Map(dest => dest.IsCalculated, src => src.IsCalculated)
.Map(dest => dest.CalculatedAt, src => src.CalculatedAt.HasValue
? Timestamp.FromDateTime(src.CalculatedAt.Value.ToUniversalTime())
: null)
.Map(dest => dest.LastExecutionStatus, src => src.LastExecutionStatus ?? string.Empty)
.Map(dest => dest.TotalPoolAmount, src => src.TotalPoolAmount ?? 0)
.Map(dest => dest.EligibleUsersCount, src => src.EligibleUsersCount ?? 0)
.Map(dest => dest.DisplayText, src => src.DisplayText);
}
}