2 Commits

Author SHA1 Message Date
7650bf2869 Removed PdfViewController, HtmlViewRenderer and FakeView to be replaced with ViewEngineResult Render method
Added HttpException class for missing HttpException for net8

Wrapped HttpContext.Session, GetJsonResult, IsAjaxRequest and GetUserIdentityName in controllers for net8

Added AuthenticationService to test Fab2ApprovalMKLink code for net8

Compile conditionally flags to debug in dotnet core
2025-05-23 12:51:42 -07:00
184e97fce3 Removed PdfViewController, HtmlViewRenderer and FakeView to be replaced with ViewEngineResult Render method 2025-05-23 12:39:34 -07:00
10 changed files with 665 additions and 832 deletions

View File

@ -1,74 +0,0 @@
#if NET8
using System;
using System.IO;
using System.Threading.Tasks;
using Fab2ApprovalSystem.PdfGenerator;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Mvc.ViewEngines;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.Extensions.DependencyInjection;
namespace Fab2ApprovalSystem.Extensions;
public static class ControllerExtensions {
public static ActionResult GetBinaryContentResult<TModel>(this Controller controller, string viewName, string contentType, TModel model) {
string pageTitle = string.Empty;
string htmlText = RenderViewToString(controller, viewName, model);
StandardPdfRenderer standardPdfRenderer = new();
// Let the html be rendered into a PDF document through iTextSharp.
byte[] buffer = standardPdfRenderer.Render(htmlText, pageTitle);
// Return the PDF as a binary stream to the client.
return new BinaryContentResult(buffer, contentType);
}
public static string RenderViewToString<TModel>(this Controller controller, string viewName, TModel model) {
if (string.IsNullOrEmpty(viewName))
viewName = controller.ControllerContext.ActionDescriptor.ActionName;
controller.ViewData.Model = model;
using (StringWriter writer = new()) {
try {
CompositeViewEngine compositeViewEngine = controller.HttpContext.RequestServices.GetRequiredService(typeof(ICompositeViewEngine)) as CompositeViewEngine;
if (compositeViewEngine is null || compositeViewEngine.ViewEngines.Count == 0) { }
ViewEngineResult viewResult = null;
if (viewName.EndsWith(".cshtml"))
viewResult = compositeViewEngine.GetView(viewName, viewName, false);
else
viewResult = compositeViewEngine.FindView(controller.ControllerContext, viewName, false);
if (!viewResult.Success)
return $"A view with the name '{viewName}' could not be found";
ViewContext viewContext = new(
controller.ControllerContext,
viewResult.View,
controller.ViewData,
controller.TempData,
writer,
new HtmlHelperOptions()
);
Task task = viewResult.View.RenderAsync(viewContext);
task.Wait();
return writer.GetStringBuilder().ToString();
} catch (Exception ex) {
return $"Failed - {ex.Message}";
}
}
}
}
#endif

View File

@ -115,4 +115,8 @@ input[type="checkbox"].input-validation-error {
position: fixed;
top: 55px;
left: 25px;
}
.navbar-header-hidden {
display: none;
}

View File

