From a4dee3b5a4d7026f2d7358586441308f434e6f49 Mon Sep 17 00:00:00 2001 From: Hadi Khazaee Asl Date: Sun, 27 Sep 2026 22:00:56 +0330 Subject: [PATCH] last ... --- Extensions/XAiModelsExtensions.cs | 163 ++++++++++++++++++++++++++++++ Providers/XAiDataProvider.cs | 9 +- 2 files changed, 164 insertions(+), 8 deletions(-) diff --git a/Extensions/XAiModelsExtensions.cs b/Extensions/XAiModelsExtensions.cs index 70d87f3..2d19367 100644 --- a/Extensions/XAiModelsExtensions.cs +++ b/Extensions/XAiModelsExtensions.cs @@ -1,8 +1,12 @@ +using System; using System.Linq; using xAiModels.Models; using xCommons.Extensions; +using xAiModels.Constants; using xAiModels.Models.Dtos; +using xExceptions.Constants; using xAiModels.Models.Entities; +using System.Collections.Generic; namespace xAiModels.Extensions { @@ -172,5 +176,164 @@ namespace xAiModels.Extensions // return result; } + + /// + /// Check a Collection Contains Default Project for Specified Owner or not ... + /// + /// + /// + /// + public static bool HasDefaultProject( + this IEnumerable source, + string ownerId + ) + { + // + // Validate Args ... + if (source.HasChild() || + ownerId.IsNullOrEmpty()) + { + XException.InvalidArgs.Throw(); + } + + // + var item = source + .FirstOrDefault(x => + x.Title + .ToNormalString() + .Contains(ownerId.ToNormalString()) && + x.Title + .ToNormalString() + .Contains(XAiModelsConstants.DefaultXAiProjectDescriptionResourceID) + ); + + // + var result = !item.IsNullOrDefault(); + + // + return result; + } + + /// + /// Check a Collection Contains Default Conversation for Specified Project or not ... + /// + /// + /// + /// + /// + public static bool HasDefaultConversation( + this IEnumerable source, + string ownerId, + Guid projectId + ) + { + // + // Validate Args ... + if (source.HasChild() || + projectId.IsDefaultGuid()) + { + XException.InvalidArgs.Throw(); + } + + // + var item = source + .FirstOrDefault(x => + x.Title + .ToNormalString() + .Contains(ownerId.ToNormalString()) && + x.Title + .ToNormalString() + .Contains(projectId.ToString().ToNormalString()) && + x.Title + .ToNormalString() + .Contains(XAiModelsConstants.DefaultXAiConversationTitleResourceID) + ); + + // + var result = !item.IsNullOrDefault(); + + // + return result; + } + + /// + /// Retrieve Default Project Id from a Collection ... + /// + /// + /// + /// + public static Guid GetDafualtProject( + this IEnumerable source, + string ownerId + ) + { + // + // Validate Args ... + if (source.HasChild() || + ownerId.IsNullOrEmpty()) + { + XException.InvalidArgs.Throw(); + } + + // + var item = source + .FirstOrDefault(x => + x.Title + .ToNormalString() + .Contains(ownerId.ToNormalString()) && + x.Title + .ToNormalString() + .Contains(XAiModelsConstants.DefaultXAiProjectDescriptionResourceID) + ); + if (item.IsNullOrDefault()) + { + XException.NotFound.Throw(); + } + + // + return item.Id; + } + + /// + /// Get Default Conversation Id from a Collection Contains ... + /// + /// + /// + /// + /// + public static Guid GetDefaultConversation( + this IEnumerable source, + string ownerId, + Guid projectId + ) + { + // + // Validate Args ... + if (source.HasChild() || + projectId.IsDefaultGuid()) + { + XException.InvalidArgs.Throw(); + } + + // + var item = source + .FirstOrDefault(x => + x.Title + .ToNormalString() + .Contains(ownerId.ToNormalString()) && + x.Title + .ToNormalString() + .Contains(projectId.ToString().ToNormalString()) && + x.Title + .ToNormalString() + .Contains(XAiModelsConstants.DefaultXAiConversationTitleResourceID) + ); + + // + var result = item.Id; + + // + return result; + } } } \ No newline at end of file diff --git a/Providers/XAiDataProvider.cs b/Providers/XAiDataProvider.cs index b7acca7..637208a 100644 --- a/Providers/XAiDataProvider.cs +++ b/Providers/XAiDataProvider.cs @@ -104,11 +104,9 @@ namespace xAiModels.Providers var result = await projectRepositoryService.FindManyAsync( includeBuilder: null, ignoreSoftDeleteds: true, - // fillConversations: fillConversations, predicate: x => x.OwnerId == ownerId, cancellationToken: cancellationToken, orderBuilder: x => x.OrderBy(y => y.CreatedOn) - // fillConversationMessages: fillConversationMessages ); // @@ -142,7 +140,6 @@ namespace xAiModels.Providers var result = await conversationRepositoryService.FindManyAsync( includeBuilder: null, ignoreSoftDeleteds: false, - // fillMessages: fillMessages, cancellationToken: cancellationToken, predicate: x => x.ProjectId == projectId, orderBuilder: x => x.OrderBy(y => y.CreatedOn) @@ -727,8 +724,6 @@ namespace xAiModels.Providers id: project.Id, includeBuilder: null, ignoreSoftDeleteds: true, - // fillConversations: false, - // fillConversationMessages: false, cancellationToken: cancellationToken ); } @@ -744,7 +739,7 @@ namespace xAiModels.Providers predicate: x => x.ResourceTitle .ToNormalString() - .Contains(ownerId.ToNormalString()) && + .Contains(projectId.ToString().ToNormalString()) && x.ResourceTitle .ToNormalString() .Contains(XAiModelsConstants.XAiConversationTitleIdentifier @@ -819,8 +814,6 @@ namespace xAiModels.Providers id: project.Id, includeBuilder: null, ignoreSoftDeleteds: true, - // fillConversations: false, - // fillConversationMessages: false, cancellationToken: cancellationToken ); }