using e_suite.API.Common.models;
using e_suite.Database.Audit;
using e_suite.Utilities.Pagination;
using eSuite.Core.Miscellaneous;

namespace e_suite.API.Common;

public interface ISiteManager
{
    Task<IPaginatedData<ReadSite>> GetSites(Paging paging, CancellationToken cancellationToken);

    Task<ReadSite> GetSite(IGeneralIdRef generalIdRef, CancellationToken cancellationToken);
    Task<ReadSite> GetSiteByName(IGeneralIdRef organisationGeneralIdRef, string siteName, CancellationToken cancellationToken);
    Task<ReadSite> GetSiteBySigmaId(long sigmaId, CancellationToken cancellationToken);

    Task CreateSite(AuditUserDetails auditUserDetails, CreateSite site, bool triggerEFlowSync, CancellationToken cancellationToken);
    Task CreateSites(AuditUserDetails auditUserDetails, IEnumerable<CreateSite> sites, bool triggerEFlowSync, CancellationToken cancellationToken);
    Task EditSite(AuditUserDetails auditUserDetails, EditSite site, bool triggerEFlowSync, CancellationToken cancellationToken);
    Task DeleteSite(AuditUserDetails auditUserDetails, IGeneralIdRef generalIdRef, bool triggerEFlowSync, CancellationToken cancellationToken);
}