2025-05-06 06:45:49 +00:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Data;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Text.Json;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Kurs.Platform.Queries;
|
|
|
|
|
|
|
|
|
|
|
|
public class QueryHelper
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary> gelen parametrelere gore [Value] yada 'Value' seklinde sonuc dondurur
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="fieldDbSource"></param>
|
|
|
|
|
|
/// <param name="value"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public static object GetFormattedValue(DbType fieldDbSource, object value)
|
|
|
|
|
|
{
|
|
|
|
|
|
object[] values = null;
|
|
|
|
|
|
var isArray = false;
|
|
|
|
|
|
|
|
|
|
|
|
if (value is JsonElement valueJson && valueJson.ValueKind == JsonValueKind.Array)
|
|
|
|
|
|
{
|
|
|
|
|
|
values = valueJson.EnumerateArray().Select(a => (object)a).ToArray();
|
|
|
|
|
|
isArray = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (value is object[] valueArray)
|
|
|
|
|
|
{
|
|
|
|
|
|
values = [.. valueArray];
|
|
|
|
|
|
isArray = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
values = [value];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
switch (fieldDbSource)
|
|
|
|
|
|
{
|
|
|
|
|
|
case DbType.Guid:
|
2025-10-08 09:04:32 +00:00
|
|
|
|
var guidValues = values.Select(a =>
|
|
|
|
|
|
{
|
|
|
|
|
|
if (a == null)
|
|
|
|
|
|
return (Guid?)null;
|
|
|
|
|
|
|
|
|
|
|
|
var str = a.ToString();
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(str))
|
|
|
|
|
|
return (Guid?)null;
|
|
|
|
|
|
|
|
|
|
|
|
return Guid.TryParse(str, out var g) ? g : (Guid?)null;
|
|
|
|
|
|
}).ToArray();
|
2025-05-06 06:45:49 +00:00
|
|
|
|
value = isArray ? guidValues : guidValues[0];
|
|
|
|
|
|
break;
|
|
|
|
|
|
case DbType.String:
|
|
|
|
|
|
case DbType.AnsiString:
|
|
|
|
|
|
var strValues = values.Select(a => a?.ToString()).ToArray();
|
|
|
|
|
|
value = string.Join(PlatformConsts.MultiValueDelimiter, strValues);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case DbType.Date:
|
|
|
|
|
|
case DbType.DateTime:
|
|
|
|
|
|
case DbType.DateTime2:
|
|
|
|
|
|
case DbType.DateTimeOffset:
|
|
|
|
|
|
//"2025-01-03"
|
|
|
|
|
|
// var dateValues = values.Select(a => DateTimeOffset.ParseExact(a.ToString(), "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal).ToUniversalTime()).ToArray();
|
|
|
|
|
|
// value = isArray ? dateValues : dateValues[0];
|
|
|
|
|
|
// break;
|
|
|
|
|
|
//"2025-01-03T11:58:00+03:00"
|
|
|
|
|
|
var dateTimeValues = values.Select(a => DateTimeOffset.Parse(a.ToString()).ToUniversalTime()).ToArray();
|
|
|
|
|
|
value = isArray ? dateTimeValues : dateTimeValues[0];
|
|
|
|
|
|
break;
|
|
|
|
|
|
case DbType.Int16:
|
|
|
|
|
|
case DbType.Int32:
|
|
|
|
|
|
case DbType.Int64:
|
|
|
|
|
|
case DbType.VarNumeric:
|
|
|
|
|
|
case DbType.Decimal:
|
|
|
|
|
|
case DbType.Double:
|
|
|
|
|
|
case DbType.Single:
|
|
|
|
|
|
case DbType.UInt16:
|
|
|
|
|
|
case DbType.UInt32:
|
|
|
|
|
|
case DbType.UInt64:
|
|
|
|
|
|
var intValues = values.Select(a => double.Parse(a.ToString())).ToArray();
|
|
|
|
|
|
value = isArray ? intValues : intValues[0];
|
|
|
|
|
|
break;
|
|
|
|
|
|
case DbType.Boolean:
|
|
|
|
|
|
var boolValues = values.Select(a => a != null && a.ToString().ToLower() != "false" && a.ToString() != "0").ToArray();
|
|
|
|
|
|
value = isArray ? boolValues : boolValues[0];
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return value;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|