using AutoMapper; using IM_API.Domain.Events; using IM_API.Dtos; using IM_API.Models; namespace IM_API.Configs { public class MapperConfig:Profile { public MapperConfig() { CreateMap(); //用户信息更新模型转换 CreateMap() .ForMember(dest => dest.Updated,opt => opt.MapFrom(src => DateTime.Now)) .ForAllMembers(opts => opts.Condition((src,dest,srcMember) => srcMember != null)); //用户注册模型转换 CreateMap() .ForMember(dest => dest.Username,opt => opt.MapFrom(src => src.Username)) .ForMember(dest => dest.Password,opt => opt.MapFrom(src => src.Password)) .ForMember(dest => dest.Avatar,opt => opt.MapFrom(src => "https://ts1.tc.mm.bing.net/th/id/OIP-C.dl0WpkTP6E2J4FnhDC_jHwAAAA?rs=1&pid=ImgDetMain&o=7&rm=3")) .ForMember(dest => dest.StatusEnum,opt => opt.MapFrom(src => UserStatus.Normal)) .ForMember(dest => dest.OnlineStatusEnum,opt => opt.MapFrom(src => UserOnlineStatus.Offline)) .ForMember(dest => dest.NickName,opt => opt.MapFrom(src => src.NickName??"默认用户")) .ForMember(dest => dest.Created,opt => opt.MapFrom(src => DateTime.Now)) .ForMember(dest => dest.IsDeleted,opt => opt.MapFrom(src => 0)) ; //好友信息模型转换 CreateMap(); //好友请求通过后新增好友关系 CreateMap() .ForMember(dest => dest.UserId , opt => opt.MapFrom(src => src.RequestUser)) .ForMember(dest => dest.FriendId , opt => opt.MapFrom(src => src.ResponseUser)) .ForMember(dest => dest.StatusEnum , opt =>opt.MapFrom(src => FriendStatus.Added)) .ForMember(dest => dest.RemarkName , opt => opt.MapFrom(src => src.ResponseUserNavigation.NickName)) .ForMember(dest => dest.Created , opt => opt.MapFrom(src => DateTime.Now)) ; //发起好友请求转换请求对象 CreateMap() .ForMember(dest => dest.RequestUser , opt => opt.MapFrom(src => src.FromUserId)) .ForMember(dest => dest.ResponseUser , opt => opt.MapFrom(src => src.ToUserId)) .ForMember(dest => dest.Created , opt => opt.MapFrom(src => DateTime.Now)) .ForMember(dest => dest.StateEnum , opt => opt.MapFrom(src => FriendRequestState.Pending)) .ForMember(dest => dest.Description , opt => opt.MapFrom(src => src.Description)) ; //消息模型转换 CreateMap() .ForMember(dest => dest.Type , opt => opt.MapFrom(src => src.MsgTypeEnum.ToString())) .ForMember(dest => dest.MsgId , opt => opt.MapFrom(src => src.Id)) .ForMember(dest => dest.SenderId , opt => opt.MapFrom(src => src.Sender)) .ForMember(dest => dest.ChatType , opt => opt.MapFrom(src => src.ChatTypeEnum.ToString())) .ForMember(dest => dest.ReceiverId, opt => opt.MapFrom(src => src.Recipient)) .ForMember(dest => dest.Content, opt => opt.MapFrom(src => src.Content)) .ForMember(dest => dest.TimeStamp, opt => opt.MapFrom(src => src.Created)) ; CreateMap() .ForMember(dest => dest.Sender, opt => opt.MapFrom(src => src.SenderId)) .ForMember(dest => dest.ChatTypeEnum,opt => opt.MapFrom(src => Enum.Parse(src.ChatType,true))) .ForMember(dest => dest.MsgTypeEnum, opt => opt.MapFrom(src => Enum.Parse(src.Type,true))) .ForMember(dest => dest.Created, opt => opt.MapFrom(src => src.TimeStamp)) .ForMember(dest => dest.Content, opt => opt.MapFrom(src => src.Content)) .ForMember(dest => dest.Recipient, opt => opt.MapFrom(src => src.ReceiverId)) .ForMember(dest => dest.StreamKey, opt => opt.Ignore() ) .ForMember(dest => dest.StateEnum, opt => opt.MapFrom(src => MessageState.Sent)) .ForMember(dest => dest.ChatType, opt => opt.Ignore()) .ForMember(dest => dest.MsgType, opt => opt.Ignore()) ; //会话对象深拷贝 CreateMap() .ForMember(dest => dest.Id, opt => opt.Ignore()) .ForMember(dest => dest.UserId, opt => opt.Ignore()) .ForMember(dest => dest.TargetId, opt => opt.Ignore()) .ForMember(dest => dest.ChatType, opt => opt.Ignore()) .ForMember(dest => dest.StreamKey, opt => opt.Ignore()) ; //消息对象转消息创建事件对象 CreateMap() .ForMember(dest => dest.MessageMsgType, opt => opt.MapFrom(src => src.MsgTypeEnum)) .ForMember(dest => dest.ChatType, opt => opt.MapFrom(src => src.ChatTypeEnum)) .ForMember(dest => dest.MessageContent, opt => opt.MapFrom(src => src.Content)) .ForMember(dest => dest.State, opt => opt.MapFrom(src => src.StateEnum)) .ForMember(dest => dest.MessageCreated, opt => opt.MapFrom(src => src.Created)) .ForMember(dest => dest.MessageId, opt => opt.MapFrom(src => src.Id)) .ForMember(dest => dest.MsgRecipientId, opt => opt.MapFrom(src => src.Recipient)) .ForMember(dest => dest.MsgSenderId, opt => opt.MapFrom(src => src.Sender)) .ForMember(dest => dest.StreamKey, opt => opt.MapFrom(src => src.StreamKey)) ; //消息发送事件转换会话对象 CreateMap() .ForMember(dest => dest.LastReadMessageId, opt => opt.MapFrom(src => src.MessageId)) .ForMember(dest => dest.LastMessage, opt => opt.MapFrom(src => src.MessageContent)) .ForMember(dest => dest.ChatType, opt => opt.MapFrom(src => (int)src.ChatType)) .ForMember(dest => dest.UserId, opt => opt.MapFrom(src => src.MsgSenderId)) .ForMember(dest => dest.TargetId, opt => opt.MapFrom(src => src.MsgRecipientId)) .ForMember(dest => dest.UnreadCount, opt => opt.MapFrom(src => 0)) .ForMember(dest => dest.StreamKey, opt => opt.MapFrom(src => src.StreamKey)) .ForMember(dest => dest.LastMessageTime, opt => opt.MapFrom(src => DateTime.Now)) ; } } }