ImageService¶
Implements IImageService, the group-imaging facade coordinating retrieval, security filtering, and mutation of images attached to groups. It depends on IUnitOfWork for transaction boundaries, IGroupImageRepository and IImageCategoryCodeRepository for data access, IGroupImageSecurityProvider for confidentiality/deletion visibility and edit authorization, and delegates writes to injected IImageUpdater/IImageDeleter collaborators. Its static constructor registers AutoMapper maps for ImageGroup→Image and imagingDataModel.Image→Image (deriving Category, IsDeleted, IsConfidential) and reuses GroupsMappingHelper.CreateGroupMap() and ImagingMappingHelper.CreateCategoryAndDocumentTypeMap().
Purpose¶
- Reports whether the current user can see confidential images, see deleted images, or edit images (delegated to
IGroupImageSecurityProvider). - Retrieves a single image by ID, optionally tolerating a missing image (
GetImageOrDefault). - Retrieves all images for a group, applying an optional
ImageFilterCriteriacombined with the current user's confidential/deleted visibility. - Updates or deletes an image within a transaction, delegating the actual mutation to
IImageUpdater/IImageDeleter. - Retrieves the available image categories.
Context¶
- Namespace:
SAIF.Services.Groups.Imaging - Assembly/package:
SAIF.Services(packaged inside theSAIF.SAIFCode.CoreNuGet package)
Public members¶
| Member | Signature | Purpose |
|---|---|---|
| ImageService(...) | public ImageService(IUnitOfWork unitOfWork, IValidationService validationService, IGroupImageSecurityProvider securityProvider, IGroupImageRepository groupImageRepository, IImageCategoryCodeRepository imageCategoryCodeRepository, IImageUpdater imageUpdater, IImageDeleter imageDeleter) |
Validates the unit of work and validation service are non-null, and stores all injected collaborators. |
| CanUserSeeConfidentialImages | public bool CanUserSeeConfidentialImages() |
Returns whether the current user is authorized to see confidential images. |
| CanUserSeeDeletedImages | public bool CanUserSeeDeletedImages() |
Returns whether the current user is authorized to see deleted images. |
| CanUserEditImages | public bool CanUserEditImages() |
Returns whether the current user is authorized to edit images. |
| GetImage | public Image GetImage(long groupImageId) |
Returns the mapped Image for the given group-image ID (throws if not found, per repository behavior). |
| GetImageOrDefault | public Image GetImageOrDefault(long groupImageId) |
Returns the mapped Image for the given group-image ID, or null if it does not exist. |
| GetImages(groupId) | public IEnumerable<Image> GetImages(string groupId) |
Returns all images for the group, applying an empty (default) filter. |
| GetImages(groupId, filter) | public IEnumerable<Image> GetImages(string groupId, ImageFilterCriteria filter) |
Returns images for the group matching filter, constrained by the current user's confidential/deleted visibility. |
| UpdateImage | public void UpdateImage(ImageEdit imageEdit) |
Begins a transaction, delegates the update to IImageUpdater.Update, then commits. |
| DeleteImage | public void DeleteImage(ImageDelete imageDelete) |
Begins a transaction, delegates the deletion to IImageDeleter.Delete, then commits. |
| GetCategories | public IEnumerable<Category> GetCategories() |
Returns all image categories mapped from IImageCategoryCodeRepository.GetImageCategoryCodes(). |
Behavioral notes¶
UpdateImageandDeleteImagewrap their delegated operation inunitOfWork.Begin()/Commit(), but do not catch exceptions or callRollback(), so any thrown validation/repository exception propagates without an explicit rollback call*.CreateGroupImageRepositoryFilteralways overrides the caller-supplied filter'sCanUserSeeConfidentialImages/CanUserSeeDeletedImagesflags with the security provider's live result, preventing callers from bypassing visibility rules through the filter object.- The static constructor participates in the same shared AutoMapper configuration as
GroupServiceandNoteServiceviaGroupsMappingHelper.CreateGroupMap()*.
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/Groups/Imaging/ImageService.cs