Global 2
Global 2
using System.Collections.Generic;
using System.Linq;
using System.Text;
// إضافة جملةSELECT
var columns = new List<string>();
foreach (var entry in selectColumns)
{
columns.AddRange(entry.Value.Select(column => $"{entry.Key}.
{column}"));
}
queryBuilder.AppendLine($"SELECT {string.Join(", ", columns)}");
// إضافة الجداول
queryBuilder.AppendLine($"FROM {string.Join(", ",
tableDefinitions.Select(td => $"{td.TableName} AS {td.TableName.Substring(0,
2).ToUpper()}"))}");
// إضافة الفالتر
if (filters != null && filters.Any())
{
var conditions = new List<string>();
foreach (var filter in filters)
{
switch (filter.Value.FilterType)
{
case FilterType.Range:
if (filter.Value.Range.Min != null &&
filter.Value.Range.Max != null)
{
conditions.Add($"{filter.Key} BETWEEN
{FilterValue(filter.Value.Range.Min)} AND {FilterValue(filter.Value.Range.Max)}");
}
break;
case FilterType.MultiSelect:
if (filter.Value.MultiSelectValues != null &&
filter.Value.MultiSelectValues.Any())
{
var values = string.Join(", ",
filter.Value.MultiSelectValues);
conditions.Add($"{filter.Key} IN ({values})");
}
break;
case FilterType.GreaterThan:
if (filter.Value.Value != null)
{
conditions.Add($"{filter.Key} >
{FilterValue(filter.Value.Value)}");
}
break;
case FilterType.LessThan:
if (filter.Value.Value != null)
{
conditions.Add($"{filter.Key} <
{FilterValue(filter.Value.Value)}");
}
break;
case FilterType.Equal:
if (filter.Value.Value != null)
{
conditions.Add($"{filter.Key} =
{FilterValue(filter.Value.Value)}");
}
break;
case FilterType.Text:
if (!string.IsNullOrEmpty(filter.Value.Text))
{
conditions.Add($"{filter.Key} LIKE '%
{filter.Value.Text}%'");
}
break;
}
}
if (conditions.Any())
{
queryBuilder.AppendLine("WHERE " + string.Join(" AND ",
conditions));
}
}
return queryBuilder.ToString();
}