# kritultrathod/ndtreporting architecture

> Architecture diagram of the GitHub repository kritultrathod/ndtreporting, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/kritultrathod/ndtreporting
- Repository: https://github.com/kritultrathod/ndtreporting

## Overview

NDTReporting is an ASP.NET application for Non-Destructive Testing reports. Its main workflow accepts test-report requests through HTTP handlers, uses domain/database classes to save, update, search, or retrieve test records, and exposes report-viewer and PDF output paths. Separate branches cover report-layout/template management, radiographic-weld search, and account/admin pages. The source index and excerpts establish several handler-to-domain and viewer-to-PDF links; unsampled page wiring is not inferred, and the README documents no additional capabilities.

Main entry points: [`src/NDTReporting/HTTPWebHandlers/ReportLayoutViewerHandler.ashx.cs`](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/HTTPWebHandlers/ReportLayoutViewerHandler.ashx.cs) (Layout Viewer Handler), [`src/NDTReporting/HTTPWebHandlers/MagneticParticleTestHandler.ashx.cs`](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/HTTPWebHandlers/MagneticParticleTestHandler.ashx.cs) (Magnetic Handler), [`src/NDTReporting/Domain/MagneticParticleTest.cs`](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/Domain/MagneticParticleTest.cs) (Magnetic Test Data), [`src/NDTReporting/HTTPWebHandlers/UltrasonicTestHandler.ashx.cs`](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/HTTPWebHandlers/UltrasonicTestHandler.ashx.cs) (Ultrasonic Handler)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_testreports["Test Reports"]
  node_mag_handler["Magnetic Handler"]
  node_mag_domain["Magnetic Test Data"]
  node_ut_handler["Ultrasonic Handler"]
  node_ut_db["Ultrasonic Data Access"]
  node_liquid_handler["Liquid Handler"]
  node_liquid_data["Liquid Test Data"]
end

subgraph group_templates["Templates and Layouts"]
  node_layout_handler["Layout Handler"]
  node_layout_view_handler["Layout Viewer Handler"]
  node_report_template["Report Templates<br/>[ReportTemplate.cs]"]
  node_custom_template["Custom Templates"]
end

subgraph group_viewing["Search and Viewing"]
  node_search["Radiographic Search<br/>[SearchReport.cs]"]
  node_mag_view["Magnetic Report Viewer"]
  node_ut_view["Ultrasonic Report Viewer"]
  node_pdf["PDF Creator<br/>[PDFCreator.cs]"]
end

subgraph group_shared["Shared Services"]
  node_account["Account Pages"]
  node_company["Company Details<br/>[CompanyDetails.cs]"]
  node_config["Configuration<br/>[ConfigManager.cs]"]
  node_errors["Error Handling<br/>[HandleError.cs]"]
end

node_user(("User"))
node_sql[("SQL Database")]

node_user -.->|"submits report"| node_mag_handler
node_mag_handler -->|"invokes data operations"| node_mag_domain
node_mag_domain -->|"reads and writes"| node_sql
node_user -.->|"submits report"| node_ut_handler
node_ut_handler -->|"invokes data operations"| node_ut_db
node_ut_db -->|"accesses database"| node_sql
node_user -.->|"submits report"| node_liquid_handler
node_liquid_handler -->|"uses test data"| node_liquid_data
node_user -.->|"manages layouts"| node_layout_handler
node_layout_handler -->|"uses templates"| node_report_template
node_user -.->|"requests layout view"| node_layout_view_handler
node_layout_view_handler -->|"deserializes template"| node_report_template
node_layout_view_handler -->|"deserializes custom layout"| node_custom_template
node_user -.->|"searches reports"| node_search
node_search -->|"queries records"| node_sql
node_user -.->|"views report"| node_mag_view
node_mag_view -->|"creates PDF"| node_pdf
node_user -.->|"views report"| node_ut_view
node_ut_view -->|"creates PDF"| node_pdf
node_user -.->|"registers account"| node_account
node_account -->|"uses company details"| node_company
node_config -->|"handles configuration errors"| node_errors
node_errors -.->|"logs exceptions"| node_sql

