using AutoMapper; using Dotnet.Samples.AspNetCore.WebApi.Enums; using Dotnet.Samples.AspNetCore.WebApi.Models; namespace Dotnet.Samples.AspNetCore.WebApi.Mappings; /// /// Mapping profile for Player. /// /// /// This class defines the mapping configuration between PlayerRequestModel and Player, /// and between Player and PlayerResponseModel. /// public class PlayerMappingProfile : Profile { public PlayerMappingProfile() { // PlayerRequestModel → Player CreateMap() .ForMember( destination => destination.Position, options => options.MapFrom(source => Position.FromAbbr(source.AbbrPosition ?? string.Empty) ) ) .ForMember(destination => destination.Starting11, options => options.Ignore()); // Player → PlayerResponseModel CreateMap() .ForSourceMember(source => source.Id, options => options.DoNotValidate()) .ForMember( destination => destination.FullName, options => options.MapFrom(source => $"{source.FirstName} {(string.IsNullOrWhiteSpace(source.MiddleName) ? "" : source.MiddleName + " ")}{source.LastName}".Trim() ) ) .ForMember( destination => destination.Birth, options => options.MapFrom(source => source.DateOfBirth.HasValue ? $"{source.DateOfBirth.Value:MMMM d, yyyy}" : null ) ) .ForMember( destination => destination.Dorsal, options => options.MapFrom(source => source.SquadNumber) ) .ForMember( destination => destination.Club, options => options.MapFrom(source => source.Team) ) .ForMember( destination => destination.Starting11, options => options.MapFrom(source => source.Starting11 ? "Yes" : "No") ); } }