using AutoMapper;
using IRaCIS.Core.Application.Contracts;
namespace IRaCIS.Core.Application.AutoMapper
{
    /// 
    /// 映射配置
    /// 
    public partial class SiteSurveyConfig : Profile
    {
        public SiteSurveyConfig()
        {
            var isEn_Us = false;
            //编辑
            CreateMap().ReverseMap();
            CreateMap().ReverseMap();
            CreateMap().ReverseMap();
            CreateMap().ForMember(d => d.Email, t => t.MapFrom(t => t.EmailOrPhone));
            CreateMap()
                 .ForMember(d => d.Id, u => u.Ignore())
                 .ForMember(d => d.Phone, u => u.MapFrom(c => c.UserRole.IdentityUser.Phone))
                 .ForMember(d => d.Email, u => u.MapFrom(c => c.UserRole.IdentityUser.EMail))
                 .ForMember(d => d.OrganizationName, u => u.MapFrom(c => c.UserRole.IdentityUser.OrganizationName))
                 .ForMember(d => d.UserTypeId, u => u.MapFrom(c => c.UserRole.UserTypeId))
                 .ForMember(d => d.IsHistoryUser, u => u.MapFrom(c => true))
                 .ForMember(d => d.IsHistoryUserOriginDeleted, u => u.MapFrom(c => c.IsDeleted))
                 .ForMember(d => d.IsHistoryUserDeleted, u => u.MapFrom(c => c.IsDeleted))
                 .ForMember(d => d.FirstName, u => u.MapFrom(c => c.UserRole.IdentityUser.FirstName))
                 .ForMember(d => d.LastName, u => u.MapFrom(c => c.UserRole.IdentityUser.LastName))
                 .ForMember(d => d.IsGenerateAccount, u => u.MapFrom(c => true))
                 .ForMember(d => d.IsGenerateSuccess, u => u.MapFrom(c => true))
                 .ForMember(d => d.SystemUserId, u => u.MapFrom(c => c.UserRole.IdentityUser.Id))
                 .ForMember(d => d.IsJoin, u => u.MapFrom(c => !c.IsDeleted))
                 .ForMember(d => d.CreateUserRole, u => u.Ignore());
            //列表
            CreateMap()
                .ForMember(t => t.EquipmentType, u => u.MapFrom(d => isEn_Us ? d.EquipmentType.Value : d.EquipmentType.ValueCN));
            CreateMap()
                 .ForMember(d => d.TrialSiteAliasName, u => u.MapFrom(s => s.TrialSite.TrialSiteAliasName))
                  .ForMember(d => d.SiteName, u => u.MapFrom(s => s.TrialSite.TrialSiteName))
                   .ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode));
            CreateMap();
            CreateMap()
              .ForMember(d => d.UserType, u => u.MapFrom(s => s.UserTypeRole.UserTypeShortName))
               .ForMember(d => d.UserTypeEnum, u => u.MapFrom(s => s.UserTypeRole.UserTypeEnum));
            CreateMap()
                .ForMember(d => d.Sponsor, u => u.MapFrom(s => s.Sponsor.SponsorName))
                .ForMember(d => d.IndicationType, u => u.MapFrom(s => s.IndicationType.Value))
                .ForMember(d => d.TrialSiteSelectList, u => u.MapFrom(s => s.TrialSiteList))
                .ForMember(d => d.TrialId, u => u.MapFrom(s => s.Id));
            CreateMap()
                .ForMember(t => t.IsHaveSiteSurveyRecord, u => u.MapFrom(t => t.TrialSiteSurveyList.Any()));
            CreateMap()
                .ForMember(d => d.TrialSiteSurvey, u => u.MapFrom(s => s))
                .ForMember(d => d.TrialInfo, u => u.MapFrom(s => s.Trial))
            .ForMember(d => d.TrialSiteUserSurveyList, u => u.MapFrom(s => s.TrialSiteUserSurveyList));
            CreateMap();
            CreateMap()
                .ForMember(d => d.EMail, u => u.MapFrom(s => s.Email));
            CreateMap();
            CreateMap().ForMember(d => d.RealName, u => u.MapFrom(s => s.LastName + " / " + s.FirstName));
            CreateMap()
                .ForMember(t => t.TrialSiteSurvey, u => u.MapFrom(c => c.TrialSiteSurvey))
             .ForMember(d => d.UserType, u => u.MapFrom(s => s.UserTypeRole.UserTypeShortName))
             .ForMember(d => d.UserTypeEnum, u => u.MapFrom(s => s.UserTypeRole.UserTypeEnum));
        }
    }
}