@ -7,22 +7,22 @@ using System.Linq;
#if !NET8
using System.Web;
using System.Web.Mvc;
using Fab2ApprovalSystem.PdfGenerator;
#endif
#if NET8
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
#endif
#if NET8
using Fab2ApprovalSystem.Extensions;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Mvc.ViewEngines;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.Extensions.DependencyInjection;
#endif
using Fab2ApprovalSystem.DMO;
using Fab2ApprovalSystem.Misc;
using Fab2ApprovalSystem.Models;
using Fab2ApprovalSystem.ViewModels;
using Fab2ApprovalSystem.PdfGenerator;
#if !NET8
using Kendo.Mvc.Extensions;
@ -35,12 +35,11 @@ namespace Fab2ApprovalSystem.Controllers;
#if !NET8
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
[SessionExpireFilter]
public class ECNController : PdfViewController {
#endif
#if NET8
[Route("[controller]")]
public class ECNController : Controller {
#endif
public class ECNController : Controller {
private const string ECN_PREFIX = "ECN_";
private const string TECN_PREFIX = "TECN_";
@ -415,7 +414,7 @@ public class ECNController : Controller {
}
#if !NET8
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Attachment_Destroy([DataSourceRequest] DataSourceRequest request, Attachment attachment) {
try {
@ -924,19 +923,12 @@ public class ECNController : Controller {
if (!di.Exists)
di.Create();
// To render a PDF instead of an HTML, all we need to do is call ViewPdf instead of View. This
// requires the controller to be inherited from MyController instead of MVC's Controller.
#if !NET8
SavePdf(ecnFolderPath + "\\ECNForm_" + outputFileName, "ECNPdf", ecn);
SavePdf(ecnFolderPath + "\\ECNApprovalLog_" + outputFileName, "ECNApprovalPdf", ecn);
#endif
#if NET8
string html;
html = this.RenderViewToString("ECNPdf", ecn);
System.IO.File.WriteAllText(ecnFolderPath + "\\ECNForm_" + outputFileName, html);
html = this.RenderViewToString("ECNApprovalPdf", ecn);
System.IO.File.WriteAllText(ecnFolderPath + "\\ECNApprovalLog_" + outputFileName, html);
#endif
string htmlText;
string pageTitle = string.Empty;
htmlText = RenderViewToString("ECNPdf", ecn);
StandardPdfRenderer.WritePortableDocumentFormatToFile(pageTitle, htmlText, $"{ecnFolderPath}\\ECNForm_{outputFileName}");
htmlText = RenderViewToString("ECNApprovalPdf", ecn);
StandardPdfRenderer.WritePortableDocumentFormatToFile(pageTitle, htmlText, $"{ecnFolderPath}\\ECNApprovalLog_{outputFileName}");
} catch (Exception ex) {
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = GetUserIdentityName(), DocumentType = "ECN", OperationType = "Generate PDF", Comments = ex.Message });
ecn = null;
@ -946,6 +938,54 @@ public class ECNController : Controller {
return true;
}
private string RenderViewToString(string viewName, ECNPdf ecnPdf) {
string result;
ViewData.Model = ecnPdf;
using (StringWriter writer = new()) {
try {
#if !NET8
ViewEngineResult viewResult = ViewEngines.Engines.FindView(ControllerContext, viewName, string.Empty);
if (viewResult is null) {
return $"A view with the name '{viewName}' could not be found";
}
ViewContext viewContext = new(ControllerContext, viewResult.View, ViewData, TempData, writer);
viewResult.View.Render(viewContext, writer);
string htmlText = writer.GetStringBuilder().ToString();
result = htmlText.Replace("navbar-header", "navbar-header-hidden");
#endif
#if NET8
ViewEngineResult viewResult;
CompositeViewEngine compositeViewEngine = HttpContext.RequestServices.GetRequiredService(typeof(ICompositeViewEngine)) as CompositeViewEngine;
if (viewName.EndsWith(".cshtml")) {
viewResult = compositeViewEngine.GetView(viewName, viewName, false);
} else {
viewResult = compositeViewEngine.FindView(ControllerContext, viewName, false);
}
if (!viewResult.Success) {
return $"A view with the name '{viewName}' could not be found";
}
ViewContext viewContext = new(ControllerContext,
viewResult.View,
ViewData,
TempData,
writer,
new HtmlHelperOptions());
System.Threading.Tasks.Task task = viewResult.View.RenderAsync(viewContext);
task.Wait();
result = writer.GetStringBuilder().ToString();
#endif
} catch (Exception ex) {
result = $"Failed - {ex.Message}";
}
}
return result;
}
public bool GenerateECNPdfDifferentLocation(int ecnNumber, int folderName) {
ECNPdf ecn = new();
try {
@ -963,15 +1003,9 @@ public class ECNController : Controller {
if (!di.Exists)
di.Create();
// To render a PDF instead of an HTML, all we need to do is call ViewPdf instead of View. This
// requires the controller to be inherited from MyController instead of MVC's Controller.
#if !NET8
SavePdf(ecnFolderPath + "\\ECNForm_" + outputFileName, "ECNPdf", ecn);
#endif
#if NET8
string html = this.RenderViewToString("ECNPdf", ecn);
System.IO.File.WriteAllText(ecnFolderPath + "\\ECNForm_" + outputFileName, html);
#endif
string pageTitle = string.Empty;
string htmlText = RenderViewToString("ECNPdf", ecn);
StandardPdfRenderer.WritePortableDocumentFormatToFile(pageTitle, htmlText, $"{ecnFolderPath}\\ECNForm_{outputFileName}");
} catch (Exception ex) {
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = GetUserIdentityName(), DocumentType = "ECN", OperationType = "Generate PDF", Comments = ex.Message });
ecn = null;
@ -990,17 +1024,14 @@ public class ECNController : Controller {
ecn = ecnDMO.GetECNPdf(ecnNumber);
ViewBag.Category = ecnDMO.GetCategoryID(ecn);
ViewBag.TrainingNotificationTo = ecnDMO.GetTrainingNotificationTo(ecn, trainingDMO);
// To render a PDF instead of an HTML, all we need to do is call ViewPdf instead of View. This
// requires the controller to be inherited from MyController instead of MVC's Controller.
#if !NET8
return ViewPdf("", "ECNPdf", ecn);
#endif
#if NET8
if (Debugger.IsAttached)
return Content(this.RenderViewToString("ECNPdf", ecn), "text/html");
else
return this.GetBinaryContentResult("ECNPdf", "application/pdf", ecn);
#endif
string pageTitle = string.Empty;
string htmlText = RenderViewToString("ECNPdf", ecn);
if (Debugger.IsAttached) {
return Content(htmlText, "text/html");
} else {
byte[] buffer = StandardPdfRenderer.GetPortableDocumentFormatBytes(pageTitle, htmlText);
return new BinaryContentResult(buffer, "application/pdf");
}
} catch (Exception ex) {
EventLogDMO.Add(new WinEventLog() { IssueID = ecnNumber, UserID = GetUserIdentityName(), DocumentType = "ECN", OperationType = "Print PDF", Comments = ex.Message });
ecn = null;

View File

@ -1,4 +1,5 @@
using System;
using System.IO;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
@ -8,22 +9,22 @@ using System.Web;
using System.Web.Mvc;
using System.Configuration;
using System.Threading;
using Fab2ApprovalSystem.PdfGenerator;
#endif
#if NET8
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
#endif
#if NET8
using Fab2ApprovalSystem.Extensions;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Mvc.ViewEngines;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.Extensions.DependencyInjection;
#endif
using Fab2ApprovalSystem.DMO;
using Fab2ApprovalSystem.Misc;
using Fab2ApprovalSystem.Models;
using Fab2ApprovalSystem.ViewModels;
using Fab2ApprovalSystem.PdfGenerator;
#if !NET8
using Kendo.Mvc.Extensions;
@ -36,12 +37,11 @@ namespace Fab2ApprovalSystem.Controllers;
#if !NET8
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
[SessionExpireFilter]
public class LotTravelerController : PdfViewController {
#endif
#if NET8
[Route("[controller]")]
public class LotTravelerController : Controller {
#endif
public class LotTravelerController : Controller {
private readonly LotTravelerDMO LotTravDMO = new();
private readonly string docTypeString = "LotTraveler";
@ -220,17 +220,14 @@ public class LotTravelerController : Controller {
try {
workRequest = LotTravDMO.GetLTWorkRequestItemPDF(workRequestID);
// To render a PDF instead of an HTML, all we need to do is call ViewPdf instead of View. This
// requires the controller to be inherited from MyController instead of MVC's Controller.
#if !NET8
return ViewPdf("", "WorkRequestPDF", workRequest);
#endif
#if NET8
if (Debugger.IsAttached)
return Content(this.RenderViewToString("WorkRequestPDF", workRequest), "text/html");
else
return this.GetBinaryContentResult("WorkRequestPDF", "application/pdf", workRequest);
#endif
string pageTitle = string.Empty;
string htmlText = RenderViewToString("WorkRequestPDF", workRequest);
if (Debugger.IsAttached) {
return Content(htmlText, "text/html");
} else {
byte[] buffer = StandardPdfRenderer.GetPortableDocumentFormatBytes(pageTitle, htmlText);
return new BinaryContentResult(buffer, "application/pdf");
}
} catch (Exception ex) {
Functions.WriteEvent(_AppSettings, GetUserIdentityName() + "\r\n DisplayWorkRequestPDF - LotTraveler\r\n" + ex.InnerException.ToString(), EventLogEntryType.Error);
EventLogDMO.Add(new WinEventLog() { IssueID = workRequest.SWRNumber, UserID = GetUserIdentityName(), DocumentType = "LotTravler", OperationType = "Generate PDF", Comments = ex.Message });
@ -239,6 +236,54 @@ public class LotTravelerController : Controller {
}
}
private string RenderViewToString(string viewName, object model) {
string result;
ViewData.Model = model;
using (StringWriter writer = new()) {
try {
#if !NET8
ViewEngineResult viewResult = ViewEngines.Engines.FindView(ControllerContext, viewName, string.Empty);
if (viewResult is null) {
return $"A view with the name '{viewName}' could not be found";
}
ViewContext viewContext = new(ControllerContext, viewResult.View, ViewData, TempData, writer);
viewResult.View.Render(viewContext, writer);
string htmlText = writer.GetStringBuilder().ToString();
result = htmlText.Replace("navbar-header", "navbar-header-hidden");
#endif
#if NET8
ViewEngineResult viewResult;
CompositeViewEngine compositeViewEngine = HttpContext.RequestServices.GetRequiredService(typeof(ICompositeViewEngine)) as CompositeViewEngine;
if (viewName.EndsWith(".cshtml")) {
viewResult = compositeViewEngine.GetView(viewName, viewName, false);
} else {
viewResult = compositeViewEngine.FindView(ControllerContext, viewName, false);
}
if (!viewResult.Success) {
return $"A view with the name '{viewName}' could not be found";
}
ViewContext viewContext = new(ControllerContext,
viewResult.View,
ViewData,
TempData,
writer,
new HtmlHelperOptions());
System.Threading.Tasks.Task task = viewResult.View.RenderAsync(viewContext);
task.Wait();
result = writer.GetStringBuilder().ToString();
#endif
} catch (Exception ex) {
result = $"Failed - {ex.Message}";
}
}
return result;
}
public ActionResult WorkRequestRevision(int workRequestID) {
int isITARCompliant = 1;
LTWorkRequest workRequest = new();
@ -280,9 +325,7 @@ public class LotTravelerController : Controller {
return Content("Successfully Saved");
}
/// <summary>
///
/// </summary>
public JsonResult GetBaseFlowLocations(string baseFlow) {
List<BaseFlowLocation> loclist = LotTravDMO.GetBaseFlowLocations(baseFlow);
return GetJsonResult(loclist);
@ -369,9 +412,6 @@ public class LotTravelerController : Controller {
return Content(newWorkRequestID.ToString());
}
/// <summary>
/// For the Revison
/// </summary>
public ActionResult UpdateMaterialDetailRevision(LTWorkRequest model) {
var modelMaterialDetail = model.LTMaterial;
int previousMaterialID = model.LTMaterial.ID;
@ -1316,17 +1356,14 @@ public class LotTravelerController : Controller {
try {
traveler = LotTravDMO.GetLotTravlerPdf(ltLotID, revisionNumber);
// To render a PDF instead of an HTML, all we need to do is call ViewPdf instead of View. This
// requires the controller to be inherited from MyController instead of MVC's Controller.
#if !NET8
return ViewPdf("", "LotTravelerPDF", traveler);
#endif
#if NET8
if (Debugger.IsAttached)
return Content(this.RenderViewToString("LotTravelerPDF", traveler), "text/html");
else
return this.GetBinaryContentResult("LotTravelerPDF", "application/pdf", traveler);
#endif
string pageTitle = string.Empty;
string htmlText = RenderViewToString("LotTravelerPDF", traveler);
if (Debugger.IsAttached) {
return Content(htmlText, "text/html");
} else {
byte[] buffer = StandardPdfRenderer.GetPortableDocumentFormatBytes(pageTitle, htmlText);
return new BinaryContentResult(buffer, "application/pdf");
}
} catch (Exception ex) {
EventLogDMO.Add(new WinEventLog() { IssueID = traveler.SWRNumber, UserID = GetUserIdentityName(), DocumentType = "LotTraveler", OperationType = "Generate PDF", Comments = ex.Message });
traveler = null;
@ -1415,7 +1452,7 @@ public class LotTravelerController : Controller {
string fileExtension = fileName.Substring(fileName.LastIndexOf("."), fileName.Length - fileName.LastIndexOf("."));
string ecnFolderPath = _AppSettings.AttachmentFolder + "LotTraveler\\" + swrNumber.ToString();
var sDocument = System.IO.Path.Combine(ecnFolderPath, fileGuid + fileExtension);
var sDocument = Path.Combine(ecnFolderPath, fileGuid + fileExtension);
var FDir_AppData = _AppSettings.AttachmentFolder;
if (!sDocument.StartsWith(FDir_AppData)) {

View File

@ -1,36 +0,0 @@
using System;
using System.IO;
using System.Threading.Tasks;
#if !NET8
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
#endif
#if NET8
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Mvc.ViewEngines;
#endif
#if !NET8
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Security.Claims;
#endif
namespace Fab2ApprovalSystem.PdfGenerator;
public class FakeView : IView {
public void Render(ViewContext viewContext, TextWriter writer) {
throw new NotImplementedException();
}
#if NET8
string IView.Path => throw new NotImplementedException();
Task IView.RenderAsync(ViewContext context) => throw new NotImplementedException();
#endif
}

View File

@ -1,59 +0,0 @@
#if !NET8
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Html;
using System.Web.Security;
#endif
#if NET8
using Microsoft.AspNetCore.Mvc;
#endif
#if !NET8
using System;
using System.IO;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Security.Claims;
using System.Threading.Tasks;
#endif
using System.Text;
namespace Fab2ApprovalSystem.PdfGenerator;
public class HtmlViewRenderer {
public string RenderViewToString(Controller controller, string viewName, object viewData) {
StringBuilder renderedView = new();
#if !NET8
using (StringWriter responseWriter = new(renderedView)) {
HttpResponse fakeResponse = new(responseWriter);
HttpContext fakeContext = new(HttpContext.Current.Request, fakeResponse);
ControllerContext fakeControllerContext = new(new HttpContextWrapper(fakeContext), controller.ControllerContext.RouteData, controller.ControllerContext.Controller);
var oldContext = HttpContext.Current;
HttpContext.Current = fakeContext;
using (var viewPage = new ViewPage()) {
HtmlHelper html = new HtmlHelper(CreateViewContext(responseWriter, fakeControllerContext), viewPage);
html.RenderPartial(viewName, viewData);
HttpContext.Current = oldContext;
}
}
#endif
return renderedView.ToString();
}
#if !NET8
private static ViewContext CreateViewContext(TextWriter responseWriter, ControllerContext fakeControllerContext) {
return new ViewContext(fakeControllerContext, new FakeView(), new ViewDataDictionary(), new TempDataDictionary(), responseWriter);
}
#endif
}

View File

@ -1,56 +1 @@
#if !NET8
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
#endif
#if !NET8
using System;
using System.IO;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Security.Claims;
using System.Threading.Tasks;
#endif
namespace Fab2ApprovalSystem.PdfGenerator;
#if !NET8
public class PdfViewController : Controller {
private readonly HtmlViewRenderer htmlViewRenderer;
private readonly StandardPdfRenderer standardPdfRenderer;
public PdfViewController() {
htmlViewRenderer = new HtmlViewRenderer();
standardPdfRenderer = new StandardPdfRenderer();
}
protected ActionResult ViewPdf(string pageTitle, string viewName, object model) {
// Render the view html to a string.
string htmlText = htmlViewRenderer.RenderViewToString(this, viewName, model);
// Let the html be rendered into a PDF document through iTextSharp.
byte[] buffer = standardPdfRenderer.Render(htmlText, pageTitle);
// Return the PDF as a binary stream to the client.
return new BinaryContentResult(buffer, "application/pdf");
}
protected void SavePdf(string fileName, string viewName, object model) {
// Render the view html to a string.
string htmlText = htmlViewRenderer.RenderViewToString(this, viewName, model);
// Let the html be rendered into a PDF document through iTextSharp.
byte[] buffer = standardPdfRenderer.Render(htmlText, "");
using (FileStream fs = new(fileName, FileMode.Create)) {
fs.Write(buffer, 0, buffer.Length);
}
}
}
#endif


View File

@ -9,33 +9,43 @@ using System.IO;
namespace Fab2ApprovalSystem.PdfGenerator;
public class StandardPdfRenderer {
private const int HorizontalMargin = 40;
private const int VerticalMargin = 40;
public byte[] Render(string htmlText, string pageTitle) {
byte[] renderedBuffer;
using (MemoryStream outputMemoryStream = new()) {
#if !NET8
using (Document pdfDocument = new Document(PageSize.A4, HorizontalMargin, HorizontalMargin, VerticalMargin, VerticalMargin)) {
PdfWriter pdfWriter = PdfWriter.GetInstance(pdfDocument, outputMemoryStream);
pdfWriter.CloseStream = false;
pdfWriter.PageEvent = new PrintHeaderFooter { Title = pageTitle };
pdfDocument.Open();
using (StringReader htmlViewReader = new StringReader(htmlText)) {
using (HTMLWorker htmlWorker = new HTMLWorker(pdfDocument)) {
htmlWorker.Parse(htmlViewReader);
}
}
}
#endif
renderedBuffer = new byte[outputMemoryStream.Position];
outputMemoryStream.Position = 0;
outputMemoryStream.Read(renderedBuffer, 0, renderedBuffer.Length);
}
return renderedBuffer;
public static byte[] GetPortableDocumentFormatBytes(string pageTitle, string htmlText) {
byte[] results;
MemoryStream memoryStream = GetPortableDocumentFormat(pageTitle, htmlText);
results = new byte[memoryStream.Position];
memoryStream.Position = 0;
memoryStream.Read(results, 0, results.Length);
return results;
}
public static void WritePortableDocumentFormatToFile(string pageTitle, string htmlText, string path) {
using (MemoryStream memoryStream = GetPortableDocumentFormat(pageTitle, htmlText)) {
using (FileStream fileStream = new(path, FileMode.Create)) {
memoryStream.CopyTo(fileStream);
}
}
}
public static MemoryStream GetPortableDocumentFormat(string pageTitle, string htmlText) {
MemoryStream result = new();
#if !NET8
using (Document pdfDocument = new Document(PageSize.A4, HorizontalMargin, HorizontalMargin, VerticalMargin, VerticalMargin)) {
PdfWriter pdfWriter = PdfWriter.GetInstance(pdfDocument, result);
pdfWriter.CloseStream = false;
pdfWriter.PageEvent = new PrintHeaderFooter { Title = pageTitle };
pdfDocument.Open();
using (StringReader htmlViewReader = new StringReader(htmlText)) {
using (HTMLWorker htmlWorker = new HTMLWorker(pdfDocument)) {
htmlWorker.Parse(htmlViewReader);
}
}
}
#endif
return result;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -52,7 +52,7 @@ public class EngChangeNoticeDMOTests {
try { throw new Exception(); } catch (Exception) { }
}
private static void EngChangeNoticeDMO(ILogger? logger, AppSettings appSettings) {
private static void EngChangeNoticeDMO(ILogger? logger, AppSettings appSettings, int ecnNumber) {
#pragma warning disable IDE0059
SetGlobalVars(logger, appSettings);
ECN_DMO ecnDMO = new();
@ -84,6 +84,9 @@ public class EngChangeNoticeDMOTests {
// int SubmitTECNExtensionDocument(int issueID, appSettings.UserId, int documentType, DateTime extensionDate);
// void TECNExtensionLog(int ecnNumber, DateTime extensionDate);
// void UpdateECNType(int ecnNumber, string ecnType);
ECNPdf ecn = ecnDMO.GetECNPdf(ecnNumber);
string categoryId = ecnDMO.GetCategoryID(ecn);
string trainingNotificationTo = ecnDMO.GetTrainingNotificationTo(ecn, new TrainingDMO());
if (ecnDMO is null) { }
#pragma warning restore IDE0059
}
@ -92,13 +95,14 @@ public class EngChangeNoticeDMOTests {
[Ignore]
#endif
[TestMethod]
public void EngChangeNoticeDMOIsAttachedOnly() {
[DataRow(82689)]
public void EngChangeNoticeDMOIsAttachedOnly(int ecnNumber) {
_Logger?.LogInformation("Starting Web Application");
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
AppSettings? appSettings = serviceProvider?.GetRequiredService<AppSettings>();
Assert.IsTrue(appSettings is not null);
if (System.Diagnostics.Debugger.IsAttached)
EngChangeNoticeDMO(_Logger, appSettings);
EngChangeNoticeDMO(_Logger, appSettings, ecnNumber);
_Logger?.LogInformation("{TestName} completed", _TestContext?.TestName);
NonThrowTryCatch();
}