ImageService¶
Implements IAgencyImageService, coordinating retrieval, security filtering, adding, editing, and deleting images attached to agencies (ImageAgency). It depends on IUnitOfWork for repository access and transactions, IValidationService for edit validation, IImagingService to retrieve rendered PDF bytes, and IUserProfileService for current-user identity and confidential/deleted/edit role checks. Its static constructor registers AutoMapper maps for ImageAgency/imagingDataModel.Image→Image (deriving Category, IsDeleted, IsConfidential from a locally defined confidential security-level constant) and reuses ImagingMappingHelper.CreateCategoryAndDocumentTypeMap() and AgenciesMappingHelper.CreateAgencyMap().
Purpose¶
- Reports whether the current user can see confidential images, see deleted images, or edit images.
- Associates an existing image with an agency (
AddImage) and retrieves/filters an agency's images subject to confidentiality/deletion visibility. - Edits an image's date, text, document type, and confidentiality, re-associating it with a different agency if requested, with validation and authorization checks.
- Soft-deletes an image by setting its delete code, and retrieves the rendered PDF bytes for an image.
- Retrieves the available agency-image categories.
Context¶
- Namespace:
SAIF.Services.Agencies.Imaging - Assembly/package:
SAIF.Services(packaged inside theSAIF.SAIFCode.CoreNuGet package)
Public members¶
| Member | Signature | Purpose |
|---|---|---|
| ImageService(...) | public ImageService(IUnitOfWork unitOfWork, IValidationService validationService, IImagingService imageService, IUserProfileService userProfileService) |
Validates all four collaborators are non-null and stores them. |
| MaxDescriptionLength | public const int MaxDescriptionLength = 256; |
The maximum allowed length for an agency image's description text, referenced by ImageEditValidator. |
| CanUserSeeConfidentialImages | public bool CanUserSeeConfidentialImages { get; } |
Returns whether the current user holds the confidential-images role. |
| CanUserSeeDeletedImages | public bool CanUserSeeDeletedImages { get; } |
Returns whether the current user holds the delete role, permitting visibility of deleted images. |
| CanUserEditImages | public bool CanUserEditImages { get; } |
Returns whether the current user holds the edit role, permitting image edits. |
| AddImage | public long AddImage(long agencyId, long imageId, IMessageContainer messageContainer) |
Within a transaction, associates the existing image imageId with agency agencyId, returning the new ImageAgency ID, or 0 (with a message added) if either the agency or image cannot be found. |
| DeleteImage | public bool DeleteImage(long id, IMessageContainer messageContainer) |
Within a transaction, marks the image's delete code as "Y" (if not already deleted) and stamps the update user/date; returns false (with a message added) if the image is not found. |
| EditImage | public bool EditImage(long id, ImageEdit imageEdit, IMessageContainer messageContainer) |
Within a transaction, validates authorization and the edit, re-associates the agency if changed, updates document date/text/type/confidentiality, and stamps update user/date; returns false (with a message added) on any authorization, lookup, or validation failure. |
| GetCategories | public IEnumerable<Category> GetCategories() |
Returns the image categories scoped to the agency image file code (ImageFileCode.AgencyImageFileCode). |
| GetImage | public Image GetImage(long id) |
Returns the mapped Image (including its owning agency) for id, or null if not found or not visible to the current user's confidentiality/deletion permissions. |
| GetImages | public IEnumerable<Image> GetImages(long agencyId, ImageFilterCriteria filter) |
Returns the agency's images (filtered to what the current user may see) further narrowed by filter, forcing filter.ShowDeleted off unless the user can see deleted images. |
| GetImageFile | public byte[] GetImageFile(long imageId) |
Returns the rendered PDF bytes for the image via IImagingService.GetPDF. |
Behavioral notes¶
AddImage,DeleteImage, andEditImageeach wrap their write inunitOfWork.Begin()/Commit()without an explicitRollback()on the early-return failure paths, relying on the transaction never reachingCommit()in those cases*.- Confidentiality is stored via private
ConfidentialSecurityLevel/NonConfidentialSecurityLevelconstants (50/0), independent of the constants used bySAIF.Services.Groups.Imaging.ImageServicewhich reads security level from the sharedImage.ConfidentialSecurityLevelmodel constant instead*. GetImage/GetImagesapply confidentiality and deleted-visibility filtering identically: an image is excluded unless it is not deleted (or the user can see deleted images) and not confidential (or the user can see confidential images).
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/Agencies/Imaging/ImageService.cs