using e_suite.Database.Audit;
using e_suite.Database.Core;
using e_suite.Database.Core.Tables.Printer;
using eSuite.Core.Miscellaneous;

namespace e_suite.API.Common.repository;

public interface ISpecificationManagerRepository : IRepository
{
    IQueryable<Specification> GetSpecifications();
    IQueryable<Specification> GetSpecificationsFromForms(IEnumerable<long> formIds);
    Task<Specification?> GetSpecification(GeneralIdRef generalIdRef, CancellationToken cancellationToken);
    Task CreateSpecification(AuditUserDetails auditUserDetails, Specification newSpecification, CancellationToken cancellationToken);
    Task CreateSpecification(AuditUserDetails auditUserDetails, IEnumerable<Specification> newSpecification, CancellationToken cancellationToken);

    Task EditSpecification(AuditUserDetails auditUserDetails, Specification specification, CancellationToken cancellationToken);
    Task EditSpecification(AuditUserDetails auditUserDetails, IEnumerable<Specification> specifications, CancellationToken cancellationToken);
}