erp-platform/api/src/Kurs.Platform.Domain.Shared/TableNameResolver.cs

203 lines
16 KiB
C#
Raw Normal View History

2025-10-20 11:32:41 +00:00
using System;
using System.Collections.Generic;
namespace Kurs.Platform.Enums;
public static class TableNameResolver
{
public const string ViewPrefix = "V_";
2025-10-20 11:32:41 +00:00
// 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)
2025-10-20 11:32:41 +00:00
{
// 🔹 MODULE TABLOLARI
{ nameof(TableNameEnum.Language), (TablePrefix.PlatformByName, MenuPrefix.Platform) },
{ nameof(TableNameEnum.LanguageKey), (TablePrefix.PlatformByName, MenuPrefix.Platform) },
{ nameof(TableNameEnum.LanguageText), (TablePrefix.PlatformByName, MenuPrefix.Platform) },
{ nameof(TableNameEnum.SettingDefinition), (TablePrefix.PlatformByName, MenuPrefix.Platform) },
{ nameof(TableNameEnum.Notification), (TablePrefix.PlatformByName, MenuPrefix.Platform) },
{ nameof(TableNameEnum.NotificationRule), (TablePrefix.PlatformByName, MenuPrefix.Platform) },
{ nameof(TableNameEnum.BackgroundWorker_MailQueue), (TablePrefix.PlatformByName, MenuPrefix.Platform) },
{ nameof(TableNameEnum.BackgroundWorker_MailQueueEvents), (TablePrefix.PlatformByName, MenuPrefix.Platform) },
{ nameof(TableNameEnum.BackgroundWorker_MailQueueTableFormat), (TablePrefix.PlatformByName, MenuPrefix.Platform) },
{ nameof(TableNameEnum.AiBot), (TablePrefix.PlatformByName, MenuPrefix.Platform) },
2025-10-20 11:32:41 +00:00
// 🔹 PLATFORM TABLOLARI
{ nameof(TableNameEnum.Route), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.Menu), (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.ContactTag), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.ContactTitle), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.Currency), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.CountryGroup), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.Country), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.City), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.District), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.BackgroundWorker), (TablePrefix.PlatformByName, MenuPrefix.Platform) },
{ nameof(TableNameEnum.ForumCategory), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.ForumTopic), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.ForumPost), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
2025-10-20 11:32:41 +00:00
// 🔹 TENANT TABLOLARI (GENEL)
{ nameof(TableNameEnum.Activity), (TablePrefix.TenantByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.Branch), (TablePrefix.TenantByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.BranchUsers), (TablePrefix.TenantByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.GlobalSearch), (TablePrefix.TenantByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.CustomEntity), (TablePrefix.TenantByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.CustomEntityField), (TablePrefix.TenantByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.ApiMigration), (TablePrefix.TenantByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.ApiEndpoint), (TablePrefix.TenantByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.CustomEndpoint), (TablePrefix.TenantByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.CustomComponent), (TablePrefix.TenantByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.ReportCategory), (TablePrefix.TenantByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.ReportTemplate), (TablePrefix.TenantByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.ReportParameter), (TablePrefix.TenantByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.ReportGenerated), (TablePrefix.TenantByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.IpRestriction), (TablePrefix.TenantByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.Sector), (TablePrefix.TenantByName, MenuPrefix.Saas) },
2025-10-20 11:32:41 +00:00
// 🔹 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.Behavior), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.EducationStatus), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.Disease), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.Psychologist), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.Vaccine), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.Lawyer), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.Document), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.Vehicle), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.WorkHour), (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.Partner), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.PartnerBank), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.PartnerCertificate), (TablePrefix.TenantByName, MenuPrefix.Administration) },
{ nameof(TableNameEnum.PartnerContact), (TablePrefix.TenantByName, MenuPrefix.Administration) },
2025-10-20 11:32:41 +00:00
// 🔹 PARTICIPANT
{ nameof(TableNameEnum.Interesting), (TablePrefix.TenantByName, MenuPrefix.Participant) },
{ nameof(TableNameEnum.Source), (TablePrefix.TenantByName, MenuPrefix.Participant) },
{ nameof(TableNameEnum.NoteType), (TablePrefix.TenantByName, MenuPrefix.Participant) },
{ nameof(TableNameEnum.SalesRejectionReason), (TablePrefix.TenantByName, MenuPrefix.Participant) },
{ nameof(TableNameEnum.MeetingMethod), (TablePrefix.TenantByName, MenuPrefix.Participant) },
{ nameof(TableNameEnum.MeetingResult), (TablePrefix.TenantByName, MenuPrefix.Participant) },
2025-10-20 11:32:41 +00:00
// 🔹 COORDINATOR
{ nameof(TableNameEnum.Schedule), (TablePrefix.BranchByName, MenuPrefix.Coordinator) },
{ nameof(TableNameEnum.ScheduleLesson), (TablePrefix.BranchByName, MenuPrefix.Coordinator) },
{ nameof(TableNameEnum.RegistrationType), (TablePrefix.BranchByName, MenuPrefix.Coordinator) },
{ nameof(TableNameEnum.RegistrationMethod), (TablePrefix.BranchByName, MenuPrefix.Coordinator) },
{ nameof(TableNameEnum.ClassType), (TablePrefix.BranchByName, MenuPrefix.Coordinator) },
{ nameof(TableNameEnum.Class), (TablePrefix.BranchByName, MenuPrefix.Coordinator) },
{ nameof(TableNameEnum.Level), (TablePrefix.BranchByName, MenuPrefix.Coordinator) },
{ nameof(TableNameEnum.LessonPeriod), (TablePrefix.BranchByName, MenuPrefix.Coordinator) },
{ nameof(TableNameEnum.ClassCancellationReason), (TablePrefix.TenantByName, MenuPrefix.Coordinator) },
{ nameof(TableNameEnum.Program), (TablePrefix.TenantByName, MenuPrefix.Coordinator) },
{ nameof(TableNameEnum.Classroom), (TablePrefix.TenantByName, MenuPrefix.Coordinator) },
{ nameof(TableNameEnum.ClassroomParticipant), (TablePrefix.TenantByName, MenuPrefix.Coordinator) },
{ nameof(TableNameEnum.ClassroomAttandance), (TablePrefix.TenantByName, MenuPrefix.Coordinator) },
{ nameof(TableNameEnum.ClassroomChat), (TablePrefix.TenantByName, MenuPrefix.Coordinator) },
{ nameof(TableNameEnum.QuestionTag), (TablePrefix.TenantByName, MenuPrefix.Coordinator) },
{ nameof(TableNameEnum.QuestionPool), (TablePrefix.TenantByName, MenuPrefix.Coordinator) },
{ nameof(TableNameEnum.Question), (TablePrefix.TenantByName, MenuPrefix.Coordinator) },
{ nameof(TableNameEnum.QuestionOption), (TablePrefix.TenantByName, MenuPrefix.Coordinator) },
2025-10-20 11:32:41 +00:00
2025-10-21 12:14:30 +00:00
// 🔹 HR
{ nameof(TableNameEnum.Department), (TablePrefix.TenantByName, MenuPrefix.Hr) },
{ nameof(TableNameEnum.EmploymentType), (TablePrefix.TenantByName, MenuPrefix.Hr) },
{ nameof(TableNameEnum.JobPosition), (TablePrefix.TenantByName, MenuPrefix.Hr) },
{ nameof(TableNameEnum.Badge), (TablePrefix.TenantByName, MenuPrefix.Hr) },
{ nameof(TableNameEnum.CostCenter), (TablePrefix.TenantByName, MenuPrefix.Hr) },
{ nameof(TableNameEnum.Employee), (TablePrefix.TenantByName, MenuPrefix.Hr) },
{ nameof(TableNameEnum.Leave), (TablePrefix.TenantByName, MenuPrefix.Hr) },
{ nameof(TableNameEnum.Overtime), (TablePrefix.TenantByName, MenuPrefix.Hr) },
{ nameof(TableNameEnum.Payroll), (TablePrefix.TenantByName, MenuPrefix.Hr) },
{ nameof(TableNameEnum.PayrollItem), (TablePrefix.TenantByName, MenuPrefix.Hr) },
{ nameof(TableNameEnum.Template360), (TablePrefix.TenantByName, MenuPrefix.Hr) },
{ nameof(TableNameEnum.Performance360), (TablePrefix.TenantByName, MenuPrefix.Hr) },
{ nameof(TableNameEnum.Expense), (TablePrefix.TenantByName, MenuPrefix.Hr) },
{ nameof(TableNameEnum.Survey), (TablePrefix.TenantByName, MenuPrefix.Hr) },
{ nameof(TableNameEnum.SurveyQuestion), (TablePrefix.TenantByName, MenuPrefix.Hr) },
{ nameof(TableNameEnum.SurveyQuestionOption), (TablePrefix.TenantByName, MenuPrefix.Hr) },
{ nameof(TableNameEnum.SurveyAnswer), (TablePrefix.TenantByName, MenuPrefix.Hr) },
{ nameof(TableNameEnum.SurveyResponse), (TablePrefix.TenantByName, MenuPrefix.Hr) },
2025-10-25 20:30:01 +00:00
// Intranet
{ nameof(TableNameEnum.EventCategory), (TablePrefix.TenantByName, MenuPrefix.Intranet) },
{ nameof(TableNameEnum.EventType), (TablePrefix.TenantByName, MenuPrefix.Intranet) },
{ nameof(TableNameEnum.Event), (TablePrefix.TenantByName, MenuPrefix.Intranet) },
{ nameof(TableNameEnum.EventPhoto), (TablePrefix.TenantByName, MenuPrefix.Intranet) },
{ nameof(TableNameEnum.EventComment), (TablePrefix.TenantByName, MenuPrefix.Intranet) },
{ nameof(TableNameEnum.Training), (TablePrefix.TenantByName, MenuPrefix.Intranet) },
{ nameof(TableNameEnum.Certificate), (TablePrefix.TenantByName, MenuPrefix.Intranet) },
{ nameof(TableNameEnum.Meal), (TablePrefix.BranchByName, MenuPrefix.Intranet) },
{ nameof(TableNameEnum.Reservation), (TablePrefix.TenantByName, MenuPrefix.Intranet) },
{ nameof(TableNameEnum.ShuttleRoute), (TablePrefix.TenantByName, MenuPrefix.Intranet) },
{ nameof(TableNameEnum.Announcement), (TablePrefix.TenantByName, MenuPrefix.Intranet) },
{ nameof(TableNameEnum.Visitor), (TablePrefix.TenantByName, MenuPrefix.Intranet) },
{ nameof(TableNameEnum.SocialPost), (TablePrefix.TenantByName, MenuPrefix.Intranet) },
{ nameof(TableNameEnum.SocialLocation), (TablePrefix.TenantByName, MenuPrefix.Intranet) },
{ nameof(TableNameEnum.SocialMedia), (TablePrefix.TenantByName, MenuPrefix.Intranet) },
{ nameof(TableNameEnum.SocialPollOption), (TablePrefix.TenantByName, MenuPrefix.Intranet) },
{ nameof(TableNameEnum.SocialComment), (TablePrefix.TenantByName, MenuPrefix.Intranet) },
{ nameof(TableNameEnum.SocialLike), (TablePrefix.TenantByName, MenuPrefix.Intranet) },
2025-10-21 12:14:30 +00:00
//Supply Chain
{ nameof(TableNameEnum.MaterialType), (TablePrefix.TenantByName, MenuPrefix.SupplyChain) },
{ nameof(TableNameEnum.MaterialGroup), (TablePrefix.TenantByName, MenuPrefix.SupplyChain) },
{ nameof(TableNameEnum.PaymentTerm), (TablePrefix.TenantByName, MenuPrefix.SupplyChain) },
{ nameof(TableNameEnum.SupplyType), (TablePrefix.TenantByName, MenuPrefix.SupplyChain) },
{ nameof(TableNameEnum.SupplyCardType), (TablePrefix.TenantByName, MenuPrefix.SupplyChain) },
2025-10-31 22:16:46 +00:00
//Crm
{ nameof(TableNameEnum.CustomerSegment), (TablePrefix.TenantByName, MenuPrefix.Crm) },
{ nameof(TableNameEnum.CustomerType), (TablePrefix.TenantByName, MenuPrefix.Crm) },
2025-10-20 11:32:41 +00:00
// 🔹 ACCOUNTING
{ nameof(TableNameEnum.Bank), (TablePrefix.TenantByName, MenuPrefix.Accounting) },
{ nameof(TableNameEnum.BankAccount), (TablePrefix.TenantByName, MenuPrefix.Accounting) },
2025-10-20 11:32:41 +00:00
};
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);
}
2025-10-20 11:32:41 +00:00
}