Error screenshot
and the request payload is here
{“id”:3076,”fileTransmissionMethod”:”sFTP-Cortland”,”ipAddress”:null,”portNumber”:””,”loginUserName”:null,”fileFormat”:”BAI2″,”bank”:{“bankName”:”JP Morgan Private Bank”,”address”:”Addresss”,”country”:”United States”,”state”:”CONNECTICUT”,”city”:”Test City”,”postalCode”:”32211″,”cortlandSystem”:”Intellimatch”,”wireABANumber”:”test rtgs sivasai123″,”achaba”:”sivasai123″,”swift”:”sivasai123″,”sortCode”:”sivasai123″,”bankBrokerFeedReceived”:”Yes”,”bankBrokerFees”:”Yes”,”bankBrokerFeesNotes”:”s123″}}
Mapperclass is attached here
public void CreateBankAccountMapper()
{
CreateMap<BankAccount, RelatedBankAccountDto>()
.ForMember(dst => dst.EntityName, opt => opt.MapFrom(src => src.Entity.ShortDealName))
.ForMember(dst => dst.Type, opt => opt.MapFrom(src => src.BankAccountType.LongName))
.ForMember(dst => dst.DACA, opt => opt.MapFrom(src => src.DACA == true ? "Yes" : "No"))
.ForMember(dst => dst.CorPay, opt => opt.MapFrom(src => src.CorPay == true ? "Yes" : "No"))
.ForMember(dst => dst.AccountOwner, opt => opt.MapFrom(src => src.AccountOwner))
.ForMember(dst => dst.BankName, opt => opt.MapFrom(src => src.Bank.BankName))
;
CreateMap<BankAccount, BankOverviewDto>()
.ForMember(dst => dst.Id, opt => opt.MapFrom(src => src.BankId))
.ForMember(dst => dst.BankName, opt => opt.MapFrom(src => src.Bank.BankName))
.ForMember(dst => dst.BankBrokerFeedReceived, opt => opt.MapFrom(src => src.BankBrokerFeedReceived.LongName))
.ForMember(dst => dst.BankBrokerFees, opt => opt.MapFrom(src => src.BankBrokerFees.LongName))
//.ForMember(dst => dst.BankBrokerFeesNotes, opt => opt.MapFrom(src => src.BankBrokerFeesNotes))
;
//CreateMap<BankAccount, BankIntellimatchDto>()
// .ForMember(dst => dst.Id, opt => opt.MapFrom(src => src.BankId))
// .ForMember(dst => dst.BankName, opt => opt.MapFrom(src => src.Bank.BankName))
// ;
CreateMap<BankAccount, BankAccountOverviewDto>()
.ForMember(dst => dst.AccountType, opt => opt.MapFrom(src => src.BankAccountType != null ? src.BankAccountType.LongName : ""))
.ForMember(dst => dst.Client, opt => opt.MapFrom(src => new Companies.BasicCompanyDto { Id = src.Client.Id, CompanyShortName = src.Client.CompanyShortName }))
.ForMember(dst=>dst.CorPay,opt=>opt.MapFrom(src=>src.CorPay))
.ForMember(dst => dst.Entity, opt => opt.MapFrom(src => new BasicFundDto { Id = src.Entity.Id, ShortDealName = src.Entity.ShortDealName }))
.ForMember(dst => dst.Bank, opt => opt.MapFrom(src => new BankOverviewDto { Id = src.Bank.Id, BankName = src.Bank.BankName }))
;
CreateMap<BankAccount, BankAccountIntellimatchDto>()
.ForMember(dst => dst.FileTransmissionMethod, opt => opt.MapFrom(src => src.FileTransmissionMethod.LongName))
.ForMember(dst => dst.FileFormat, opt => opt.MapFrom(src => src.FileFormat.LongName))
.ForMember(dst => dst.BankBrokerFeedReceived, opt => opt.MapFrom(src => src.BankBrokerFeedReceived.LongName))
.ForMember(dst => dst.BankBrokerFees, opt => opt.MapFrom(src => src.BankBrokerFees.LongName))
// .ForMember(dst => dst.Bank, opt => opt.MapFrom(src => new BankOverviewDto { Id = src.Bank.Id, BankName = src.Bank.BankName }))
// .ForMember(dst => dst.Bank, opt => opt.MapFrom(src => new BankOverviewDto { Id = src.Bank.Id, BankName = src.Bank.BankName }))
// .ForMember(dst => dst.Entity, opt => opt.MapFrom(src => new BasicFundDto { Id = src.Entity.Id, ShortDealName = src.Entity.ShortDealName }))
// .ForMember(dst => dst.Bank, opt => opt.MapFrom(src => new BankOverviewDto { Id = src.Bank.Id, BankName = src.Bank.BankName }))
// .ForMember(dst => dst.Bank, opt => opt.MapFrom(src => new BankOverviewDto { Id = src.Bank.Id, BankName = src.Bank.BankName }))
// .ForMember(dst => dst.Entity, opt => opt.MapFrom(src => new BasicFundDto { Id = src.Entity.Id, ShortDealName = src.Entity.ShortDealName }))
.ForMember(dst => dst.PortNumber, opt => opt.MapFrom(src => src.PortNumber.HasValue ? src.PortNumber.ToString() : string.Empty))
//.ForAllOtherMembers(x => x.Ignore())
;
CreateMap<BankAccount, BankAccountAdditionalDetailsDto>()
.ForMember(dst => dst.AccountStatus, opt => opt.MapFrom(src => string.IsNullOrEmpty(src.AccountStatus) ? "Active" : src.AccountStatus))// _lookupCodeCacheService.GetLookupCodeName(LookupTypes.OverallTeamStatus, src.OverallTeamStatus)))
.ForMember(dst => dst.State, opt => opt.MapFrom(src => src.BeneficiaryState)) //.ForMember(dst => dst.BeneficiaryCountry, opt => opt.MapFrom(src => _lookupCodeCacheService.GetLookupCodeName(CRMConsts.LookupTypes.Country, src.BeneficiaryCountry)))
;
CreateMap<BankAccountOverviewDto, BankAccount>()
.ForMember(dst => dst.BankId, opt => opt.Ignore())
.ForMember(dst => dst.DealId, opt => opt.MapFrom(src => src.Entity.Id))
.ForMember(dst => dst.CompanyId, opt => opt.MapFrom(src => src.Client.Id))
.ForMember(dst => dst.BankAccountTypeId, opt => opt.ConvertUsing(new OptionalLookupCodeIdConverter(LookupTypes.BankAccountType), nameof(BankAccountOverviewDto.AccountType)))
.ForMember(dst => dst.Client, opt => opt.Ignore())
.ForMember(dst => dst.Entity, opt => opt.Ignore())
.ForMember(dst => dst.Bank, opt => opt.Ignore())
.ForMember(dst => dst.AddedTime, opt => opt.MapFrom(src => DateTime.UtcNow))
;
CreateMap<BankAccountOverviewDto, Approval>()
.ForMember(dst => dst.Id, opt => opt.Ignore())
.ForMember(dst => dst.ProfileId, opt => opt.MapFrom(src => src.Id)) // Won't show this on user profile, this is a account, not a contact
.ForMember(dst => dst.ProfileType, opt => opt.MapFrom(src => ProfileType.BankAccount))
.ForMember(dst => dst.PendingType, opt => opt.MapFrom(src => PendingType.Update)) // delete won't be here
.ForMember(dst => dst.TabName, opt => opt.MapFrom(src => ProfileTabName.Overview.ToString()))
.ForMember(dst => dst.RequestSource, opt => opt.MapFrom(src => RequestSource.Internal))
// Set after map
//.ForMember(dst => dst.ProfileName, opt => opt.MapFrom(src => src.User != null ? src.User.Overview.UserName : ""))
//.ForMember(dst => dst.FundId, opt => opt.MapFrom(src => src.)) // show on fund
//.ForMember(dst => dst.ProfileIdOfRoleCheck, opt => opt.MapFrom(src => src.CompanyId ?? 0)) // show on company profile for exist company
//.ForMember(dst => dst.HubTaskSetId, opt => opt.MapFrom(src => (int)src.AccountType)) // distinct with account type
.ForMember(dst => dst.ApprovalData, opt => opt.MapFrom(src => JsonSerializer.Serialize(src, new JsonSerializerOptions(JsonSerializerDefaults.Web))))
;
CreateMap<BankAccountIntellimatchDto, BankAccount>()
// .ForMember(dst => dst.BankId, opt => opt.Ignore())
// .ForMember(dst => dst.Entity, opt => opt.Ignore())
// .ForMember(dst => dst.Bank, opt => opt.Ignore())
.ForMember(dst => dst.FileTransmissionMethodId, opt => opt.ConvertUsing(new OptionalLookupCodeIdConverter(LookupTypes.FileTransmissionMethod), nameof(BankAccountIntellimatchDto.FileTransmissionMethod)))
.ForMember(dst => dst.FileFormatId, opt => opt.ConvertUsing(new OptionalLookupCodeIdConverter(LookupTypes.FileFormat), nameof(BankAccountIntellimatchDto.FileFormat)))
.ForMember(dst => dst.BankBrokerFeedReceivedId, opt => opt.ConvertUsing(new OptionalLookupCodeIdConverter(LookupTypes.Bank_BrokerFeedReceived), nameof(BankAccountIntellimatchDto.BankBrokerFeedReceived)))
.ForMember(dst => dst.BankBrokerFeesId, opt => opt.ConvertUsing(new OptionalLookupCodeIdConverter(LookupTypes.Bank_BrokerFees), nameof(BankAccountIntellimatchDto.BankBrokerFees)))
.ForMember(dst => dst.PortNumber, opt => opt.MapFrom(src => string.IsNullOrEmpty(src.PortNumber) ? (int?)null : Convert.ToInt32(src.PortNumber)))
.ForMember(dst => dst.FileTransmissionMethod, opt => opt.Ignore())
.ForMember(dst => dst.FileFormat, opt => opt.Ignore())
.ForMember(dst => dst.BankBrokerFeedReceived, opt => opt.Ignore())
.ForMember(dst => dst.BankBrokerFees, opt => opt.Ignore())
;
//CreateMap<BankOverviewDto, BankAccount>()
// .ForMember(dst => dst.BankBrokerFeedReceivedId, opt => opt.ConvertUsing(new OptionalLookupCodeIdConverter(LookupTypes.Bank_BrokerFeedReceived), nameof(BankAccountIntellimatchDto.BankBrokerFeedReceived)))
// .ForMember(dst => dst.BankBrokerFeesId, opt => opt.ConvertUsing(new OptionalLookupCodeIdConverter(LookupTypes.Bank_BrokerFees), nameof(BankAccountIntellimatchDto.BankBrokerFees)))
// // .ForMember(dst => dst.BankBrokerFeesNotes, opt => opt.MapFrom(src => src.BankBrokerFeesNotes))
// // .ForMember(dst=>dst.BankBrokerFeedReceived,opt=>opt.MapFrom(src=>src.BankBrokerFeedReceived))
// .ForMember(dst => dst.BankBrokerFeesNotes, opt => opt.MapFrom(src => src.BankBrokerFeesNotes))
// // .ForMember(dst => dst.BankBrokerFees, opt => opt.MapFrom(src => src.BankBrokerFees))
// .ForAllOtherMembers(opt => opt.Ignore());
//;
CreateMap<BankAccountIntellimatchDto, Approval>()
.ForMember(dst => dst.Id, opt => opt.Ignore())
.ForMember(dst => dst.ProfileId, opt => opt.MapFrom(src => src.Id)) // Won't show this on user profile, this is a account, not a contact
.ForMember(dst => dst.ProfileType, opt => opt.MapFrom(src => ProfileType.BankAccount))
.ForMember(dst => dst.PendingType, opt => opt.MapFrom(src => PendingType.Update)) // delete won't be here
.ForMember(dst => dst.TabName, opt => opt.MapFrom(src => ProfileTabName.Intellimatch.ToString()))
.ForMember(dst => dst.RequestSource, opt => opt.MapFrom(src => RequestSource.Internal))
// Set after map
//.ForMember(dst => dst.ProfileName, opt => opt.MapFrom(src => src.User != null ? src.User.Overview.UserName : ""))
//.ForMember(dst => dst.FundId, opt => opt.MapFrom(src => src.)) // show on fund
//.ForMember(dst => dst.ProfileIdOfRoleCheck, opt => opt.MapFrom(src => src.CompanyId ?? 0)) // show on company profile for exist company
//.ForMember(dst => dst.HubTaskSetId, opt => opt.MapFrom(src => (int)src.AccountType)) // distinct with account type
.ForMember(dst => dst.ApprovalData, opt => opt.MapFrom(src => JsonSerializer.Serialize(src, new JsonSerializerOptions(JsonSerializerDefaults.Web))))
;
CreateMap<BankAccountAdditionalDetailsDto, BankAccount>()
.IncludeBase<IntermediaryBankInformationDto, BankAccount>()
.ForMember(dst => dst.BeneficiaryState, opt => opt.MapFrom(src => src.State))
.ForMember(dst => dst.State, opt => opt.Ignore());
CreateMap<IntermediaryBankInformationDto, BankAccount>()
;
CreateMap<BankAccount, IntermediaryBankInformationDto>();
CreateMap<BankAccountAdditionalDetailsDto, Approval>()
.ForMember(dst => dst.Id, opt => opt.Ignore())
.ForMember(dst => dst.ProfileId, opt => opt.MapFrom(src => src.Id)) // Won't show this on user profile, this is a account, not a contact
.ForMember(dst => dst.ProfileType, opt => opt.MapFrom(src => ProfileType.BankAccount))
.ForMember(dst => dst.PendingType, opt => opt.MapFrom(src => PendingType.Update)) // delete won't be here
.ForMember(dst => dst.TabName, opt => opt.MapFrom(src => ProfileTabName.AdditionalDetails.ToString()))
.ForMember(dst => dst.RequestSource, opt => opt.MapFrom(src => RequestSource.Internal))
// Set after map
//.ForMember(dst => dst.ProfileName, opt => opt.MapFrom(src => src.User != null ? src.User.Overview.UserName : ""))
//.ForMember(dst => dst.FundId, opt => opt.MapFrom(src => src.)) // show on fund
//.ForMember(dst => dst.ProfileIdOfRoleCheck, opt => opt.MapFrom(src => src.CompanyId ?? 0)) // show on company profile for exist company
//.ForMember(dst => dst.HubTaskSetId, opt => opt.MapFrom(src => (int)src.AccountType)) // distinct with account type
.ForMember(dst => dst.ApprovalData, opt => opt.MapFrom(src => JsonSerializer.Serialize(src, new JsonSerializerOptions(JsonSerializerDefaults.Web))))
;
CreateMap<CreateBankAccountDto, BankAccount>()
.BeforeMap((src, dst) =>
{
if (src.BankingInformation != null)
{
src.FileTransmissionDetails ??= new BankAccountIntellimatchDto();
if (src.IntermediaryBankInformation == null && !string.IsNullOrEmpty(src.BankingInformation.Comments))
{
src.IntermediaryBankInformation = new IntermediaryBankInformationDto
{
Comments = src.BankingInformation.Comments
};
}
else if (src.IntermediaryBankInformation != null)
{
src.IntermediaryBankInformation.Comments = src.BankingInformation.Comments;
}
if (src.BeneficiaryInformation == null && !string.IsNullOrEmpty(src.BankingInformation.Comments))
{
src.BeneficiaryInformation = new BankAccountAdditionalDetailsDto
{
Comments = src.BankingInformation.Comments
};
}
else if (src.BeneficiaryInformation != null)
{
src.BeneficiaryInformation.Comments = src.BankingInformation.Comments;
}
src.FileTransmissionDetails.BankBrokerFeedReceived = src.BankingInformation.BankBrokerFeedReceived;
src.FileTransmissionDetails.BankBrokerFees = src.BankingInformation.BankBrokerFees;
src.FileTransmissionDetails.BankBrokerFeesNotes = src.BankingInformation.BankBrokerFeesNotes;
}
if (src.IntermediaryBankInformation == null) return;
src.BeneficiaryInformation ??= new BankAccountAdditionalDetailsDto();
src.BeneficiaryInformation.AccountWithInstitutionAccountNumber = src.IntermediaryBankInformation.AccountWithInstitutionAccountNumber;
src.BeneficiaryInformation.AccountWithInstitutionBIC = src.IntermediaryBankInformation.AccountWithInstitutionBIC;
src.BeneficiaryInformation.IntermediaryBank = src.IntermediaryBankInformation.IntermediaryBank;
src.BeneficiaryInformation.IntermediaryBankBIC = src.IntermediaryBankInformation?.IntermediaryBankBIC;
})
.ForMember(dst => dst.BankId, opt => opt.MapFrom(src => src.BankingInformation.Id))
.AfterMap((src, dst, ctx) =>
{
ctx.Mapper.Map(src.AccountDetail, dst);
ctx.Mapper.Map(src.FileTransmissionDetails, dst);
ctx.Mapper.Map(src.IntermediaryBankInformation, dst);
ctx.Mapper.Map(src.BeneficiaryInformation, dst);
});
CreateMap<BankAccount, CreateBankAccountDto>()
.BeforeMap((src, dst) =>
{
dst.AccountDetail ??= new BankAccountOverviewDto();
dst.FileTransmissionDetails ??= new BankAccountIntellimatchDto();
dst.IntermediaryBankInformation ??= new IntermediaryBankInformationDto();
dst.BeneficiaryInformation ??= new BankAccountAdditionalDetailsDto();
dst.BankingInformation ??= new BankOverviewDto();
})
.ForMember(dst => dst.AccountDetail, opt => opt.MapFrom(x => x))
.ForMember(dst => dst.FileTransmissionDetails, opt => opt.MapFrom(x => x))
.ForMember(dst => dst.IntermediaryBankInformation, opt => opt.MapFrom(x => x))
.ForMember(dst => dst.BeneficiaryInformation, opt => opt.MapFrom(x => x))
.ForMember(dst => dst.BankingInformation, opt =>
{
opt.PreCondition(src => src.Bank != null);
opt.MapFrom(x => x.Bank);
});
;
CreateMap<CreateBankAccountDto, Approval>()
.BeforeMap((src, dst) =>
{
if (src.AccountDetail != null)
{
dst.ProfileName = src.AccountDetail.AccountName;
}
})
.ForMember(dst => dst.Id, opt => opt.Ignore())
.ForMember(dst => dst.ProfileId, opt => opt.MapFrom(src => src.Id)) // show on user when add with exist user
.ForMember(dst => dst.ProfileType, opt => opt.MapFrom(src => ProfileType.BankAccount))
.ForMember(dst => dst.PendingType, opt => opt.MapFrom(src => PendingType.Create)) // delete won't be here
.ForMember(dst => dst.TabName, opt => opt.MapFrom(src => ProfileType.BankAccount.ToString()))
.ForMember(dst => dst.RequestSource, opt => opt.MapFrom(src => RequestSource.Internal))
.ForMember(dst => dst.FundId, opt => opt.MapFrom(src => src.AccountDetail.Entity.Id)) // show on fund
.ForMember(dst => dst.ProfileIdOfRoleCheck, opt => opt.MapFrom(src => src.AccountDetail.Entity.Id)) // show on account contact
.ForMember(dst => dst.ApprovalData, opt => opt.MapFrom(src => JsonSerializer.Serialize(src, new JsonSerializerOptions(JsonSerializerDefaults.Web))))
;
CreateMap<CreateBankAccountDto, RelatedBankAccountDto>()
.ForMember(dst => dst.Id, opt => opt.Ignore())
.ForMember(dst => dst.AccountName, opt => opt.MapFrom(src => src.AccountDetail.AccountName)) // Won't show this on user profile, this is a account, not a contact
.ForMember(dst => dst.BankName, opt => opt.MapFrom(src => src.BankingInformation.BankName))
.ForMember(dst => dst.EntityName, opt => opt.MapFrom(src => src.AccountDetail.Entity.ShortDealName)) // delete won't be here
.ForMember(dst => dst.AccountNumber, opt => opt.MapFrom(src => src.AccountDetail.AccountNumber))
.ForMember(dst => dst.AccountOwner, opt => opt.MapFrom(src => src.AccountDetail.AccountOwner))
.ForMember(dst => dst.Agreement, opt => opt.MapFrom(src => src.AccountDetail.Agreement))
;
CreateMap<ApprovalDto<CreateBankAccountDto>, RelatedBankAccountDto>()
.ConstructUsing((src, context) =>
{
var dto = new RelatedBankAccountDto();
context.Mapper.Map<CreateBankAccountDto, RelatedBankAccountDto>(src.PendingData, dto);
return dto;
})
.ForMember(dst => dst.Id, opt => opt.Ignore()) //!!! dont' map approval.Id to contact.Id
//.ForMember(dst => dst.Operations, opt => opt.Ignore())
.ForMember(dst => dst.PendingApproval, opt => opt.MapFrom(src => src))
;
}
}