using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using FrameworkDAL.CustomCode.EntityViewer.DTOs;
using GB5Shared.DTO.Framework.Login;
namespace FrameworkBLL.EntityViewer
{
public interface IEntityLayoutBLL
{
/// Upsert: EntityLayoutId = 0 creates a new header, otherwise updates the
/// existing one (Title/TenantId/SortOrder/IsComponent).
Task SaveLayout(EntityLayoutDTO dto, LoginDTO loginDTO, CancellationToken ct = default);
Task DeleteLayout(int entityLayoutId, LoginDTO loginDTO, CancellationToken ct = default);
Task GetActiveLayout(string entityCode, LoginDTO loginDTO, CancellationToken ct = default);
/// Upsert: EntityLayoutVersionId = 0 creates a new Draft version, otherwise
/// updates the existing one in place — only while it's still Draft.
Task SaveLayoutVersion(EntityLayoutVersionDTO dto, LoginDTO loginDTO, CancellationToken ct = default);
Task DeleteLayoutVersion(int entityLayoutVersionId, LoginDTO loginDTO, CancellationToken ct = default);
Task ActivateLayoutVersion(int entityLayoutVersionId, int entityLayoutId, LoginDTO loginDTO, CancellationToken ct = default);
Task> GetLayoutVersionList(int entityLayoutId, LoginDTO loginDTO, CancellationToken ct = default);
Task> GetLayoutList(bool isComponent, LoginDTO loginDTO, CancellationToken ct = default);
}
}