using GB5Shared.DTO.Framework.Criteria;
using GB5Shared.DTO.Framework.Login;
using AdminDAL.DTO.FinanceBook;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace AdminBLL.FinanceBook
{
///
/// Business Logic Layer interface for managing Finance Book operations.
/// Provides methods to retrieve, insert/update, list, and delete Finance Book records with business rules applied.
///
public interface IFinanceBookBLL
{
///
/// Retrieves the details of a single Finance Book by its unique identifier.
///
/// The unique identifier of the Finance Book.
/// The current user's login details.
/// A JSON string representing the Finance Book details.
Task GetFinanceBook(int FinanceBookId, LoginDTO LoginDTO);
///
/// Inserts a new Finance Book or updates an existing Finance Book.
/// Automatically applies any business rules, such as setting Created/Modified fields.
///
/// The Finance Book data to save or update.
/// The current user's login details.
/// A JSON string indicating the success of the operation, optionally with the FinanceBookId.
Task SaveFinanceBook(FinanceBookDTO FinanceBookDTO, LoginDTO LoginDTO);
///
/// Retrieves a list of Finance Books based on specified criteria.
/// Typically used to populate dropdowns or selection lists in the UI.
///
/// Filter criteria for selecting Finance Books.
/// The current user's login details.
/// A JSON string representing a list of Finance Books.
Task GetSelectListFinanceBook(CriteriaDTO CriteriaDTO, LoginDTO LoginDTO);
///
/// Deletes a Finance Book by its unique identifier.
///
/// The unique identifier of the Finance Book to delete.
/// The current user's login details.
/// A JSON string indicating success or failure of the delete operation.
Task DeleteFinanceBook(int FinanceBookId, LoginDTO LoginDTO);
}
}