using ECPDAL.Communication.DTOs; using GB5Shared.DTO.Framework.Login; namespace ECPBLL.Communication.Interfaces; public interface ICommentThreadBLL { Task GetCommentThreadAsync(int commentThreadId, LoginDTO login, CancellationToken ct); /// Whole-conversation view for one business object — every root thread for /// ObjectTypeId+ObjectId, each with its full nested reply tree. Cache-keyed by /// {objectTypeId}:{objectId} per the plan's cache strategy. Task GetCommentThreadTreeAsync(int objectTypeId, int objectId, LoginDTO login, CancellationToken ct); Task GetCommentThreadListAsync(int objectTypeId, int objectId, LoginDTO login, CancellationToken ct); Task SaveCommentThreadAsync(SaveCommentThreadDTO dto, LoginDTO login, CancellationToken ct); Task UpdateCommentThreadStatusAsync(UpdateCommentThreadStatusDTO dto, LoginDTO login, CancellationToken ct); Task DeleteCommentThreadAsync(int commentThreadId, LoginDTO login, CancellationToken ct); /// /// Layered visibility check (thread -> BizTransaction -> OU -> ObjectType/Object floor), per /// the plan's "Access, security level & notification routing" section. Most-specific /// check wins; BizTransaction-level and ObjectType/Object-level checks are explicitly /// deferred to the owning business module per the plan (Communication does not own business /// data), so only the thread-level (ECMRights/SecurityMark) and OU-level checks are enforced /// here in Phase 1. /// Task CanViewCommentThreadAsync(CommentThreadDTO thread, LoginDTO login, CancellationToken ct); }