public void AddAndFindSearchResult(string providerCode, string consumerCode, int errorCode, string details, string providerPublisher, double searchDurationSeconds, string consumerOdsCodeInput, string providerOdsCodeInput, string searchDateRangeInput)
        {
            var searchGroup = AddSearchGroup(consumerOdsCodeInput, providerOdsCodeInput, searchDateRangeInput);

            var searchResult = new DTO.Request.Application.SearchResult
            {
                SearchGroupId         = searchGroup.SearchGroupId,
                ProviderCode          = providerCode,
                ConsumerCode          = consumerCode,
                ErrorCode             = errorCode,
                Details               = details,
                ProviderPublisher     = providerPublisher,
                SearchDurationSeconds = searchDurationSeconds
            };

            var result = _applicationService.AddSearchResult(searchResult);

            Assert.IsType <SearchResult>(result);
            Assert.NotNull(result);
            Assert.True(result.SearchGroupId > 0);
            Assert.True(result.SearchResultId > 0);

            var foundSearchResult = _applicationService.GetSearchResult(result.SearchResultId, _user.UserId);

            Assert.IsType <SearchResult>(foundSearchResult);
            Assert.NotNull(foundSearchResult);
            Assert.True(foundSearchResult.SearchGroupId > 0);
            Assert.True(foundSearchResult.SearchResultId > 0);
            Assert.Equal(foundSearchResult.ProviderOdsCode, providerCode);
            Assert.Equal(foundSearchResult.ConsumerOdsCode, consumerCode);
            Assert.Equal(foundSearchResult.SearchDurationSeconds, searchDurationSeconds);
            Assert.Equal(foundSearchResult.ProviderPublisher, providerPublisher);
        }
        public SearchResult AddSearchResult(DTO.Request.Application.SearchResult searchResult)
        {
            var functionName = "application.add_search_result";
            var parameters   = new DynamicParameters();

            parameters.Add("_search_group_id", searchResult.SearchGroupId);
            parameters.Add("_provider_ods_code", searchResult.ProviderCode);
            parameters.Add("_consumer_ods_code", searchResult.ConsumerCode);
            parameters.Add("_error_code", searchResult.ErrorCode);
            parameters.Add("_details", searchResult.Details);
            parameters.Add("_provider_publisher", searchResult.ProviderPublisher);
            parameters.Add("_search_duration_seconds", searchResult.SearchDurationSeconds);
            parameters.Add("_consumer_organisation_type", searchResult.ConsumerOrganisationType);
            var result = _dataService.ExecuteFunction <SearchResult>(functionName, parameters).FirstOrDefault();

            if (searchResult.SpineMessageId != null && result != null)
            {
                _logService.UpdateSpineMessageLog(searchResult.SpineMessageId.Value, result.SearchResultId);
            }
            return(result);
        }
        public void GetSearchResultByGroup(string providerCode, string consumerCode, int errorCode, string details, string providerPublisher, double searchDurationSeconds, string consumerOdsCodeInput, string providerOdsCodeInput, string searchDateRangeInput)
        {
            var searchGroup  = AddSearchGroup(consumerOdsCodeInput, providerOdsCodeInput, searchDateRangeInput);
            var searchResult = new DTO.Request.Application.SearchResult
            {
                SearchGroupId         = searchGroup.SearchGroupId,
                ProviderCode          = providerCode,
                ConsumerCode          = consumerCode,
                ErrorCode             = errorCode,
                Details               = details,
                ProviderPublisher     = providerPublisher,
                SearchDurationSeconds = searchDurationSeconds
            };

            var result = _applicationService.AddSearchResult(searchResult);
            var foundSearchResultByGroup = _applicationService.GetSearchResultByGroup(searchGroup.SearchGroupId, _user.UserId);

            Assert.IsType <List <SlotEntrySummary> >(foundSearchResultByGroup);
            Assert.True(foundSearchResultByGroup.Count > 0);
            Assert.Contains(foundSearchResultByGroup, x => x.ProviderOdsCode == providerCode);
            Assert.Contains(foundSearchResultByGroup, x => x.ConsumerOdsCode == consumerCode);
            Assert.Contains(foundSearchResultByGroup, x => x.ProviderPublisher == providerPublisher);
            Assert.Contains(foundSearchResultByGroup, x => x.SearchSummaryDetail == details);
        }