# GestorePDF System Documentation ## Overview GestorePDF is a multi-threaded PDF generation system composed of two main components: - **GestorePDF** (v4.0.0.0) - Main executable project - **GestorePDF.Logic** (v2016.207.1342.27) - Core business logic library ## Architecture ### Component Structure 1. **GestorePDF (Main Application)** - Entry point for the PDF management system - Contains ThreadManager for process initialization 2. **GestorePDF.Logic (Business Logic)** - Core processing engine - Handles PDF generation workflow - Manages thread queuing and execution - Implements error handling and logging ### Key Components #### ThreadManager (GestorePDF) - Main entry point class - Initializes the PDF processing system - Starts the processing logic #### MasterThread (GestorePDF.Logic) - Manages work queue using `ConcurrentQueue` - Processes data threads sequentially - Creates GestoreThread instances for PDF generation - Implements thread-safe processing #### GestoreThread (GestorePDF.Logic) - Core PDF generation worker - Handles both "DIAGNOSI" and "MONITORAGGIO" report types - Features: - PDF generation via PDFGenerator - Error logging and database status updates - Configurable PDF storage options - Document status management - Exception handling and error reporting #### Worker (GestorePDF.Logic) - Task-based processing unit - Manages processing context via PipelineContext - Handles network (Rete) and fiscal code (CodiceFiscale) data ## Process Flow 1. ThreadManager initializes the system 2. MasterThread manages the work queue 3. GestoreThread performs PDF generation: - Processes DIAGNOSI reports - Processes MONITORAGGIO reports - Updates document status - Handles error conditions ## Integration Points - **Database**: SQL Server (DBProvider.SqlServerStampeC6) - **Logging**: NLog system - **PDF Generation**: PDFGenerator component - **Utilities**: ContrattoSei.Utilities ## Configuration - PDF storage options controlled via "SavePDFtoDISK" setting - Supports multiple storage modes: - File system storage - Database storage - Configurable target folders ## Error Handling - Comprehensive exception handling - Error logging to database - Document status recovery - Fault customer tracking ## Performance Considerations - Thread-safe queue implementation - Sequential processing of data threads - Configurable processing delays - Status monitoring and recovery mechanisms ## Template System The system uses `TemplateGenerator.xml` as a configuration file that defines the structure and content of generated PDF reports: 1. **Section Definitions** - Contains detailed definitions of all possible sections (e.g., AreediBisogno, AssetClass, etc.) - Each section defines: - Title - Body content - Detailed descriptions and explanations 2. **Report Templates** - Defines two main report types: - "MONITORAGGIO" - "DIAGNOSI" 3. **Client Customization** - Differentiates templates by: - Contract type: "OLD" vs "PRIVATE" - Client type: "NONPROFFESIONAL" vs "PROFFESIONAL" 4. **Page Layout** - Specifies sections per page - Defines section order - Includes various components (AreediBisogno, AssetClass, etc.) ## Data Sources 1. **SQL Server Database (DBProvider.SqlServerStampeC6)**: - Key Stored Procedures: - `c6martPeriodico.UpdateStatoReport` - report status updates - `[C6MartPeriodico].[GESTIONE_INSERT_CUSTOMER_ERROR]` - error handling - `test.GESTIONE_PDF_PREPARE_TEST_SAMPLE` - data preparation - `[C6Mart].[UT_INSERT_ERROR]` - error logging - `SP_GESTIONE_UPDATE_ELABORAZIONE_PDF` - processing updates 2. **DataThread Structure**: Contains core report generation data: - CodiceFiscale - Rete - TipoContratto - ReportsType - TipoReport ("DIAGNOSI" or "MONITORAGGIO") - NomeFileReport 3. **Data Access Layer**: - Uses `DataAccessLayer` for database access - `DataAccessDE` for specific database operations 4. **Configuration**: - Uses `ConfigurationManager.AppSettings` for parameters: - "SavePDFtoDISK" - "SavePDFtoDISK_Folder" - "SP_GESTIONE_UPDATE_ELABORAZIONE_PDF" ## Data Flow 1. System receives PDF generation request via `DataThread` 2. Retrieves necessary data from database using stored procedures 3. Applies data to template defined in TemplateGenerator.xml 4. Generates final PDF using PDFGenerator component ## Future Enhancements - Support for additional report types - Enhanced error handling and logging - Improved performance optimization - Expanded integration points