private ActionResult GetResultsAsCsvDowloadOrJsonResult <T>(WebServiceReturnTypeEnum webServiceReturnTypeEnum, IEnumerable <T> results, GridSpec <T> gridSpec, string downloadFileDescriptorPrefix) { switch (webServiceReturnTypeEnum) { case WebServiceReturnTypeEnum.CSV: var csv = results.ToCsv(gridSpec); var descriptor = new DownloadFileDescriptor(downloadFileDescriptorPrefix); return(new CsvDownloadResult(descriptor, csv)); case WebServiceReturnTypeEnum.JSON: return(Json(results, JsonRequestBehavior.AllowGet)); default: throw new ArgumentOutOfRangeException($"Invalid return type {webServiceReturnTypeEnum}"); } }
public CsvDownloadResult(DownloadFileDescriptor fileDescriptor, string csv) { CsvContents = csv; FileDescriptor = fileDescriptor; }