コード例 #1
0
        public DtoModelMappingsProfile()
        {
            this.CreateMap <Club, ClubDto>()
            .ForMember(dest => dest.ActiveChallengesCount, opt => opt.MapFrom(src => src.Challenges.Count(p => p.IsActive)))
            .ForMember(dest => dest.InactiveChallengesCount, opt => opt.MapFrom(src => src.Challenges.Count(p => !p.IsActive)))
            .ReverseMap()
            .ForMember(dest => dest.IconUrl, opt => opt.Ignore())
            .ForMember(dest => dest.Name, opt => opt.Ignore())
            .ForMember(dest => dest.SportType, opt => opt.Ignore());

            this.CreateMap <Athlete, AthleteDto>()
            .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id))
            .ForMember(dest => dest.FirstName, opt => opt.MapFrom(src => src.FirstName))
            .ForMember(dest => dest.LastName, opt => opt.MapFrom(src => src.LastName))
            .ForMember(dest => dest.IconUrlMedium, opt => opt.MapFrom(src => src.IconUrlMedium))
            .ForMember(dest => dest.IconUrlLarge, opt => opt.MapFrom(src => src.IconUrlLarge))
            .ForMember(dest => dest.City, opt => opt.MapFrom(src => src.City))
            .ForMember(dest => dest.Country, opt => opt.MapFrom(src => src.Country))
            .ForMember(dest => dest.Gender, opt => opt.MapFrom(src => src.Gender))
            .ForMember(dest => dest.IsAdmin, opt => opt.MapFrom(src => src.IsAdmin))
            .ForMember(dest => dest.FirstLoginDate, opt => opt.MapFrom(src => TimeZoneInfo.ConvertTime(src.FirstLoginDate, cestTimezone).LocalDateTime))
            .ForMember(dest => dest.LastLoginDate, opt => opt.MapFrom(src => TimeZoneInfo.ConvertTime(src.LastLoginDate, cestTimezone).LocalDateTime))
            .ForMember(dest => dest.LastSyncDate, opt => opt.MapFrom(src => src.LastSyncDate.HasValue ? TimeZoneInfo.ConvertTime(src.LastSyncDate.Value, cestTimezone).LocalDateTime : (DateTime?)null));

            this.CreateMap <Challenge, ChallengeDetailsDto>()
            .ForMember(dest => dest.CompetitionTypeDescription, opt => opt.MapFrom(src => EnumsHelper.GetEnumDescription((ChallengeCompetitionTypeEnum)src.CompetitionType)))
            .ForMember(dest => dest.StartDate, opt => opt.MapFrom(src => TimeZoneInfo.ConvertTime(src.StartDate, cestTimezone).LocalDateTime))
            .ForMember(dest => dest.EndDate, opt => opt.MapFrom(src => TimeZoneInfo.ConvertTime(src.EndDate, cestTimezone).LocalDateTime))
            .ForMember(dest => dest.CreationDate, opt => opt.MapFrom(src => TimeZoneInfo.ConvertTime(src.CreationDate, cestTimezone).LocalDateTime))
            .ForMember(dest => dest.EditionDate, opt => opt.MapFrom(src => TimeZoneInfo.ConvertTime(src.EditionDate, cestTimezone).LocalDateTime))
            .ForMember(dest => dest.UpdateDate, opt => opt.MapFrom(src => src.UpdateDate.HasValue ? TimeZoneInfo.ConvertTime(src.UpdateDate.Value, cestTimezone).LocalDateTime : (DateTime?)null))
            .ForMember(dest => dest.ClubName, opt => opt.MapFrom(src => src.Club.Name))
            .ForMember(dest => dest.ClubIconUrl, opt => opt.MapFrom(src => src.Club.IconUrl))
            .ForMember(dest => dest.Club, opt => opt.MapFrom(src => new ClubDto {
                Id = src.ClubId, Name = src.Club.Name
            }))
            .ForMember(dest => dest.AuthorName, opt => opt.MapFrom(src => src.Author.FirstName + " " + src.Author.LastName))
            .ForMember(dest => dest.ActivityTypes, opt => opt.MapFrom(src => src.ChallengeActivityTypes.Select(p => p.ActivityType.Name)))
            .ForMember(dest => dest.ActivityTypesIds, opt => opt.MapFrom(src => src.ChallengeActivityTypes.Select(p => p.ActivityTypeId)))
            .ForMember(dest => dest.ActivityTypesProfile, opt => opt.MapFrom(src => src.ChallengeActivityTypes.Any() ? ActivityTypeProfileEnum.Custom.ToString() : ActivityTypeProfileEnum.All.ToString()))
            .ForMember(dest => dest.ParticipantsCount, opt => opt.MapFrom(src => src.ChallengeParticipants.Count));

            this.CreateMap <ChallengeDetailsDto, Challenge>()
            .ForMember(dest => dest.StartDate, opt => opt.MapFrom(src => DateTime.SpecifyKind(src.StartDate, DateTimeKind.Local)))
            .ForMember(dest => dest.EndDate, opt => opt.MapFrom(src => DateTime.SpecifyKind(src.EndDate, DateTimeKind.Local)))
            .ForMember(dest => dest.CreationDate, opt => opt.Ignore())
            .ForMember(dest => dest.EditionDate, opt => opt.Ignore())
            .ForMember(dest => dest.UpdateDate, opt => opt.Ignore())
            .ForMember(dest => dest.Club, opt => opt.Ignore());

            this.CreateMap <Challenge, ChallengeOverviewDto>()
            .ForMember(dest => dest.CompetitionTypeDescription, opt => opt.MapFrom(src => EnumsHelper.GetEnumDescription((ChallengeCompetitionTypeEnum)src.CompetitionType)))
            .ForMember(dest => dest.StartDate, opt => opt.MapFrom(src => TimeZoneInfo.ConvertTime(src.StartDate, cestTimezone).LocalDateTime))
            .ForMember(dest => dest.EndDate, opt => opt.MapFrom(src => TimeZoneInfo.ConvertTime(src.EndDate, cestTimezone).LocalDateTime))
            .ForMember(dest => dest.ClubName, opt => opt.MapFrom(src => src.Club.Name))
            .ForMember(dest => dest.ParticipantsCount, opt => opt.MapFrom(src => src.ChallengeParticipants.Count));

            this.CreateMap <ChallengeParticipant, ChallengeParticipationDto>()
            .ForMember(dest => dest.ChallengeId, opt => opt.MapFrom(src => src.ChallengeId))
            .ForMember(dest => dest.ChallengeName, opt => opt.MapFrom(src => src.Challenge.Name))
            .ForMember(dest => dest.ChallengeStartDate, opt => opt.MapFrom(src => TimeZoneInfo.ConvertTime(src.Challenge.StartDate, cestTimezone).LocalDateTime))
            .ForMember(dest => dest.ChallengeEndDate, opt => opt.MapFrom(src => TimeZoneInfo.ConvertTime(src.Challenge.EndDate, cestTimezone).LocalDateTime))
            .ForMember(dest => dest.CompetitionType, opt => opt.MapFrom(src => src.Challenge.CompetitionType))
            .ForMember(dest => dest.ChallengeCompetitionType, opt => opt.MapFrom(src => (ChallengeCompetitionTypeEnum)src.Challenge.CompetitionType))
            .ForMember(dest => dest.IsChallengeActive, opt => opt.MapFrom(src => src.Challenge.IsActive))
            .ForMember(dest => dest.ChallengeParticipantsCount, opt => opt.MapFrom(src => src.Challenge.ChallengeParticipants.Count))
            .ForMember(dest => dest.ClubName, opt => opt.MapFrom(src => src.Challenge.Club.Name))
            .ForMember(dest => dest.ClubIconUrl, opt => opt.MapFrom(src => src.Challenge.Club.IconUrl))
            .ForMember(dest => dest.Rank, opt => opt.MapFrom(src => src.Rank))
            .ForMember(dest => dest.Score, opt => opt.MapFrom(src => src.Score));

            this.CreateMap <ChallengeParticipant, ChallengeRankPositionDto>()
            .ForMember(dest => dest.AthleteId, opt => opt.MapFrom(src => src.AthleteId))
            .ForMember(dest => dest.AthleteName, opt => opt.MapFrom(src => src.Athlete.FirstName + " " + src.Athlete.LastName))
            .ForMember(dest => dest.AthleteIconUrlMedium, opt => opt.MapFrom(src => src.Athlete.IconUrlMedium))
            .ForMember(dest => dest.Rank, opt => opt.MapFrom(src => src.Rank))
            .ForMember(dest => dest.Score, opt => opt.MapFrom(src => src.Score));

            this.CreateMap <Activity, ActivityDto>()
            .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id))
            .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name))
            .ForMember(dest => dest.AthleteName, opt => opt.MapFrom(src => src.Athlete.FirstName + " " + src.Athlete.LastName))
            .ForMember(dest => dest.ActivityType, opt => opt.MapFrom(src => (ActivityTypeEnum)src.ActivityTypeId))
            .ForMember(dest => dest.StartDate, opt => opt.MapFrom(src => TimeZoneInfo.ConvertTime(src.StartDate, cestTimezone).LocalDateTime))
            .ForMember(dest => dest.EndDate, opt => opt.MapFrom(src => TimeZoneInfo.ConvertTime(src.EndDate, cestTimezone).LocalDateTime))
            .ForMember(dest => dest.Duration, opt => opt.MapFrom(src => src.Duration))
            .ForMember(dest => dest.Distance, opt => opt.MapFrom(src => src.Distance))
            .ForMember(dest => dest.Elevation, opt => opt.MapFrom(src => src.Elevation))
            .ForMember(dest => dest.Pace, opt => opt.MapFrom(src => src.Pace))
            .ForMember(dest => dest.IsManual, opt => opt.MapFrom(src => src.IsManual))
            .ForMember(dest => dest.IsGps, opt => opt.MapFrom(src => src.IsGps))
            .ForMember(dest => dest.IsDeleted, opt => opt.MapFrom(src => src.IsDeleted));

            this.CreateMap <AthleteStravaToken, StravaToken>()
            .ForMember(dest => dest.DatabaseId, opt => opt.MapFrom(src => src.Id));
        }