using System.Security.Claims; using Data.SeaHavenIndustries.Enums; using SeaHaven.Services.DTOs; namespace SeaHaven.Services.Interfaces { public interface IWorkOrderMediaService { Task?> GetMediaAsync( int workOrderId, ClaimsPrincipal user, string? actorId, CancellationToken cancellationToken = default); Task GetMediaContentAsync( int workOrderId, int mediaId, ClaimsPrincipal user, string? actorId, CancellationToken cancellationToken = default); /// /// Authorizes the caller and validates the work order is mutable before any blob storage write. /// Task EnsureCanMutateMediaAsync( int workOrderId, ClaimsPrincipal user, string? actorId, CancellationToken cancellationToken = default, WorkOrderMediaCategory? category = null); Task AddMediaAsync( int workOrderId, WorkOrderMediaCategory? category, string fileUrl, ClaimsPrincipal user, string? actorId, CancellationToken cancellationToken = default); Task UpdateMediaCategoryAsync( int workOrderId, int mediaId, WorkOrderMediaCategory category, string? workOrderVersion, ClaimsPrincipal user, string? actorId, CancellationToken cancellationToken = default); Task DeleteMediaAsync( int workOrderId, int mediaId, string? workOrderVersion, ClaimsPrincipal user, string? actorId, CancellationToken cancellationToken = default); } }