public GetContactEmailsResponse GetContactEmails(GetContactEmailsRequest request) { Logger.Current.Informational("Request received to fetch contact emails (ImportDataService)"); GetContactEmailsResponse response = new GetContactEmailsResponse(); if (request.EntityType == NeverBounceEntityTypes.Imports || request.EntityType == NeverBounceEntityTypes.Tags) { response.Contacts = importRepository.GetContactEmails(request.EntityType, request.EntityIds); } else if (request.EntityType == NeverBounceEntityTypes.SavedSearches) { List <ReportContact> reportContacts = new List <ReportContact>(); if (!string.IsNullOrEmpty(request.EntityIds)) { try { List <string> Ids = request.EntityIds.Split(',').ToList(); Logger.Current.Informational("Running SavedSearches " + request.EntityIds); Ids.ForEach(f => { var task = Task.Run(() => advancedSearchService.GetContactEmails(new S.GetContactEmailsRequest() { AccountId = request.AccountId, SearchDefinitionID = int.Parse(f) })); var contacts = MapToReportContacts(task.Result); if (contacts != null && contacts.Any()) { Logger.Current.Informational("Count of contacts found for savedsearch " + f + " is " + contacts.Count); contacts = contacts.Where(w => !string.IsNullOrEmpty(w.email)).ToList(); Logger.Current.Informational("No of contacts with valid emails found : " + contacts.Count); reportContacts.AddRange(contacts); } }); reportContacts = reportContacts.Distinct().ToList(); } catch (Exception ex) { Logger.Current.Error("An error occured while fetching data from elasticsearch", ex); throw; } } response.Contacts = reportContacts; } else { response.Contacts = null; } return(response); }