using CashLineERP.Contracts.Suppliers;

namespace CashLineERP.Application.Suppliers;

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

    SupplierProfileResponse? GetSupplierProfile(long supplierProfileId);

    SupplierProfileResponse CreateSupplierProfile(CreateSupplierProfileRequest request);

    SupplierProfileResponse SubmitSupplierProfile(long supplierProfileId, long actorUserId);

    SupplierProfileResponse ApproveSupplierProfile(long supplierProfileId, long actorUserId);

    SupplierProfileResponse ReturnSupplierProfile(long supplierProfileId, long actorUserId, ReviewSupplierProfileRequest request);

    SupplierProfileResponse RejectSupplierProfile(long supplierProfileId, long actorUserId, ReviewSupplierProfileRequest request);

    SupplierProfileResponse HoldSupplierProfile(long supplierProfileId, long actorUserId, HoldSupplierProfileRequest request);

    SupplierProfileResponse ReopenSupplierProfile(long supplierProfileId, long actorUserId, ReopenSupplierProfileRequest request);

    SupplierProfileResponse ActivateSupplierProfile(long supplierProfileId, long actorUserId);

    SupplierProfileResponse VerifySupplierBank(long supplierProfileId, long actorUserId, VerifySupplierBankRequest request);

    SupplierProfileResponse RecordPerformanceReview(long supplierProfileId, long actorUserId, RecordSupplierPerformanceReviewRequest request);
}
