Files
FrontOffice.BFF/src/FrontOffice.BFF.WebApi/Common/Mappings/ClubMembershipProfile.cs
T

67 lines
3.9 KiB
C#

using FrontOffice.BFF.Application.ClubMembershipCQ.Queries.GetMyClubMembership;
using FrontOffice.BFF.Application.ClubMembershipCQ.Commands.ActivateMyClubMembership;
using FrontOffice.BFF.Application.ClubMembershipCQ.Commands.RequestClubContractOtp;
using FrontOffice.BFF.Application.ClubMembershipCQ.Commands.AcceptClubMembershipContract;
using Google.Protobuf.WellKnownTypes;
using ProtoDto = FrontOffice.BFF.ClubMembership.Protobuf.Protos.ClubMembership;
namespace FrontOffice.BFF.WebApi.Common.Mappings;
public class ClubMembershipProfile : IRegister
{
void IRegister.Register(TypeAdapterConfig config)
{
// Request -> Command mappings
config.NewConfig<ProtoDto.ActivateMyClubMembershipRequest, ActivateMyClubMembershipCommand>()
.Map(dest => dest.PackageId, src => src.PackageId)
.Map(dest => dest.ActivationCode, src => src.ActivationCode)
.Map(dest => dest.DurationMonths, src => src.DurationMonths > 0 ? src.DurationMonths : 12);
// Response mappings
config.NewConfig<GetMyClubMembershipResponseDto, ProtoDto.GetMyClubMembershipResponse>()
.Map(dest => dest.UserId, src => src.UserId)
.Map(dest => dest.PackageId, src => src.PackageId)
.Map(dest => dest.PackageName, src => src.PackageName)
.Map(dest => dest.ActivationCode, src => src.ActivationCode)
.Map(dest => dest.IsActive, src => src.IsActive)
.Map(dest => dest.ActivationDate, src => src.ActivationDate.HasValue
? Timestamp.FromDateTime(DateTime.SpecifyKind(src.ActivationDate.Value, DateTimeKind.Utc))
: null)
.Map(dest => dest.ExpirationDate, src => src.ExpirationDate.HasValue
? Timestamp.FromDateTime(DateTime.SpecifyKind(src.ExpirationDate.Value, DateTimeKind.Utc))
: null)
.Map(dest => dest.Status, src => src.Status)
.Map(dest => dest.DaysRemaining, src => src.DaysRemaining)
.Map(dest => dest.IsTrialPeriod, src => src.IsTrialPeriod);
config.NewConfig<ActivateMyClubMembershipResponseDto, ProtoDto.ActivateMyClubMembershipResponse>()
.Map(dest => dest.Success, src => src.Success)
.Map(dest => dest.Message, src => src.Message)
.Map(dest => dest.ActivationDate, src => Timestamp.FromDateTime(DateTime.SpecifyKind(src.ActivationDate, DateTimeKind.Utc)))
.Map(dest => dest.ExpirationDate, src => Timestamp.FromDateTime(DateTime.SpecifyKind(src.ExpirationDate, DateTimeKind.Utc)))
.Map(dest => dest.AmountPaid, src => src.AmountPaid);
// RequestClubContractOtp mappings
config.NewConfig<ProtoDto.RequestClubContractOtpRequest, RequestClubContractOtpCommand>()
.Map(dest => dest.SignGuid, src => src.SignGuid);
config.NewConfig<RequestClubContractOtpResponseDto, ProtoDto.RequestClubContractOtpResponse>()
.Map(dest => dest.Success, src => src.Success)
.Map(dest => dest.Message, src => src.Message)
.Map(dest => dest.RemainingAttempts, src => src.RemainingAttempts)
.Map(dest => dest.RemainingSeconds, src => src.RemainingSeconds);
// AcceptClubMembershipContract mappings
config.NewConfig<ProtoDto.AcceptClubMembershipContractRequest, AcceptClubMembershipContractCommand>()
.Map(dest => dest.OtpCode, src => src.OtpCode)
.Map(dest => dest.SignGuid, src => src.SignGuid)
.Map(dest => dest.ContractHtml, src => src.ContractHtml);
config.NewConfig<AcceptClubMembershipContractResponseDto, ProtoDto.AcceptClubMembershipContractResponse>()
.Map(dest => dest.Success, src => src.Success)
.Map(dest => dest.Message, src => src.Message)
.Map(dest => dest.ContractId, src => src.ContractId)
.Map(dest => dest.Token, src => src.Token ?? "");
}
}