using DXPDAL.Kyc; using GB5Shared.DTO.ECM; using GB5Shared.DTO.Framework.Login; namespace DXPBLL.Kyc; public interface IKycBLL { Task GetActiveByBranchLinkAsync(int dxpPartyBranchLinkId, LoginDTO login, CancellationToken ct); // Encrypts GSTIN/PAN, supersedes any existing active profile for the same branch link (kept // for audit, never overwritten), and saves the new one. Returns the new profile's id so the // caller can resolve any documents already uploaded against rowGuid (see UploadDocumentAsync). Task<(string Message, int DxpPartyKycProfileId)> SubmitAsync( int dxpPartyBranchLinkId, string? gstin, string? pan, Guid rowGuid, LoginDTO login, CancellationToken ct); // Thin pass-through to UAS — lets the frontend attach documents (GST certificate, PAN scan) // tagged with rowGuid BEFORE the profile exists (ObjectId=0), matching UAS's own two-phase // upload pattern. Resolved to the real DxpPartyKycProfileId inside SubmitAsync. Task UploadDocumentAsync( AttachmentUploadRequest request, Stream fileStream, string originalFileName, string contentType, LoginDTO login, CancellationToken ct); Task VerifyAsync(int dxpPartyKycProfileId, bool approved, string? rejectionReason, LoginDTO login, CancellationToken ct); }