namespace CashLineERP.Application.Suppliers;

public interface ISupplierProfileRepository
{
    IReadOnlyCollection<SupplierProfileDetailView> GetSupplierProfiles(bool activeOnly = false, string? statusCode = null, long? businessPartyId = null);

    SupplierProfileDetailView? GetSupplierProfile(long supplierProfileId);

    SupplierProfileDetailView Create(CreateSupplierProfileCommand command);

    SupplierProfileDetailView Submit(long supplierProfileId, long actorUserId);

    SupplierProfileDetailView Approve(long supplierProfileId, long actorUserId);

    SupplierProfileDetailView Return(long supplierProfileId, long actorUserId, string reviewNotes);

    SupplierProfileDetailView Reject(long supplierProfileId, long actorUserId, string reviewNotes);

    SupplierProfileDetailView Hold(long supplierProfileId, long actorUserId, string holdReason);

    SupplierProfileDetailView Reopen(long supplierProfileId, long actorUserId, string reopenReason);

    SupplierProfileDetailView Activate(long supplierProfileId, long actorUserId);

    SupplierProfileDetailView VerifyBank(long supplierProfileId, long actorUserId, string verificationReference);

    SupplierProfileDetailView RecordPerformanceReview(long supplierProfileId, long actorUserId, string riskRatingCode, decimal performanceScore, decimal onTimeDeliveryScore, decimal qualityScore, string? performanceNotes);
}
