using GB5Shared.DTO.Framework.Criteria;
using GB5Shared.DTO.Framework.Login;
using MMDAL.DTO.TransactionType;
using System.Threading.Tasks;
namespace MMDAL.CustomCode.TransactionType
{
///
/// Data Access Layer interface for managing TransactionType records in the database.
/// Provides methods to retrieve, insert, update, and delete transaction types.
///
public interface ITransactionTypeDAL
{
///
/// Retrieves 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);
///
/// Retrieves a list of transaction types based on specified criteria.
/// Typically used for populating dropdowns or picklists.
///
/// 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);
///
/// Inserts a new transaction type record into the database.
///
/// The transaction type data to save.
/// The current user's login details.
/// The number of rows affected (should be 1 if successful).
Task SaveTransactionType(TransactionTypeDTO TransactionTypeDTO, LoginDTO LoginDTO);
///
/// Updates an existing transaction type record in the database.
///
/// The updated transaction type data.
/// The current user's login details.
/// The number of rows affected (should be 1 if successful).
Task UpdateTransactionType(TransactionTypeDTO TransactionTypeDTO, LoginDTO LoginDTO);
///
/// Deletes a transaction type record 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);
}
}