using System.Text.Json;
using Sozsoft.Platform.Enums;
using Sozsoft.Platform.ListForms;
using static Sozsoft.Platform.PlatformConsts;
namespace Sozsoft.Platform;
public static class LookupQueryValues
{
private const string defaultDomain = "Sozsoft";
public static string DefaultLookupQueryJson(
string TableName,
string ValueExpr,
string DisplayExpr,
bool isTable = true,
bool isDeleted = false) => JsonSerializer.Serialize(new LookupDto
{
DataSourceType = UiLookupDataSourceTypeEnum.Query,
ValueExpr = "Key",
DisplayExpr = "Name",
LookupQuery = $"SELECT " +
$"\"{ValueExpr}\" AS \"Key\", " +
$"\"{DisplayExpr}\" AS \"Name\" " +
$"FROM \"{(isTable ? TableNameResolver.GetFullTableName($"{TableName}") : TableNameResolver.GetFullViewName($"{TableName}"))}\" " +
(!isDeleted ? "" : $"WHERE \"IsDeleted\" = 'false'") +
$"ORDER BY \"{DisplayExpr}\";"
});
public static string DefaultLookupQuery(
string TableName,
string ValueExpr,
string DisplayExpr,
bool isTable = true,
bool isDeleted = false)
{
return $"SELECT " +
$"\"{ValueExpr}\" AS \"Key\", " +
$"\"{DisplayExpr}\" AS \"Name\" " +
$"FROM \"{(isTable ? TableNameResolver.GetFullTableName($"{TableName}") : TableNameResolver.GetFullViewName($"{TableName}"))}\" " +
(!isDeleted ? "" : $"WHERE \"IsDeleted\" = 'false'") +
$"ORDER BY \"{DisplayExpr}\";";
}
public static string TenantValues(bool alwaysName = false)
{
if (alwaysName)
{
return $"SELECT * FROM (" +
$"SELECT " +
$"\"AbpTenants\".\"Name\" AS \"Key\", " +
$"\"AbpTenants\".\"Name\" AS \"Name\" " +
$"FROM \"AbpTenants\"" +
$") AS \"List\" " +
$"ORDER BY \"Name\"";
}
else
{
return $"SELECT * FROM (" +
// $"SELECT NULL AS \"Key\", 'Host' AS \"Name\" " +
// $"UNION ALL " +
$"SELECT " +
$"\"AbpTenants\".\"Id\" AS \"Key\", " +
$"\"AbpTenants\".\"Name\" AS \"Name\" " +
$"FROM \"AbpTenants\"" +
$") AS \"List\" " +
$"ORDER BY \"Name\"";
}
}
public static string LanguageKeyValues =
$"SELECT " +
$"\"{FullNameTable(TableNameEnum.LanguageKey)}\".\"Key\", " +
$"CONCAT(" +
$"\"{FullNameTable(TableNameEnum.LanguageKey)}\".\"Key\", " +
$"' (', " +
$"\"{FullNameTable(TableNameEnum.LanguageText)}\".\"Value\", " +
$"')'" +
$") AS \"Name\" " +
$"FROM \"{FullNameTable(TableNameEnum.LanguageKey)}\" " +
$"LEFT OUTER JOIN \"{FullNameTable(TableNameEnum.LanguageText)}\" " +
$"ON \"{FullNameTable(TableNameEnum.LanguageKey)}\".\"Key\" = \"{FullNameTable(TableNameEnum.LanguageText)}\".\"Key\" " +
$"AND \"{FullNameTable(TableNameEnum.LanguageKey)}\".\"ResourceName\" = \"{FullNameTable(TableNameEnum.LanguageText)}\".\"ResourceName\" " +
$"WHERE " +
$"\"{FullNameTable(TableNameEnum.LanguageText)}\".\"CultureName\" = 'tr' " +
$"ORDER BY \"{FullNameTable(TableNameEnum.LanguageKey)}\".\"Key\";";
public static string CustomComponentValues =
$"SELECT " +
$"\"Name\" AS \"Key\", " +
$"\"Name\" AS \"Name\" " +
$"FROM \"{FullNameTable(TableNameEnum.CustomComponent)}\" " +
$"WHERE " +
$"\"IsActive\" = 'true' " +
$"AND \"IsDeleted\" = 'false' " +
$"ORDER BY \"Name\";";
public static string CountryValues =
$"SELECT " +
$"\"Id\" AS \"Key\", " +
$"\"Name\" AS \"Name\" " +
$"FROM \"{FullNameTable(TableNameEnum.Country)}\" " +
$"WHERE \"IsDeleted\" = 'false' " +
$"ORDER BY \"Name\";";
public static string CityValues =
$"SELECT " +
$"\"Name\" AS \"Key\", " +
$"\"Name\" AS \"Name\" " +
$"FROM \"{FullNameTable(TableNameEnum.City)}\" " +
$"WHERE " +
$"(\"Country\" = @param0 OR @param0 IS NULL) " +
$"AND \"IsDeleted\" = 'false' " +
$"ORDER BY \"Name\";";
public static string DistrictValues =
$"SELECT " +
$"\"Name\" AS \"Key\", " +
$"\"Name\" AS \"Name\" " +
$"FROM \"{FullNameTable(TableNameEnum.District)}\" " +
$"WHERE " +
$"(\"Country\" = @param0 OR @param0 IS NULL) " +
$"AND (\"City\" = @param1 OR @param1 IS NULL) " +
$"AND \"IsDeleted\" = 'false' " +
$"GROUP BY \"Name\" " +
$"ORDER BY \"Name\";";
public static string TownshipValues =
$"SELECT " +
$"\"Township\" AS \"Key\", " +
$"\"Township\" AS \"Name\", " +
$"\"PostalCode\" AS \"Group\" " +
$"FROM \"{FullNameTable(TableNameEnum.District)}\" " +
$"WHERE " +
$"(\"Country\" = @param0 OR @param0 IS NULL) " +
$"AND (\"City\" = @param1 OR @param1 IS NULL) " +
$"AND (\"Name\" = @param2 OR @param2 IS NULL) " +
$"AND \"IsDeleted\" = 'false' " +
$"GROUP BY \"Township\", \"PostalCode\" " +
$"ORDER BY \"Township\";";
public static string RoleValues =
$"SELECT " +
$"\"Id\" AS \"Key\", " +
$"\"Name\" AS \"Name\" " +
$"FROM \"AbpRoles\"" +
$"ORDER BY \"Name\"";
///
/// Manuel bildirim alicilari: yalnizca oturumun kiracisindaki aktif kullanicilar. Kiraci
/// filtresi '@TENANTID' ile kurulur, host baglaminda "IS NULL" olarak cozulur.
///
public static string TenantUserValues =
$"SELECT " +
$"\"Id\" AS \"Key\", " +
$"CONCAT(\"Name\", ' ', \"Surname\", ' (', \"UserName\", ')') AS \"Name\" " +
$"FROM \"AbpUsers\" " +
$"WHERE " +
$"\"IsDeleted\" = 'false' " +
$"AND \"IsActive\" = 'true' " +
$"AND \"TenantId\" = '@TENANTID' " +
$"ORDER BY \"Name\";";
///
/// Manuel gonderimde secilebilen aktif sablonlar. Konu ve govde de secilir: ekrandaki
/// copy kurali sablon secilince bu kolonlari forma tasir (EditorScript).
///
public static string NotificationTemplateValues =
$"SELECT " +
$"\"Id\" AS \"Key\", " +
$"\"Name\" AS \"Name\", " +
$"\"Subject\", " +
$"\"Body\" " +
$"FROM \"{FullNameTable(TableNameEnum.NotificationTemplate)}\" " +
$"WHERE " +
$"\"IsDeleted\" = 'false' " +
$"AND \"IsActive\" = 'true' " +
$"AND \"TenantId\" = '@TENANTID' " +
$"ORDER BY \"Name\";";
///
/// Oturumun kiracisina ait sektorler. Tablo kiraci basina ayristigi icin filtre '@TENANTID'
/// ile kurulur; host baglaminda "IS NULL" olarak cozulur.
///
public static string TenantSectorValues =
$"SELECT " +
$"\"Id\" AS \"Key\", " +
$"\"Name\" AS \"Name\" " +
$"FROM \"{FullNameTable(TableNameEnum.Sector)}\" " +
$"WHERE " +
$"\"IsDeleted\" = 'false' " +
$"AND \"TenantId\" = '@TENANTID' " +
$"ORDER BY \"Name\";";
///
/// Saglik kartindaki hekim secimi. Hr_T_Doctor wizard ile uretilen bir tablodur (entity'si
/// yoktur); diploma ve isyeri hekimligi belgesi kolonlari da secilir, detay ekrani secilen
/// hekimin bu bilgilerini gosterir.
///
public static string TenantDoctorValues =
$"SELECT " +
$"\"Id\" AS \"Key\", " +
$"\"FullName\" AS \"Name\", " +
$"\"DiplomaNo\", " +
$"\"DiplomaDate\", " +
$"\"OhsCertificateNo\", " +
$"\"OhsCertificateDate\" " +
$"FROM \"Hr_T_Doctor\" " +
$"WHERE " +
$"\"IsDeleted\" = 'false' " +
$"AND \"IsActive\" = 'true' " +
$"AND \"TenantId\" = '@TENANTID' " +
$"ORDER BY \"FullName\";";
public static string UserValues =
$"SELECT " +
$"\"Id\" AS \"Key\", " +
$"\"UserName\" AS \"Name\" " +
$"FROM \"AbpUsers\"" +
$"ORDER BY \"Name\"";
public static string BranchValues =
$"SELECT \"Id\" AS \"Key\", " +
$"\"Name\" AS \"Name\" " +
$"FROM \"{defaultDomain}\".\"dbo\".\"{FullNameTable(TableNameEnum.Branch)}\" " +
$"WHERE " +
$"\"TenantId\" = '@TENANTID' " + // 🔹 Bu form doğru — Replace hedefi bu.
$"AND \"IsDeleted\" = 'false' " +
$"AND \"Id\" IN ( " +
$"SELECT \"BranchId\" " +
$"FROM \"{FullNameTable(TableNameEnum.BranchUsers)}\" " +
$"WHERE \"UserId\" = '@USERID' " + // 🔹 Bu da doğru.
$") " +
$"ORDER BY \"Name\";";
public static string PermissionNameValues =
$"SELECT \"Name\" AS \"Key\", " +
$"CONCAT(\"Name\", ' (', \"DisplayName\", ')') AS \"Name\" " +
$"FROM \"AbpPermissions\" " +
$"WHERE \"IsEnabled\" = 'true' " +
$"ORDER BY \"Name\";";
public static string PermissionGroupValues =
$"SELECT \"Name\" AS \"Key\", " +
$"\"DisplayName\" AS \"Name\" " +
$"FROM \"AbpPermissionGroups\" " +
$"ORDER BY \"Name\";";
public static string ModuleValues =
$"SELECT " +
$"\"Id\" AS \"Key\", " +
$"\"Name\" AS \"Name\" " +
$"FROM \"{TableNameResolver.GetFullTableName(nameof(TableNameEnum.Module))}\" " +
$"ORDER BY \"Name\";";
public static string ProductValues =
$"SELECT " +
$"\"{FullNameTable(TableNameEnum.Product)}\".\"Id\" AS \"Key\", " +
$"\"{FullNameTable(TableNameEnum.LanguageText)}\".\"Value\" AS \"Name\" " +
$"FROM \"{FullNameTable(TableNameEnum.Product)}\" " +
$"LEFT OUTER JOIN \"{FullNameTable(TableNameEnum.LanguageText)}\" " +
$"ON \"{FullNameTable(TableNameEnum.Product)}\".\"Name\" = \"{FullNameTable(TableNameEnum.LanguageText)}\".\"Key\" " +
$"WHERE \"{FullNameTable(TableNameEnum.Product)}\".\"IsDeleted\" = 'false' " +
$"AND \"{FullNameTable(TableNameEnum.LanguageText)}\".\"CultureName\" = 'tr' " +
$"ORDER BY \"{FullNameTable(TableNameEnum.LanguageText)}\".\"Value\";";
public static string MenuCodeValues =
$"SELECT " +
$"\"Code\" AS \"Key\", " +
$"\"DisplayName\" AS \"Name\" " +
$"FROM \"{TableNameResolver.GetFullTableName(nameof(TableNameEnum.Menu))}\" " +
$"WHERE \"IsDisabled\" = 'false' " +
$"ORDER BY \"ParentCode\", \"Order\";";
public static string OrganizationUnitSalesTeamValues =
$"SELECT " +
$"\"Code\" AS \"Key\", " +
$"\"DisplayName\" AS \"Name\" " +
$"FROM \"AbpOrganizationUnits\"" +
$"WHERE \"Code\" LIKE '00001%' " +
$"ORDER BY \"DisplayName\"";
public static string RouteKeyValues =
$@"SELECT
""Path"" AS ""Key"",
""Path"" AS ""Name""
FROM ""{FullNameTable(TableNameEnum.Route)}""
GROUP BY ""Path""
UNION
SELECT
'/admin/list/' + ""ListFormCode"" AS ""Key"",
'/admin/list/' + ""ListFormCode"" AS ""Name""
FROM ""{FullNameTable(TableNameEnum.ListForm)}""
GROUP BY ""ListFormCode"";";
public static string DepartmentValues =
$"SELECT " +
$"\"Id\" AS \"Key\", " +
$"\"Name\" AS \"Name\" " +
$"FROM \"{TableNameResolver.GetFullTableName(nameof(TableNameEnum.Department))}\" " +
$"WHERE \"IsDeleted\" = 'false' " +
$"ORDER BY \"Name\";";
// Lookup sorgusu ekranın tenant filtresinden geçmez; kiracı kırılımı token ile sorguda yazılır.
public static string TenantBranchValues =
$"SELECT " +
$"\"Id\" AS \"Key\", " +
$"\"Name\" AS \"Name\" " +
$"FROM \"{TableNameResolver.GetFullTableName(nameof(TableNameEnum.Branch))}\" " +
$"WHERE " +
$"\"TenantId\" = '{DefaultValues.TenantId}' " +
$"AND \"IsDeleted\" = 'false' " +
$"ORDER BY \"Name\";";
// Hr_T_BenefitType wizard ile seed scriptinden kurulur, entity'si yoktur; ad bu yuzden sabit yazilir.
// Deger Code'dur: UserBenefit.BenefitType metin kolonudur ve kod kiracinin tanimladigi turle eslesir.
public static string BenefitTypeValues =
$"SELECT " +
$"\"Code\" AS \"Key\", " +
$"\"Name\" AS \"Name\" " +
$"FROM \"Hr_T_BenefitType\" " +
$"WHERE " +
$"\"TenantId\" = '{DefaultValues.TenantId}' " +
$"AND \"IsActive\" = 'true' " +
$"AND \"IsDeleted\" = 'false' " +
$"ORDER BY \"Name\";";
public static string BranchDepartmentValues =
$"SELECT " +
$"\"Id\" AS \"Key\", " +
$"\"Name\" AS \"Name\" " +
$"FROM \"{TableNameResolver.GetFullTableName(nameof(TableNameEnum.Department))}\" " +
$"WHERE " +
$"(\"BranchId\" = @param0 OR @param0 IS NULL) " +
$"AND \"IsDeleted\" = 'false' " +
$"ORDER BY \"Name\";";
public static string JobPositionValues =
$"SELECT " +
$"\"Id\" AS \"Key\", " +
$"\"Name\" AS \"Name\" " +
$"FROM \"{TableNameResolver.GetFullTableName(nameof(TableNameEnum.JobPosition))}\" " +
$"WHERE " +
$"(\"DepartmentId\" = @param0 OR @param0 IS NULL) " +
$"AND \"IsDeleted\" = 'false' " +
$"ORDER BY \"Name\";";
public static string JobPositionFullValues =
$";WITH \"DepartmentTree\" AS " +
$"( " +
$"SELECT \"Id\", \"ParentId\" " +
$"FROM \"{TableNameResolver.GetFullTableName(nameof(TableNameEnum.Department))}\" " +
$"WHERE \"Id\" = @param0 " +
$"OR @param0 IS NULL " +
$"UNION ALL " +
$"SELECT d.\"Id\", d.\"ParentId\" " +
$"FROM \"{TableNameResolver.GetFullTableName(nameof(TableNameEnum.Department))}\" d " +
$"INNER JOIN \"DepartmentTree\" dt " +
$"ON d.\"Id\" = dt.\"ParentId\" " +
$") " +
$"SELECT " +
$"jp.\"Id\" AS \"Key\", " +
$"jp.\"Name\" AS \"Name\" " +
$"FROM \"{TableNameResolver.GetFullTableName(nameof(TableNameEnum.JobPosition))}\" jp " +
$"WHERE " +
$"jp.\"IsDeleted\" = 'false' " +
$"AND " +
$"( " +
$"jp.\"DepartmentId\" IN (SELECT \"Id\" FROM \"DepartmentTree\") " +
$"OR jp.\"ParentId\" IS NULL " +
$") " +
$"ORDER BY jp.\"Name\";";
public static string SurveyQuestionValues =
$"SELECT " +
$"\"Id\" AS \"Key\", " +
$"\"QuestionText\" AS \"Name\" " +
$"FROM \"{TableNameResolver.GetFullTableName(nameof(TableNameEnum.SurveyQuestion))}\" " +
$"WHERE \"IsDeleted\" = 'false' " +
$"ORDER BY \"QuestionText\";";
/// Hr_T_Shift wizard ile uretilen bir tablodur (entity'si yoktur); kullanici bir vardiyaya baglanir.
public static string TenantShiftValues =
$"SELECT " +
$"\"Id\" AS \"Key\", " +
$"\"Name\" + ' (' + \"StartTime\" + '-' + \"EndTime\" + ')' AS \"Name\" " +
$"FROM \"Hr_T_Shift\" " +
$"WHERE " +
$"\"IsDeleted\" = 'false' " +
$"AND \"IsActive\" = 'true' " +
$"AND \"TenantId\" = '@TENANTID' " +
$"ORDER BY \"StartTime\";";
/// SGK cikis kodlari host tanimidir; kiraci filtresi yoktur, kod adla birlikte gosterilir.
public static string TerminationReasonValues =
$"SELECT " +
$"\"Id\" AS \"Key\", " +
$"\"Code\" + ' - ' + \"Name\" AS \"Name\" " +
$"FROM \"{FullNameTable(TableNameEnum.TerminationReason)}\" " +
$"WHERE " +
$"\"IsDeleted\" = 'false' " +
$"AND \"IsActive\" = 'true' " +
$"ORDER BY \"Code\";";
/// Hr_T_Certificate wizard ile uretilen bir tablodur; kullanicinin belgesi buradaki tanima baglanir.
public static string TenantCertificateValues =
$"SELECT " +
$"\"Id\" AS \"Key\", " +
$"\"Name\" AS \"Name\" " +
$"FROM \"Hr_T_Certificate\" " +
$"WHERE " +
$"\"IsDeleted\" = 'false' " +
$"AND \"IsActive\" = 'true' " +
$"AND \"TenantId\" = '@TENANTID' " +
$"ORDER BY \"Name\";";
// Diller de bir yetenek tipidir (Languages); dil listesi o tipe, yetenek listesi diger tiplere suzulur.
private const string LanguageSkillTypeName = "Languages";
public static string TenantLanguageSkillValues =
$"SELECT " +
$"s.\"Id\" AS \"Key\", " +
$"s.\"Name\" AS \"Name\" " +
$"FROM \"{FullNameTable(TableNameEnum.Skill)}\" s " +
$"INNER JOIN \"{FullNameTable(TableNameEnum.SkillType)}\" t ON t.\"Id\" = s.\"SkillTypeId\" " +
$"WHERE " +
$"s.\"IsDeleted\" = 'false' " +
$"AND t.\"Name\" = '{LanguageSkillTypeName}' " +
$"AND s.\"TenantId\" = '@TENANTID' " +
$"ORDER BY s.\"Name\";";
/// Secilen dilin tipine ait seviyeler (A1-C2); @param0 dilin SkillId'sidir.
public static string TenantSkillLevelBySkillValues =
$"SELECT " +
$"l.\"Id\" AS \"Key\", " +
$"l.\"Name\" AS \"Name\" " +
$"FROM \"{FullNameTable(TableNameEnum.SkillLevel)}\" l " +
$"INNER JOIN \"{FullNameTable(TableNameEnum.Skill)}\" s ON s.\"SkillTypeId\" = l.\"SkillTypeId\" " +
$"WHERE " +
$"(s.\"Id\" = @param0 OR @param0 IS NULL) " +
$"AND l.\"IsDeleted\" = 'false' " +
$"AND l.\"TenantId\" = '@TENANTID' " +
$"ORDER BY l.\"Progress\";";
public static string TenantNonLanguageSkillValues =
$"SELECT " +
$"s.\"Id\" AS \"Key\", " +
$"t.\"Name\" + ' - ' + s.\"Name\" AS \"Name\" " +
$"FROM \"{FullNameTable(TableNameEnum.Skill)}\" s " +
$"INNER JOIN \"{FullNameTable(TableNameEnum.SkillType)}\" t ON t.\"Id\" = s.\"SkillTypeId\" " +
$"WHERE " +
$"s.\"IsDeleted\" = 'false' " +
$"AND t.\"Name\" <> '{LanguageSkillTypeName}' " +
$"AND s.\"TenantId\" = '@TENANTID' " +
$"ORDER BY t.\"Name\", s.\"Name\";";
public static string TechnicalSkillsValues =
$"SELECT " +
$"\"Name\" AS \"Key\", " +
$"\"Name\" AS \"Name\" " +
$"FROM \"{FullNameTable(TableNameEnum.Skill)}\" " +
$"WHERE \"TenantId\" = '{DefaultValues.TenantId}' " +
$"AND \"IsDeleted\" = 'false' " +
$"AND \"SkillTypeId\" IN (SELECT \"Id\" FROM \"{FullNameTable(TableNameEnum.SkillType)}\" WHERE \"TenantId\" = '{DefaultValues.TenantId}' AND \"Name\"='Technical Skills' ) " +
$"ORDER BY \"Name\"";
public static string NotificationIdentityValues =
$"SELECT " +
$"\"Id\" AS \"Key\", " +
$"\"Name\" AS \"Name\" " +
$"FROM \"AbpRoles\"" +
$"UNION ALL " +
$"SELECT " +
$"\"Id\" AS \"Key\", " +
$"\"UserName\" AS \"Name\" " +
$"FROM \"AbpUsers\"" +
$"UNION ALL " +
$"SELECT " +
$"\"Id\" AS \"Key\", " +
$"\"DisplayName\" AS \"Name\" " +
$"FROM \"AbpOrganizationUnits\"" +
$"ORDER BY \"Name\"";
}