public async Task <IActionResult> Get(long sinumber, [FromQuery] DateTime referenceDate) { var getPersonalDataResponse = await _thabService.GetPersonalDataAsync(new GetPersonalDataRequest { SiNumber = sinumber }); if (getPersonalDataResponse?.Value?.PersonalData == null) { throw new Exception($"Person with sinr {sinumber} not found"); } var pdata = getPersonalDataResponse.Value.PersonalData; var localFileName = string.Format("Opvragen gegevens THAB_{0}_{1}_{2}.docx", pdata.FirstNameMember, pdata.NameMember, Guid.NewGuid()); var fileName = string.Format("Opvragen gegevens THAB_{0}_{1}.docx", pdata.FirstNameMember, pdata.NameMember); var docsPath = Path.Combine(_environment.ContentRootPath, "Docs", "Thab"); string originalFile; if (pdata.Federation < 400) { switch (pdata.Federation) { case (304): case (309): case (311): case (322): originalFile = Path.Combine(docsPath, $"Opvragen gegevens THAB {pdata.Federation}.dotx"); break; default: originalFile = Path.Combine(docsPath, "Opvragen gegevens THAB 300.dotx"); break; } } else { originalFile = Path.Combine(docsPath, "Opvragen gegevens THAB 400.dotx"); } var newFile = Path.Combine(Path.GetTempPath(), localFileName); System.IO.File.Copy(originalFile, newFile); var street_nr = pdata.StreetContact; if (!string.IsNullOrWhiteSpace(pdata.HouseNumberContact)) { street_nr += " " + pdata.HouseNumberContact; } if (!string.IsNullOrWhiteSpace(pdata.NumberBoxContact)) { street_nr += " " + pdata.NumberBoxContact; } var dict = new Dictionary <string, string> { { "A_Name", pdata.NameContact }, { "A_FirstName", pdata.FirstNameContact }, { "A_Street&Nr", street_nr }, { "A_ZipCode&City", pdata.ZipCodeContact + " " + pdata.CityContact }, { "A_Date", DateTime.Now.ToString("dd-MM-yyyy") }, { "B_Insz", pdata.Insz }, { "C_Title", pdata.GenderMember == 1 ? "heer" : "mevrouw" }, { "C_Name", pdata.NameMember }, { "C_ReferenceDate", referenceDate.ToString("dd-MM-yyyy") }, { "D_FreeField", " " } }; using (var doc = WordprocessingDocument.Open(newFile, true)) { doc.ChangeDocumentType(WordprocessingDocumentType.Document); var mainPart = doc.MainDocumentPart; DocumentCoreGenerator.RunElements(mainPart.Document.Body, dict); mainPart.Document.Save(); doc.Close(); } string applicationType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; HttpContext.Response.ContentType = applicationType; var bytes = await System.IO.File.ReadAllBytesAsync(newFile); FileContentResult result = new FileContentResult(bytes, applicationType) { FileDownloadName = fileName }; return(result); }