public When_ProviderProximity_Controller_Download_Provider_Spreadsheet_Is_Called()
        {
            var locationService = Substitute.For <ILocationService>();

            _providerProximityService = Substitute.For <IProviderProximityService>();
            var routePathService = Substitute.For <IRoutePathService>();

            var postcode = "CV1 2WT";
            var filters  = "Digital-Analog";

            _searchParameters = new ProviderProximitySearchParametersDto
            {
                Postcode           = postcode,
                SelectedRouteNames = new List <string>(filters.Split('-'))
            };

            _providerProximityService.GetProviderProximitySpreadsheetDataAsync(
                Arg.Any <ProviderProximitySearchParametersDto>())
            .Returns(
                new FileDownloadDto
            {
                FileName    = "test_file.xlsx",
                ContentType = "application/file",
                FileContent = new byte[] { 01, 02 }
            });

            var providerProximityController = new ProviderProximityController(routePathService, _providerProximityService, locationService);

            _result = providerProximityController.DownloadProviderProximitySpreadsheetAsync(postcode, filters).GetAwaiter().GetResult();
        }
        public async Task <IActionResult> DownloadProviderProximitySpreadsheetAsync(string postcode, string filters)
        {
            var allFilters = string.IsNullOrWhiteSpace(filters)
                ? ""
                : WebUtility.UrlDecode(filters);
            var filtersList = allFilters.Split('-', StringSplitOptions.RemoveEmptyEntries);

            var searchParameters = new ProviderProximitySearchParametersDto
            {
                Postcode           = postcode,
                SearchRadius       = SearchParametersViewModel.DefaultSearchRadius,
                SelectedRouteNames = filtersList
            };

            var downloadedFileInfo = await _providerProximityService.GetProviderProximitySpreadsheetDataAsync(searchParameters);

            return(File(downloadedFileInfo.FileContent,
                        downloadedFileInfo.ContentType,
                        downloadedFileInfo.FileName));
        }