Add customer communication system

This commit is contained in:
sysadmin
2025-08-27 18:02:39 +01:00
parent 1f7c0af497
commit eae5be3e7c
136 changed files with 14552 additions and 97 deletions

View File

@@ -43,5 +43,35 @@ public class MappingProfile : Profile
.ForMember(dest => dest.ProductName, opt => opt.MapFrom(src => src.Product.Name));
CreateMap<CryptoPayment, CryptoPaymentDto>();
// Customer mappings
CreateMap<Customer, CustomerDto>()
.ForMember(dest => dest.DisplayName, opt => opt.Ignore())
.ForMember(dest => dest.CustomerType, opt => opt.Ignore());
CreateMap<CreateCustomerDto, Customer>();
CreateMap<UpdateCustomerDto, Customer>()
.ForAllMembers(opt => opt.Condition((src, dest, srcMember) => srcMember != null));
CreateMap<Customer, CustomerSummaryDto>()
.ForMember(dest => dest.DisplayName, opt => opt.MapFrom(src => src.DisplayName))
.ForMember(dest => dest.CustomerType, opt => opt.MapFrom(src => src.CustomerType));
// CustomerMessage mappings
CreateMap<CustomerMessage, CustomerMessageDto>()
.ForMember(dest => dest.Customer, opt => opt.MapFrom(src => src.Customer))
.ForMember(dest => dest.AdminUsername, opt => opt.MapFrom(src => src.AdminUser != null ? src.AdminUser.Username : null))
.ForMember(dest => dest.OrderReference, opt => opt.MapFrom(src => src.Order != null ? src.Order.Id.ToString().Substring(0, 8) : null))
.ForMember(dest => dest.TelegramUserId, opt => opt.MapFrom(src => src.Customer != null ? src.Customer.TelegramUserId : 0))
.ForMember(dest => dest.DisplayTitle, opt => opt.MapFrom(src => src.GetDisplayTitle()))
.ForMember(dest => dest.StatusDisplay, opt => opt.MapFrom(src => src.Status.ToString()))
.ForMember(dest => dest.DirectionDisplay, opt => opt.MapFrom(src => src.Direction == MessageDirection.AdminToCustomer ? "Outbound" : "Inbound"))
.ForMember(dest => dest.TypeDisplay, opt => opt.MapFrom(src => src.Type.ToString()));
CreateMap<CreateCustomerMessageDto, CustomerMessage>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => Guid.NewGuid()))
.ForMember(dest => dest.Direction, opt => opt.MapFrom(src => MessageDirection.AdminToCustomer))
.ForMember(dest => dest.CreatedAt, opt => opt.MapFrom(src => DateTime.UtcNow))
.ForMember(dest => dest.Status, opt => opt.MapFrom(src => MessageStatus.Pending))
.ForMember(dest => dest.Platform, opt => opt.MapFrom(src => "Telegram"));
}
}