60 lines
1.6 KiB
C#
60 lines
1.6 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using xAiService.Models.Dtos;
|
|
using xCommons.Extensions;
|
|
|
|
namespace xAiService.Extensions
|
|
{
|
|
public static class PromptExtensions
|
|
{
|
|
/// <summary>
|
|
/// Get Template Params Filled Prompt ...
|
|
/// </summary>
|
|
/// <param name="source"></param>
|
|
/// <param name="params"></param>
|
|
/// <returns></returns>
|
|
public static string GetMessage(
|
|
this XPromptDto source,
|
|
IDictionary<string, string> @params = null
|
|
)
|
|
{
|
|
//
|
|
var result = string.Empty;
|
|
|
|
//
|
|
if (!source.IsNullOrDefault() &&
|
|
!source.Prompt.IsNullOrEmpty()
|
|
)
|
|
{
|
|
result = source.Prompt;
|
|
}
|
|
|
|
//
|
|
// Check Params Conditions ...
|
|
if (!source.Params.IsNullOrDefault() &&
|
|
source.Params.HasChild() &&
|
|
!@params.IsNullOrDefault() &&
|
|
@params.HasChild()
|
|
)
|
|
{
|
|
//
|
|
// Select Params ...
|
|
var existsParams = source.Params
|
|
.Where(p => @params.Any(pr => pr.Key == p.Name))
|
|
.Distinct()
|
|
.ToList();
|
|
|
|
//
|
|
// Replace Selected Params ...
|
|
existsParams
|
|
.ForEach(pk =>
|
|
{
|
|
result = result.Replace(pk.Param, @params[pk.Name]);
|
|
});
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
}
|
|
} |