click node_mag_handler "https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/HTTPWebHandlers/MagneticParticleTestHandler.ashx.cs"
click node_mag_domain "https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/Domain/MagneticParticleTest.cs"
click node_ut_handler "https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/HTTPWebHandlers/UltrasonicTestHandler.ashx.cs"
click node_ut_db "https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/Domain/DbUltrasonicTest.cs"
click node_liquid_handler "https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/HTTPWebHandlers/LiquidPenetrantTestHandler.ashx.cs"
click node_liquid_data "https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/Domain/LiquidPenetrantTest.cs"
click node_layout_handler "https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/HTTPWebHandlers/ReportLayoutHandler.ashx.cs"
click node_layout_view_handler "https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/HTTPWebHandlers/ReportLayoutViewerHandler.ashx.cs"
click node_report_template "https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/Domain/ReportTemplate.cs"
click node_custom_template "https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/Domain/CustomTemplateGenerator.cs"
click node_search "https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/Domain/SearchReport.cs"
click node_mag_view "https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/MagneticParticleTestReportViewer.aspx.cs"
click node_ut_view "https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/UltrasonicTestReportViewer.aspx.cs"
click node_pdf "https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/Common/PDFCreator.cs"
click node_account "https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/PresentationLayer/Registration.aspx.cs"
click node_company "https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/Domain/CompanyDetails.cs"
click node_config "https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/Common/ConfigManager.cs"
click node_errors "https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/Common/HandleError.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_mag_handler,node_mag_domain,node_ut_handler,node_ut_db,node_liquid_handler,node_liquid_data,node_user toneBlue
class node_layout_handler,node_layout_view_handler,node_report_template,node_custom_template,node_sql toneAmber
class node_search,node_mag_view,node_ut_view,node_pdf toneMint
class node_account,node_company,node_config,node_errors toneRose
```

## Components

### Test Reports

- [Magnetic Handler](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/HTTPWebHandlers/MagneticParticleTestHandler.ashx.cs): `src/NDTReporting/HTTPWebHandlers/MagneticParticleTestHandler.ashx.cs`
- [Magnetic Test Data](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/Domain/MagneticParticleTest.cs): `src/NDTReporting/Domain/MagneticParticleTest.cs`
- [Ultrasonic Handler](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/HTTPWebHandlers/UltrasonicTestHandler.ashx.cs): `src/NDTReporting/HTTPWebHandlers/UltrasonicTestHandler.ashx.cs`
- [Ultrasonic Data Access](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/Domain/DbUltrasonicTest.cs): `src/NDTReporting/Domain/DbUltrasonicTest.cs`
- [Liquid Handler](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/HTTPWebHandlers/LiquidPenetrantTestHandler.ashx.cs): `src/NDTReporting/HTTPWebHandlers/LiquidPenetrantTestHandler.ashx.cs`
- [Liquid Test Data](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/Domain/LiquidPenetrantTest.cs): `src/NDTReporting/Domain/LiquidPenetrantTest.cs`

### Templates and Layouts

- [Layout Handler](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/HTTPWebHandlers/ReportLayoutHandler.ashx.cs): `src/NDTReporting/HTTPWebHandlers/ReportLayoutHandler.ashx.cs`
- [Layout Viewer Handler](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/HTTPWebHandlers/ReportLayoutViewerHandler.ashx.cs): `src/NDTReporting/HTTPWebHandlers/ReportLayoutViewerHandler.ashx.cs`
- [Report Templates](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/Domain/ReportTemplate.cs): `src/NDTReporting/Domain/ReportTemplate.cs`
- [Custom Templates](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/Domain/CustomTemplateGenerator.cs): `src/NDTReporting/Domain/CustomTemplateGenerator.cs`

### Search and Viewing

- [Radiographic Search](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/Domain/SearchReport.cs): `src/NDTReporting/Domain/SearchReport.cs`
- [Magnetic Report Viewer](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/MagneticParticleTestReportViewer.aspx.cs): `src/NDTReporting/MagneticParticleTestReportViewer.aspx.cs`
- [Ultrasonic Report Viewer](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/UltrasonicTestReportViewer.aspx.cs): `src/NDTReporting/UltrasonicTestReportViewer.aspx.cs`
- [PDF Creator](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/Common/PDFCreator.cs): `src/NDTReporting/Common/PDFCreator.cs`

### Shared Services

- [Account Pages](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/PresentationLayer/Registration.aspx.cs): `src/NDTReporting/PresentationLayer/Registration.aspx.cs`
- [Company Details](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/Domain/CompanyDetails.cs): `src/NDTReporting/Domain/CompanyDetails.cs`
- [Configuration](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/Common/ConfigManager.cs): `src/NDTReporting/Common/ConfigManager.cs`
- [Error Handling](https://github.com/kritultrathod/ndtreporting/blob/master/src/NDTReporting/Common/HandleError.cs): `src/NDTReporting/Common/HandleError.cs`

### Other components

- **User**
- **SQL Database**

## Connections

- User → Magnetic Handler: submits report
- Magnetic Handler → Magnetic Test Data: invokes data operations (evidence: `src/NDTReporting/HTTPWebHandlers/MagneticParticleTestHandler.ashx.cs`)
- Magnetic Test Data → SQL Database: reads and writes (evidence: `src/NDTReporting/Domain/MagneticParticleTest.cs`)
- User → Ultrasonic Handler: submits report
- Ultrasonic Handler → Ultrasonic Data Access: invokes data operations (evidence: `src/NDTReporting/HTTPWebHandlers/UltrasonicTestHandler.ashx.cs`)
- Ultrasonic Data Access → SQL Database: accesses database (evidence: `src/NDTReporting/Domain/DbUltrasonicTest.cs`)
- User → Liquid Handler: submits report
- Liquid Handler → Liquid Test Data: uses test data (evidence: `src/NDTReporting/HTTPWebHandlers/LiquidPenetrantTestHandler.ashx.cs`)
- User → Layout Handler: manages layouts
- Layout Handler → Report Templates: uses templates (evidence: `src/NDTReporting/HTTPWebHandlers/ReportLayoutHandler.ashx.cs`)
- User → Layout Viewer Handler: requests layout view
- Layout Viewer Handler → Report Templates: deserializes template (evidence: `src/NDTReporting/HTTPWebHandlers/ReportLayoutViewerHandler.ashx.cs`)
- Layout Viewer Handler → Custom Templates: deserializes custom layout (evidence: `src/NDTReporting/HTTPWebHandlers/ReportLayoutViewerHandler.ashx.cs`)
- User → Radiographic Search: searches reports
- Radiographic Search → SQL Database: queries records (evidence: `src/NDTReporting/Domain/SearchReport.cs`)
- User → Magnetic Report Viewer: views report
- Magnetic Report Viewer → PDF Creator: creates PDF (evidence: `src/NDTReporting/MagneticParticleTestReportViewer.aspx.cs`)
- User → Ultrasonic Report Viewer: views report
- Ultrasonic Report Viewer → PDF Creator: creates PDF (evidence: `src/NDTReporting/UltrasonicTestReportViewer.aspx.cs`)
- User → Account Pages: registers account
- Account Pages → Company Details: uses company details (evidence: `src/NDTReporting/PresentationLayer/Registration.aspx.cs`)
- Configuration → Error Handling: handles configuration errors (evidence: `src/NDTReporting/Common/ConfigManager.cs`)
- Error Handling → SQL Database: logs exceptions
