sozsoft-platform/api/src/Sozsoft.Platform.Domain.Shared/TableNameResolver.cs
2026-03-03 00:34:19 +03:00

104 lines
7.5 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;
using System.Collections.Generic;
namespace Sozsoft.Platform.Enums;
public static class TableNameResolver
{
public const string ViewPrefix = "V_";
// Tüm tabloların hangi prefix tipine ve menü grubuna ait olduğunu belirten harita
private static readonly Dictionary<string, (Func<MenuPrefix, TableNameEnum, string> Method, MenuPrefix PrefixGroup)>
_map = new(StringComparer.OrdinalIgnoreCase)
{
// 🔹 SAAS TABLOLARI
{ nameof(TableNameEnum.LogEntry), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.AiBot), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.GlobalSearch), (TablePrefix.TenantByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.Branch), (TablePrefix.TenantByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.BranchUsers), (TablePrefix.TenantByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.SettingDefinition), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.Language), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.LanguageKey), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.LanguageText), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.DataSource), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.ListForm), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.ListFormField), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.ListFormCustomization), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.ListFormImport), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.ListFormImportExecute), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.Notification), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.NotificationRule), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.BackgroundWorker), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.BackgroundWorker_MailQueue), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.BackgroundWorker_MailQueueEvents), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.BackgroundWorker_MailQueueTableFormat), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.ForumCategory), (TablePrefix.TenantByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.ForumTopic), (TablePrefix.TenantByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.ForumPost), (TablePrefix.TenantByName, MenuPrefix.Saas) },
// 🔹 ADMINISTRATION TABLOLARI
{ nameof(TableNameEnum.ContactTitle), (TablePrefix.PlatformByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.Sector), (TablePrefix.PlatformByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.Currency), (TablePrefix.PlatformByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.CountryGroup), (TablePrefix.PlatformByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.Country), (TablePrefix.PlatformByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.City), (TablePrefix.PlatformByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.District), (TablePrefix.PlatformByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.WorkHour), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.SkillType), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.Skill), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.SkillLevel), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.UomCategory), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.Uom), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.IpRestriction), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.About), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.Service), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.Product), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.PaymentMethod), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.InstallmentOption), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.Order), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.OrderItem), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.BlogCategory), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.BlogPost), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.Demo), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.Contact), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.Route), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.Menu), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.Note), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.ReportCategory), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.ReportTemplate), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.CrudEndpoint), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.CustomEndpoint), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.CustomComponent), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.DynamicService), (TablePrefix.TenantByName, MenuPrefix.Administration) },
};
public static string GetFullTableName(string tableName)
{
if (!Enum.TryParse<TableNameEnum>(tableName, out var tableEnum))
throw new ArgumentException($"'{tableName}' geçerli bir TableNameEnum değil.");
if (!_map.TryGetValue(tableName, out var entry))
throw new KeyNotFoundException($"'{tableName}' için tablo eşlemesi bulunamadı.");
return entry.Method(entry.PrefixGroup, tableEnum);
}
public static string GetFullViewName(string tableName)
{
if (!Enum.TryParse<TableNameEnum>(tableName, out var tableEnum))
throw new ArgumentException($"'{tableName}' geçerli bir TableNameEnum değil.");
if (!_map.TryGetValue(tableName, out var entry))
throw new KeyNotFoundException($"'{tableName}' için tablo eşlemesi bulunamadı.");
return ViewPrefix + entry.Method(entry.PrefixGroup, tableEnum);
}
public static string GetFullSpecialViewName(MenuPrefix menu, string Prefix, string objectName)
{
return $"{ViewPrefix}{MenuPrefixExtensions.ToPrefix(menu)}_{Prefix}_{objectName}";
}
}