using CMSDAL.DTO.Site; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using System.Data.Common; namespace CMSDAL.CustomCode.Site; public interface ISiteDAL { Task GetSite(int siteId, LoginDTO loginDTO, CancellationToken ct = default); Task GetSelectListSite(int firstNumber, int maxResult, CriteriaDTO criteriaDTO, LoginDTO loginDTO, CancellationToken ct = default); // Transaction-aware — must be called from inside ExecuteSaveAsync's persistFunc. Returns // the Site's PK (new identity on insert, dto.SiteId echoed back on update). Task SaveSite(SiteDTO dto, LoginDTO loginDTO, DbTransaction? tx = null, CancellationToken ct = default); Task UpdateSite(SiteDTO dto, LoginDTO loginDTO, DbTransaction? tx = null, CancellationToken ct = default); Task DeleteSite(int siteId, LoginDTO loginDTO, CancellationToken ct = default); // Used by the cross-tenant guard — returns the Site's true owning TenantId (or null if it // doesn't exist), independent of the caller's own claimed tenant. Task GetSiteTenantIdAsync(int siteId, LoginDTO loginDTO, CancellationToken ct = default); }