80 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| namespace AAIntegration.SimmonsBank.API.Config;
 | |
| 
 | |
| using AutoMapper;
 | |
| using AAIntegration.SimmonsBank.API.Entities;
 | |
| using AAIntegration.SimmonsBank.API.Models.Users;
 | |
| using AAIntegration.SimmonsBank.API.Models.Accounts;
 | |
| using AAIntegration.SimmonsBank.API.Services;
 | |
| using System.Runtime.Serialization;
 | |
| using AAIntegration.SimmonsBank.API.Models.Transactions;
 | |
| 
 | |
| public class AutoMapperProfile : Profile
 | |
| {
 | |
| 
 | |
|     public AutoMapperProfile()
 | |
|     {        // UserUpdateRequest -> User
 | |
|         CreateMap<UserUpdateRequest, User>()
 | |
|             .ForAllMembers(x => x.Condition(
 | |
|                 (src, dest, prop) =>
 | |
|                 {
 | |
|                     // ignore both null & empty string properties
 | |
|                     if (prop == null) return false;
 | |
|                     if (prop.GetType() == typeof(string) && string.IsNullOrEmpty((string)prop)) return false;
 | |
|                     // ignore null password
 | |
|                     if (x.DestinationMember.Name == "Password" && src.Password == null) return false;
 | |
| 
 | |
|                     return true;
 | |
|                 }
 | |
|             ));
 | |
| 
 | |
|         // AccountUpdateRequest -> Account
 | |
|         CreateMap<AccountUpdateRequest, Account>();
 | |
| 
 | |
|         // AccountCreateRequest -> Account
 | |
|         CreateMap<AccountCreateRequest, Account>();
 | |
|             /*.ForMember(
 | |
|                 dest => dest.OwnerId,
 | |
|                 opt => opt.MapFrom(src => src.Owner)
 | |
|             );
 | |
|             /*.ForAllMembers(x => x.Condition(
 | |
|                 (src, dest, prop) =>
 | |
|                 {
 | |
|                     // ignore both null & empty string properties
 | |
|                     if (prop == null) return false;
 | |
|                     if (prop.GetType() == typeof(string) && string.IsNullOrEmpty((string)prop)) return false;
 | |
| 
 | |
|                     return true;
 | |
|                 }
 | |
|             ))*/
 | |
| 
 | |
|         // Account -> AccountGet
 | |
|         CreateMap<Account, AccountDTO>()
 | |
|             .ForAllMembers(x => x.Condition(
 | |
|                 (src, dest, prop) =>
 | |
|                 {
 | |
|                     // ignore both null & empty string properties
 | |
|                     if (prop == null) return false;
 | |
|                     if (prop.GetType() == typeof(string) && string.IsNullOrEmpty((string)prop)) return false;
 | |
| 
 | |
|                     return true;
 | |
|                 }
 | |
|             ));
 | |
| 
 | |
| 
 | |
|         // Transaction -> TransactionDto
 | |
|         CreateMap<Transaction, TransactionDto>()
 | |
|             .ForMember(dest => dest.DebitAccountId, opt => opt.MapFrom(src => src.DebitAccount.Id))
 | |
|             .ForMember(dest => dest.CreditAccountId, opt => opt.MapFrom(src => src.CreditAccount.Id))
 | |
|             .ForAllMembers(x => x.Condition(
 | |
|                 (src, dest, prop) =>
 | |
|                 {
 | |
|                     // ignore both null & empty string properties
 | |
|                     if (prop == null) return false;
 | |
|                     if (prop.GetType() == typeof(string) && string.IsNullOrEmpty((string)prop)) return false;
 | |
| 
 | |
|                     return true;
 | |
|                 }
 | |
|             ));
 | |
| 
 | |
|     }
 | |
| } |