public AcApiResponse <SavePersonalIDImageResponse, ApiData> SavePersonalIDImage(ViewModels.Consumer.SavePersonalIDImageRequest vm) { // Convert from viewmodel to transaction model -- base64 string to bytearray. var imageItems = new List <ImageItemType>(); foreach (var image in vm.PersonalIDImage.ImageItems) { if (!string.IsNullOrEmpty(image.Image)) //add only non-empty images { imageItems.Add(new ImageItemType { Image = System.Convert.FromBase64String(image.Image).ToList(), Label = image.Label }); } } if (imageItems.Count == 0) //photocopy flow { imageItems = null; } var personalIdType = new PersonalIDImageContentType { Identifier = vm.PersonalIDImage.Identifier, PersonalIDChoice = vm.PersonalIDImage.PersonalIDChoice, PersonalIDNumber = vm.PersonalIDImage.PersonalIDNumber, PersonalIDVerificationStr = vm.PersonalIDImage.PersonalIDVerificationStr, MimeType = vm.PersonalIDImage.MimeType, ImageItems = imageItems }; var req = new SavePersonalIDImageRequest { AgentID = vm.AgentID, AgentSequence = vm.AgentSequence, ChannelType = vm.ChannelType, ClientSoftwareVersion = vm.ClientSoftwareVersion, ConsumerProfileID = vm.ConsumerProfileID, ConsumerProfileIDType = vm.ConsumerProfileIDType, Language = vm.Language, MgiSessionID = vm.MgiSessionID, OperatorName = vm.OperatorName, PoeCapabilities = vm.PoeCapabilities, PoeType = vm.PoeType, TargetAudience = vm.TargetAudience, TimeStamp = vm.TimeStamp, UnitProfileID = vm.UnitProfileID, PersonalIDImage = personalIdType }; var resp = _agentConnectIntegration.SavePersonalIDImage(req); var apiResp = new AcApiResponse <SavePersonalIDImageResponse, ApiData> { BusinessMetadata = MapperHelper.SetResponseProperties(resp.Payload?.Flags, DataSource.AgentConnect), ResponseData = resp }; return(apiResp); }