PdfTrackingService¶
Implements IPdfTrackingService, providing lookup of PDF tracking/status/application/processing code records via IUnitOfWork, and a folder-and-database purge routine that deletes expired PDF working directories (and, per commented-out code, optionally their database records) based on IEnvironmentService's pdfDataDirectory setting. Registers its own AutoMapper maps for the PDF tracking data-model-to-contract conversions in its constructor.
Purpose¶
- Retrieves PDF tracking records by file ID or numeric ID, and resolves status/application/processing code lookups.
- Identifies and purges expired PDF tracking folders (and, when uncommented, their corresponding database rows) older than a cutoff date, optionally scoped to an application type.
- Removes orphaned PDF working folders that no longer have a matching database tracking record.
- Provides a static cutoff-date normalization helper.
Context¶
- Namespace:
SAIF.Services.Utilities.Pdf - Assembly/package:
SAIF.Services(packaged inside theSAIF.SAIFCode.CoreNuGet package)
Public members¶
| Member | Signature | Purpose |
|---|---|---|
| PdfTrackingService(...) | public PdfTrackingService(IEnvironmentService envSvc, IUnitOfWork uow, bool verbose = false) |
Stores the environment and unit-of-work collaborators, sets verbose logging, and registers the AutoMapper maps for PDF tracking/status/application/processing types. |
| GetTrackingInfo(fileId) | public PdfTracking GetTrackingInfo(Guid fileId) |
Returns the tracking record whose FileId case-insensitively matches fileId, mapped to the PdfTracking contract. |
| GetTrackingInfo(id) | public PdfTracking GetTrackingInfo(long id) |
Returns the tracking record with the given numeric id, mapped to the PdfTracking contract. |
| GetStatusType | public PdfStatusType GetStatusType(PdfStatusTypes type) |
Returns the PdfStatusType whose description matches type's name, case-insensitively. |
| GetApplicationType(type) | public PdfApplicationType GetApplicationType(PdfApplicationTypes type) |
Returns the PdfApplicationType whose code matches type's name, case-insensitively. |
| GetApplicationType(code) | public PdfApplicationType GetApplicationType(string code) |
Returns the PdfApplicationType whose code case-insensitively matches code. |
| GetProcessingType | public PdfProcessingType GetProcessingType(PdfProcessingTypes type) |
Returns the PdfProcessingType whose description matches type's name, case-insensitively. |
| Purge(cutoffDate, fileId, commit) | public void Purge(DateTime cutoffDate, Guid fileId, bool commit = true) |
Loads the single tracking record eligible for purge before cutoffDate matching fileId and purges its working folders (deleting from disk only when commit is true). |
| Purge(cutoffDate, appType, commit) | public void Purge(DateTime cutoffDate, PdfApplicationType appType = null, bool commit = true) |
Loads all tracking records eligible for purge before cutoffDate (optionally filtered by appType) and purges each one's working folders, previewing rather than deleting when commit is false. |
| GetCutoffDate | public static DateTime GetCutoffDate(DateTime? cutoffDate) |
Returns cutoffDate, or the current time if null or in the future, clamping purge cutoffs to "now or earlier". |
Behavioral notes¶
Purgeoperates in two phases: purge matching folders on disk (PurgeFolders), then (currently commented out) purge the eligible database records themselves — meaning the current build only removes folders, not tracking rows*.PurgeFolderswallows and logs any exception fromDirectory.Deleterather than propagating it, so a locked or in-use folder does not abort the overall purge run.- The orphaned-folder cleanup path (
PurgeOrphanedFolders, invoked from commented-out "step 3" code) is currently unreachable from the publicPurgeoverloads*. - Registers module-level AutoMapper maps for
PDFApplicationErrorCode,PDFTrackingCode,PDFStatusCode, andPDFTrackingin the constructor viaCreateMappings(), meaning creating multiple instances re-registers the same static AutoMapper configuration*.
Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with ** could not be confirmed; treat as unknown until verified.
Sources¶
- Services/SAIF.Services/Utilities/Pdf/PdfTrackingService.cs