---
title: ImageUpdater
summary: API reference for ImageUpdater.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-09-24
library: SAIF.Services
reference_type: package
---

# ImageUpdater

Implements `IImageUpdater`, the group-imaging update operation invoked by `SAIF.Services.Groups.Imaging.ImageService.UpdateImage`. It depends on `IValidationService` for edit validation, `IGroupImageRepository` and `IGroupRepository` to look up the target image group and its new group association, `IImageCategoryCodeRepository` to resolve the document-type code, and `IGroupImageSecurityProvider` to stamp the updating user's ID.

## Purpose
- Validates an `ImageEdit` request before applying it.
- Applies document date, description text, document type, confidentiality (security level), and group re-association changes to an existing group image, stamping the update user and timestamp.

## Context
- Namespace: `SAIF.Services.Groups.Imaging`
- Assembly/package: `SAIF.Services` (packaged inside the `SAIF.SAIFCode.Core` NuGet package)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| ImageUpdater(...) | `public ImageUpdater(IValidationService validationService, IGroupImageRepository groupImageRepository, IImageCategoryCodeRepository imageCategoryCodeRepository, IGroupRepository groupRepository, IGroupImageSecurityProvider security)` | Wires in the validation, repository, category-code, and security collaborators used by `Update`. |
| Update | `public void Update(ImageEdit imageEdit)` | Validates `imageEdit` (throwing on failure via `ValidateAndThrow`), then applies all field changes to the corresponding group image entity. |

## Behavioral notes
- `Update` calls `validationService.ValidateAndThrow`, so validation failures surface as thrown exceptions rather than a returned result*.
- Confidentiality is persisted as a security-level code: `Image.ConfidentialSecurityLevel` when `imageEdit.IsConfidential` is true, otherwise `Image.NonConfidentialSecurityLevel`.
- Does not itself begin/commit a unit-of-work transaction; that boundary is owned by the calling `ImageService.UpdateImage`*.

> **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/ImageUpdater.cs
