From 1f57472d1a274c41dfc1b662c1007ce1c7bc5c1c Mon Sep 17 00:00:00 2001 From: Hadi Khazaee Asl Date: Sat, 20 Dec 2025 12:37:54 +0330 Subject: [PATCH] resolve tagging index issues ... --- Providers/XBaseFileProvider.cs | 66 ++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/Providers/XBaseFileProvider.cs b/Providers/XBaseFileProvider.cs index e60ea71..6cb8ec1 100644 --- a/Providers/XBaseFileProvider.cs +++ b/Providers/XBaseFileProvider.cs @@ -369,6 +369,40 @@ namespace xFileService.Providers return await Task.FromResult(result); } + /// + /// Extract all Referencing Models for Specified Key ... + /// + /// + /// + public async Task>> GetAllReferencings(TKey providedForId) + { + // + // Validate ... + var isValid = + !providedForId.IsNull(); + if (!isValid) + { + XException.InvalidArgs.Throw(); + } + + // + var identifier = GetProvidedID(providedForId); + + // + var result = FileProvider.FileRepository + .AsQueryable() + .Where(te => te.References.Contains(identifier)) + .Select(te => te.References) + .SelectMany(tr => tr.ParseXReferenceList()) + .Where(tr => tr.ProvidedFor == Provider && $"{tr.ReferencedTo}" == $"{providedForId}") + .OrderBy(tr => tr.Index) + .AsEnumerable() + ; + + // + return await Task.FromResult(result); + } + /// /// Count References ... /// @@ -766,6 +800,38 @@ namespace xFileService.Providers return result; } + private async Task> GetReferencingIndexes(TKey providedForId) + { + // + // Validate ... + var isValid = + !providedForId.IsNull(); + if (!isValid) + { + XException.InvalidArgs.Throw(); + } + + // + var result = new List(); + var referencings = await GetAllReferencings(providedForId); + isValid = !referencings.IsNull() && + referencings.HasChild(); + if (!isValid) + { + return result; + } + + // + result = + referencings + .OrderBy(r => r.Index) + .Select(r => r.Index) + .ToList(); + + // + return result; + } + /// /// Check Specified Dto is Has Reference to Provider ... ///