public void Respond() { try { DataDownloadBespokeParameters parameters = new DataDownloadBespokeParameters(Context.Request.Params); var fileInfo = new PracticeProfileFileInfo(parameters.ProfileKey, parameters.GroupIds, parameters.AreaCode); byte[] bytes; if (ApplicationConfiguration.UseFileCache && fileInfo.DoesFileExist) { bytes = File.ReadAllBytes(fileInfo.FilePath); } else { PracticeProfileDataBuilder builder = new PracticeProfileDataBuilder(UsePopulationData(parameters)) { AreaCode = parameters.AreaCode, GroupIds = parameters.GroupIds, AreaTypeId = parameters.AreaTypeId }; var workBook = builder.BuildWorkbook(); ExcelFileWriter writer = new ExcelFileWriter { UseFileCache = ApplicationConfiguration.UseFileCache }; bytes = writer.Write(fileInfo, workBook); } var response = Context.Response; ExportHelper.SetResponseAsExcelFile(response, GetDataDownload.DownloadedFileName + "." + fileInfo.FileExtension); response.BinaryWrite(bytes); } catch (Exception ex) { Context.Response.StatusCode = (int)HttpStatusCode.InternalServerError; ExceptionLog.LogException(ex, Context.Request.Url.AbsoluteUri); } Context.Response.Flush(); }
private static bool UsePopulationData(DataDownloadBespokeParameters parameters) { return parameters.ProfileKey.Equals(QuinaryPopulationKey, StringComparison.InvariantCultureIgnoreCase); }