using e_suite.API.Common.repository;
using e_suite.Database.Audit;
using e_suite.Database.Audit.Models;
using e_suite.Database.Core.Extensions;
using e_suite.Database.Core.Helpers;
using e_suite.Database.Core.Tables.CustomFields;
using e_suite.Database.Core.Tables.Glossaries;
using e_suite.UnitTestCore;
using eSuite.Core.Miscellaneous;
using MockQueryable;

namespace e_suite.Modules.SpecificationManager.UnitTests.Helpers;

public class FakeGlossariesManagerRepository : FakeRepository, IGlossariesManagerRepository
{
    public List<Glossary> Glossaries { get; set; } = [];

    private IQueryable<Glossary> GetGlossaries()
    {
        return Glossaries.BuildMock();
    }

    public Task AddGlossaryItem(AuditUserDetails auditUserDetails, Glossary glossary, CancellationToken cancellationToken)
    {
        throw new NotImplementedException();
    }

    public Task EditGlossaryItem(AuditUserDetails auditUserDetails, Glossary glossaryItem, CancellationToken cancellationToken)
    {
        throw new NotImplementedException();
    }

    public Task<Glossary?> FindGlossary(IGeneralIdRef glossaryItem, CancellationToken cancellationToken)
    {
        return Task.FromResult(GetGlossaries().FindByGeneralIdRef(glossaryItem));
    }
    
    public Task<IEnumerable<Glossary>> FindGlossaryChildren(long parentId, CancellationToken cancellationToken)
    {
        throw new NotImplementedException();
    }

    public Task<List<CustomField>> GetCustomFieldDefinitions(IEnumerable<IGeneralIdRef> customFieldIdRefs, CancellationToken cancellationToken)
    {
        throw new NotImplementedException();
    }

    public Task<Glossary?> GetParentGlossary(IGeneralIdRef? glossaryItemParent, CancellationToken cancellationToken)
    {
        throw new NotImplementedException();
    }

    public IQueryable<GlossaryCustomField> GetGlossaryCustomFields(long glossaryId)
    {
        throw new NotImplementedException();
    }

    public Task SaveChildCustomFieldDefinitions(
        AuditUserDetails auditUserDetails,
        IReadOnlyList<GlossaryCustomField> removalList,
        IReadOnlyList<GlossaryCustomField> additionList,
        CancellationToken cancellationToken
    )
    {
        throw new NotImplementedException();
    }

    public Task<List<GlossaryCustomFieldValue>> GetGlossaryCustomValues(IId glossary, CancellationToken cancellationToken)
    {
        throw new NotImplementedException();
    }

    public Task SaveCustomFieldValues(AuditUserDetails auditUserDetails, Delta<GlossaryCustomFieldValue> delta, CancellationToken cancellationToken)
    {
        throw new NotImplementedException();
    }

    public Task AddGlossaryItems(AuditUserDetails auditUserDetails, IEnumerable<Glossary> items, CancellationToken cancellationToken)
    {
        throw new NotImplementedException();
    }

    public Task SaveCustomFieldValues(AuditUserDetails auditUserDetails, IEnumerable<Delta<GlossaryCustomFieldValue>> deltas, CancellationToken cancellationToken)
    {
        throw new NotImplementedException();
    }
}