From 6519f5a0bd1991fed4fa88fe12ea76bcd688101a Mon Sep 17 00:00:00 2001 From: Hadi Khazaee Asl Date: Thu, 18 Dec 2025 15:59:08 +0330 Subject: [PATCH] last ... --- Providers/XBaseTagProvider.cs | 82 +++++++++++++---------------------- 1 file changed, 30 insertions(+), 52 deletions(-) diff --git a/Providers/XBaseTagProvider.cs b/Providers/XBaseTagProvider.cs index f88ab70..eee0819 100644 --- a/Providers/XBaseTagProvider.cs +++ b/Providers/XBaseTagProvider.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; @@ -126,39 +127,15 @@ namespace xTagService.Providers .AsEnumerable(); // - var dtos = new List(); + var result = new List(); foreach (var entity in entities) { // var dto = entity.ToDto(); if (!dto.IsNullOrDefault()) - { - dtos.Add(dto); - } - } - - // - List result = dtos; - if (dtos.HasChild()) - { - // - // Sorting Result Based on Indexes ... - var lastIndex = GetLastIndex(providedForId); - if (lastIndex > 0) { // - result.Clear(); - for (int i = 0; i <= lastIndex; i++) - { - // - var dto = dtos - .FirstOrDefault(d => d.References - .Any(dr => dr.Index == i && dr.ReferencedTo == $"{providedForId}")); - if (!dto.IsNullOrDefault()) - { - result.Add(dto); - } - } + result.Add(dto); } } @@ -290,7 +267,7 @@ namespace xTagService.Providers // var lastIndex = GetLastIndex(providedForId); - if (lastIndex == 0) + if (lastIndex == -1) { // // This Means there isnot any Reference ... @@ -305,29 +282,16 @@ namespace xTagService.Providers else { // - // Check Provided Index Exists or not ... - var isExists = model.References.Any(r => r.Index == forIndex); - if (!isExists) - { - // - // Normalize For Index ... - if (forIndex > lastIndex + 1) - { - forIndex = lastIndex + 1; - } + forIndex = lastIndex + 1; - // - // Add New Reference ... - model.References.Add(new XReference - { - Index = forIndex, - ProvidedFor = Provider, - ReferencedTo = $"{providedForId}" - }); - } - else + // + // Add New Reference ... + model.References.Add(new XReference { - } + Index = forIndex, + ProvidedFor = Provider, + ReferencedTo = $"{providedForId}" + }); } // @@ -560,7 +524,21 @@ namespace xTagService.Providers result = IsExists(tag); if (!result) { - XException.NotFound.Throw(); + // + // Create Tag if Not Exists ... + var tagDto = new XTagDto + { + Tag = tag, + }; + tagDto = await TagProvider.Add( + model: tagDto, + connectionId: connectionId + ); + result = !tagDto.IsNullOrDefault(); + if (!result) + { + XException.ActionFailed.Throw(); + } } // @@ -774,7 +752,7 @@ namespace xTagService.Providers private int GetLastIndex(TKey providedForId) { // - var result = 0; + var result = -1; // // Validate ... @@ -796,7 +774,7 @@ namespace xTagService.Providers .AsEnumerable(); if (all.IsNull() || !all.HasChild()) { - result = 0; + result = -1; } else { @@ -811,7 +789,7 @@ namespace xTagService.Providers } else { - result = 0; + result = -1; } }