using BackOffice.BFF.Application.NetworkMembershipCQ.Queries.GetNetworkTree; using BackOffice.BFF.Application.NetworkMembershipCQ.Queries.GetUserNetworkInfo; using BackOffice.BFF.Application.NetworkMembershipCQ.Queries.GetNetworkHistory; using Foursat.BackOffice.BFF.NetworkMembership.Protos; namespace BackOffice.BFF.WebApi.Common.Mappings; public class NetworkMembershipProfile : IRegister { void IRegister.Register(TypeAdapterConfig config) { // GetNetworkTreeResponseDto -> GetNetworkTreeResponse config.NewConfig() .MapWith(src => new GetNetworkTreeResponse { Nodes = { src.Nodes.Select(n => new NetworkTreeNodeModel { UserId = n.UserId, UserName = n.UserName, ParentId = n.ParentId, NetworkLeg = n.NetworkLeg, NetworkLevel = n.NetworkLevel, IsActive = n.IsActive, JoinedAt = n.JoinedAt.HasValue ? Timestamp.FromDateTime(DateTime.SpecifyKind(n.JoinedAt.Value, DateTimeKind.Utc)) : null }) } }); // NetworkTreeNodeDto -> NetworkTreeNodeModel config.NewConfig() .MapWith(src => new NetworkTreeNodeModel { UserId = src.UserId, UserName = src.UserName, ParentId = src.ParentId, NetworkLeg = src.NetworkLeg, NetworkLevel = src.NetworkLevel, IsActive = src.IsActive, JoinedAt = src.JoinedAt.HasValue ? Timestamp.FromDateTime(DateTime.SpecifyKind(src.JoinedAt.Value, DateTimeKind.Utc)) : null }); // GetUserNetworkInfoResponseDto -> GetUserNetworkResponse config.NewConfig() .MapWith(src => new GetUserNetworkResponse { Id = src.Id, UserId = src.UserId, UserName = src.UserName, ParentId = src.ParentId, ParentName = src.ParentName, NetworkLeg = src.NetworkLeg, LeftChildId = src.LeftChildId, LeftChildName = src.LeftChildName, RightChildId = src.RightChildId, RightChildName = src.RightChildName, NetworkLevel = src.NetworkLevel, ReferralCode = src.ReferralCode, JoinedAt = Timestamp.FromDateTime(DateTime.SpecifyKind(src.JoinedAt, DateTimeKind.Utc)), Created = Timestamp.FromDateTime(DateTime.SpecifyKind(src.CreatedAt, DateTimeKind.Utc)) }); // GetNetworkHistoryResponseDto -> GetNetworkMembershipHistoryResponse config.NewConfig() .MapWith(src => new GetNetworkMembershipHistoryResponse { MetaData = new BackOffice.BFF.Protobuf.Common.MetaData { CurrentPage = src.PageNumber, PageSize = src.PageSize, TotalCount = src.TotalCount, TotalPage = (int)Math.Ceiling((double)src.TotalCount / src.PageSize) }, Models = { src.History.Select(h => new NetworkMembershipHistoryModel { Id = h.Id, UserId = h.UserId, OldParentId = h.OldParentId, NewParentId = h.NewParentId, OldNetworkLeg = h.OldNetworkLeg, NewNetworkLeg = h.NewNetworkLeg, OldNetworkLevel = h.OldNetworkLevel, NewNetworkLevel = h.NewNetworkLevel, Action = h.Action, PerformedBy = h.PerformedBy, Reason = h.Reason, Created = Timestamp.FromDateTime(DateTime.SpecifyKind(h.CreatedAt, DateTimeKind.Utc)) }) } }); } }