Files
BackOffice.BFF/src/BackOffice.BFF.WebApi/Common/Mappings/CommissionProfile.cs
T
masoodafar-web 4cffed9ce8
Build and Deploy / build (push) Successful in 2m4s
fix: update payout mapping and protobuf version
2025-12-14 02:06:17 +03:30

221 lines
11 KiB
C#

using BackOffice.BFF.Application.CommissionCQ.Queries.GetWeeklyPool;
using BackOffice.BFF.Application.CommissionCQ.Queries.GetAllWeeklyPools;
using BackOffice.BFF.Application.CommissionCQ.Queries.GetUserWeeklyBalances;
using BackOffice.BFF.Application.CommissionCQ.Queries.GetAvailableWeeks;
using BackOffice.BFF.Application.CommissionCQ.Queries.GetUserPayouts;
using Foursat.BackOffice.BFF.Commission.Protos;
using System.Collections.Generic;
namespace BackOffice.BFF.WebApi.Common.Mappings;
public class CommissionProfile : IRegister
{
void IRegister.Register(TypeAdapterConfig config)
{
// GetUserCommissionPayoutsRequest -> GetUserPayoutsQuery
config.NewConfig<GetUserCommissionPayoutsRequest, GetUserPayoutsQuery>()
.MapWith(src => new GetUserPayoutsQuery
{
PaginationState = src.PaginationState != null
? new BackOffice.BFF.Application.Common.Models.PaginationState
{
PageNumber = src.PaginationState.PageNumber,
PageSize = src.PaginationState.PageSize
}
: null,
Filter = src.Filter != null
? new BackOffice.BFF.Application.CommissionCQ.Queries.GetUserPayouts.GetUserPayoutsFilter
{
UserId = src.Filter.UserId,
WeekNumber = src.Filter.WeekNumber,
Status = src.Filter.Status
}
: null
});
// GetWeeklyPoolResponseDto -> GetWeeklyCommissionPoolResponse
config.NewConfig<GetWeeklyPoolResponseDto, GetWeeklyCommissionPoolResponse>()
.MapWith(src => new GetWeeklyCommissionPoolResponse
{
Id = src.Id,
WeekNumber = src.WeekNumber ?? string.Empty,
TotalBalances = (int)src.TotalBalances,
TotalPoolAmount = src.TotalPoolAmount,
IsCalculated = src.IsCalculated,
CalculatedAt = src.CalculatedAt.HasValue
? Timestamp.FromDateTime(DateTime.SpecifyKind(src.CalculatedAt.Value, DateTimeKind.Utc))
: null,
Created = Timestamp.FromDateTime(DateTime.SpecifyKind(src.Created.DateTime, DateTimeKind.Utc)),
ValuePerBalance = (long)src.ValuePerBalance
});
// GetUserPayoutsResponseDto -> GetUserCommissionPayoutsResponse
// config.NewConfig<GetUserPayoutsResponseDto, GetUserCommissionPayoutsResponse>()
// .MapWith(src => new GetUserCommissionPayoutsResponse
// {
// MetaData = new BackOffice.BFF.Protobuf.Common.MetaData
// {
// CurrentPage = src.MetaData.CurrentPage,
// PageSize = src.MetaData.PageSize,
// TotalCount = src.MetaData.TotalCount,
// TotalPage = src.MetaData.TotalPage
// },
// Models = { (src.Models ?? new List<GetUserPayoutsResponseModel>()).Select(m => new UserCommissionPayoutModel
// {
// Id = m.Id,
// UserId = m.UserId,
// UserName = m.UserName,
// WeekNumber = m.WeekNumber,
// BalancesEarned = m.BalancesEarned,
// ValuePerBalance = m.ValuePerBalance,
// TotalAmount = m.TotalAmount,
// Status = m.Status,
// WithdrawalMethod = m.WithdrawalMethod,
// IbanNumber = m.IbanNumber,
// Created = Timestamp.FromDateTime(DateTime.SpecifyKind(m.Created, DateTimeKind.Utc)),
// LastModified = m.LastModified.HasValue
// ? Timestamp.FromDateTime(DateTime.SpecifyKind(m.LastModified.Value, DateTimeKind.Utc))
// : null
// }) }
// });
// GetAllWeeklyPoolsResponseDto -> GetAllWeeklyPoolsResponse
config.NewConfig<GetAllWeeklyPoolsResponseDto, GetAllWeeklyPoolsResponse>()
.MapWith(src => new GetAllWeeklyPoolsResponse
{
MetaData = new BackOffice.BFF.Protobuf.Common.MetaData
{
CurrentPage = src.MetaData.CurrentPage,
PageSize = src.MetaData.PageSize,
TotalCount = src.MetaData.TotalCount,
TotalPage = src.MetaData.TotalPages
},
Models = { src.Models.Select(m => new WeeklyCommissionPoolModel
{
Id = m.Id,
WeekNumber = m.WeekNumber ?? string.Empty,
TotalPoolAmount = m.TotalPoolAmount,
TotalBalances = m.TotalBalances,
ValuePerBalance = m.ValuePerBalance,
IsCalculated = m.IsCalculated,
CalculatedAt = m.CalculatedAt.HasValue
? Timestamp.FromDateTime(DateTime.SpecifyKind(m.CalculatedAt.Value, DateTimeKind.Utc))
: null,
Created = Timestamp.FromDateTime(DateTime.SpecifyKind(m.Created, DateTimeKind.Utc))
}) }
});
// GetUserWeeklyBalancesResponseDto -> GetUserWeeklyBalancesResponse
config.NewConfig<GetUserWeeklyBalancesResponseDto, GetUserWeeklyBalancesResponse>()
.MapWith(src => new GetUserWeeklyBalancesResponse
{
MetaData = new BackOffice.BFF.Protobuf.Common.MetaData
{
CurrentPage = src.MetaData.CurrentPage,
PageSize = src.MetaData.PageSize,
TotalCount = src.MetaData.TotalCount,
TotalPage = src.MetaData.TotalPages
},
Models = { src.Models.Select(m => new UserWeeklyBalanceModel
{
Id = m.Id,
UserId = m.UserId,
WeekNumber = m.WeekNumber ?? string.Empty,
LeftLegBalances = m.LeftLegBalances,
RightLegBalances = m.RightLegBalances,
TotalBalances = m.TotalBalances,
WeeklyPoolContribution = m.WeeklyPoolContribution,
CalculatedAt = m.CalculatedAt.HasValue
? Timestamp.FromDateTime(DateTime.SpecifyKind(m.CalculatedAt.Value, DateTimeKind.Utc))
: null,
IsExpired = m.IsExpired,
Created = Timestamp.FromDateTime(DateTime.SpecifyKind(m.Created, DateTimeKind.Utc))
}) }
});
// GetWithdrawalRequestsResponseDto -> GetWithdrawalRequestsResponse
// config.NewConfig<GetWithdrawalRequestsResponseDto, GetWithdrawalRequestsResponse>()
// .MapWith(src => new GetWithdrawalRequestsResponse
// {
// MetaData = new BackOffice.BFF.Protobuf.Common.MetaData
// {
// CurrentPage = src.MetaData.CurrentPage,
// PageSize = src.MetaData.PageSize,
// TotalCount = src.MetaData.TotalCount,
// TotalPage = src.MetaData.TotalPages
// },
// Models = { src.Models.Select(m => new WithdrawalRequestModel
// {
// Id = m.Id,
// UserId = m.UserId,
// UserName = m.UserName ?? string.Empty,
// Amount = m.Amount,
// Status = m.Status,
// StatusDisplay = m.StatusDisplay ?? string.Empty,
// RequestedAt = Timestamp.FromDateTime(DateTime.SpecifyKind(m.RequestedAt, DateTimeKind.Utc)),
// ProcessedAt = m.ProcessedAt.HasValue
// ? Timestamp.FromDateTime(DateTime.SpecifyKind(m.ProcessedAt.Value, DateTimeKind.Utc))
// : null,
// ProcessedBy = m.ProcessedBy,
// ProcessedByName = m.ProcessedByName ?? string.Empty,
// RejectionReason = m.RejectionReason ?? string.Empty
// }) }
// });
// GetWithdrawalReportsResponseDto -> GetWithdrawalReportsResponse
// config.NewConfig<GetWithdrawalReportsResponseDto, GetWithdrawalReportsResponse>()
// .MapWith(src => new GetWithdrawalReportsResponse
// {
// TotalRequests = src.TotalRequests,
// PendingCount = src.PendingCount,
// ApprovedCount = src.ApprovedCount,
// RejectedCount = src.RejectedCount,
// ProcessedCount = src.ProcessedCount,
// TotalAmount = src.TotalAmount,
// PendingAmount = src.PendingAmount,
// ApprovedAmount = src.ApprovedAmount,
// ProcessedAmount = src.ProcessedAmount,
// Reports = { src.Reports.Select(r => new WithdrawalReportModel
// {
// UserId = r.UserId,
// UserName = r.UserName ?? string.Empty,
// TotalRequests = r.TotalRequests,
// TotalAmount = r.TotalAmount,
// ApprovedAmount = r.ApprovedAmount,
// LastRequestDate = r.LastRequestDate.HasValue
// ? Timestamp.FromDateTime(DateTime.SpecifyKind(r.LastRequestDate.Value, DateTimeKind.Utc))
// : null
// }) }
// });
// GetAvailableWeeksResponseDto -> GetAvailableWeeksResponse
config.NewConfig<GetAvailableWeeksResponseDto, GetAvailableWeeksResponse>()
.MapWith(src => new GetAvailableWeeksResponse
{
CurrentWeek = MapWeekInfo(src.CurrentWeek),
CalculatedWeeks = { src.CalculatedWeeks.Select(MapWeekInfo) },
PendingWeeks = { src.PendingWeeks.Select(MapWeekInfo) },
FutureWeeks = { src.FutureWeeks.Select(MapWeekInfo) }
});
}
private static WeekInfo MapWeekInfo(WeekInfoDto dto)
{
return new WeekInfo
{
WeekNumber = dto.WeekNumber,
StartDate = Timestamp.FromDateTime(dto.StartDate.ToUniversalTime()),
EndDate = Timestamp.FromDateTime(dto.EndDate.ToUniversalTime()),
IsCalculated = dto.IsCalculated,
CalculatedAt = dto.CalculatedAt.HasValue
? Timestamp.FromDateTime(dto.CalculatedAt.Value.ToUniversalTime())
: null,
LastExecutionStatus = dto.LastExecutionStatus ?? string.Empty,
TotalPoolAmount = dto.TotalPoolAmount ?? 0,
EligibleUsersCount = dto.EligibleUsersCount ?? 0,
DisplayText = dto.DisplayText
};
}
}