sozsoft-platform/api/src/Sozsoft.Platform.Application.Contracts/LookUpQueryValues.cs
2026-10-04 00:04:29 +03:00

485 lines
20 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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\"";
/// <summary>
/// Manuel bildirim alicilari: yalnizca oturumun kiracisindaki aktif kullanicilar. Kiraci
/// filtresi '@TENANTID' ile kurulur, host baglaminda "IS NULL" olarak cozulur.
/// </summary>
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\";";
/// <summary>
/// Manuel gonderimde secilebilen aktif sablonlar. Konu ve govde de secilir: ekrandaki
/// <c>copy</c> kurali sablon secilince bu kolonlari forma tasir (EditorScript).
/// </summary>
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\";";
/// <summary>
/// Oturumun kiracisina ait sektorler. Tablo kiraci basina ayristigi icin filtre '@TENANTID'
/// ile kurulur; host baglaminda "IS NULL" olarak cozulur.
/// </summary>
public static string TenantSectorValues =
$"SELECT " +
$"\"Id\" AS \"Key\", " +
$"\"Name\" AS \"Name\" " +
$"FROM \"{FullNameTable(TableNameEnum.Sector)}\" " +
$"WHERE " +
$"\"IsDeleted\" = 'false' " +
$"AND \"TenantId\" = '@TENANTID' " +
$"ORDER BY \"Name\";";
/// <summary>
/// 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.
/// </summary>
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\";";
/// <summary>Hr_T_Shift wizard ile uretilen bir tablodur (entity'si yoktur); kullanici bir vardiyaya baglanir.</summary>
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\";";
/// <summary>SGK cikis kodlari host tanimidir; kiraci filtresi yoktur, kod adla birlikte gosterilir.</summary>
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\";";
/// <summary>Hr_T_Certificate wizard ile uretilen bir tablodur; kullanicinin belgesi buradaki tanima baglanir.</summary>
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\";";
/// <summary>Secilen dilin tipine ait seviyeler (A1-C2); <c>@param0</c> dilin <c>SkillId</c>'sidir.</summary>
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\"";
}