using FrameworkDAL.DTO.ECMRights;
using GB5Shared.DTO.Framework.Criteria;
using GB5Shared.DTO.Framework.Login;
using System.Threading.Tasks;
namespace FrameworkBLL.ECMRights
{
///
/// Business Logic Layer interface for managing ECMRights operations.
/// Provides methods to retrieve, insert/update, list, and delete ECMRights records with business rules applied.
///
public interface IECMRightsBLL
{
///
/// Retrieves the details of a single ECMRights record by its unique identifier.
///
/// The unique identifier of the ECMRights record.
/// The current user's login details.
/// A JSON string representing the ECMRights details.
Task GetECMRights(int ECMRightsId, LoginDTO LoginDTO);
///
/// Inserts a new ECMRights record or updates an existing one.
/// Automatically applies any business rules, such as setting Created/Modified fields.
///
/// The ECMRights data to save or update.
/// The current user's login details.
/// A JSON string indicating the success of the operation, optionally with the ECMRightsId.
Task SaveECMRights(ECMRightsDTO ECMRightsDTO, LoginDTO LoginDTO);
///
/// Retrieves a paginated list of ECMRights records based on specified filter criteria.
/// Can optionally return the total count of records instead of the list.
///
/// The starting index of records to fetch (for pagination).
/// The maximum number of records to fetch.
/// Filter criteria for selecting ECMRights.
/// The current user's login details.
/// If true, returns the total count of matching records instead of the list.
/// A JSON string representing either the list of ECMRights records or the total count.
Task GetSelectListECMRights(int firstNumber, int maxResult, CriteriaDTO criteriaDTO, LoginDTO LoginDTO, bool isCount = false);
///
/// Deletes an ECMRights record by its unique identifier.
///
/// The unique identifier of the ECMRights record to delete.
/// The current user's login details.
/// A JSON string indicating success or failure of the delete operation.
Task DeleteECMRights(int ECMRightsId, LoginDTO LoginDTO);
}
}