using GB5Shared.DTO.Framework.Criteria;
using GB5Shared.DTO.Framework.Login;
using MMDAL.DTO.TransactionType;
using System.Threading.Tasks;
namespace MMBLL.TransactionType
{
///
/// Business Logic Layer interface for managing TransactionType operations.
/// Provides methods to retrieve, insert/update, list, and delete transaction types with business rules applied.
///
public interface ITransactionTypeBLL
{
///
/// Retrieves the details of a single transaction type by its unique identifier.
///
/// The unique identifier of the transaction type.
/// The current user's login details.
/// A JSON string representing the transaction type details.
Task GetTransactionType(int TransactionTypeId, LoginDTO LoginDTO);
///
/// Inserts a new transaction type or updates an existing one.
/// Automatically applies any business rules, such as setting Created/Modified fields.
///
/// The transaction type data to save or update.
/// The current user's login details.
/// A JSON string indicating the success of the operation, optionally with the TransactionTypeId.
Task SaveTransactionType(TransactionTypeDTO TransactionTypeDTO, LoginDTO LoginDTO);
///
/// Retrieves a list of transaction types based on specified criteria.
/// Typically used to populate dropdowns or selection lists in the UI.
///
/// Filter criteria for selecting transaction types.
/// The current user's login details.
/// A JSON string representing a list of transaction types.
Task GetSelectListTransactionType(CriteriaDTO CriteriaDTO, LoginDTO LoginDTO);
///
/// Deletes a transaction type by its unique identifier.
///
/// The unique identifier of the transaction type to delete.
/// The current user's login details.
/// A JSON string indicating success or failure of the delete operation.
Task DeleteTransactionType(int TransactionTypeId, LoginDTO LoginDTO);
}
}