using System; using System.Data; using System.Linq; using System.Text.Json; namespace Kurs.Platform.Queries; public class QueryHelper { /// gelen parametrelere gore [Value] yada 'Value' seklinde sonuc dondurur /// /// /// /// 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: 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(); 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; } }