using System; using System.Collections.Generic; namespace Erp.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 Method, MenuPrefix PrefixGroup)> _map = new(StringComparer.OrdinalIgnoreCase) { // 🔹 MODULE TABLOLARI { nameof(TableNameEnum.LogEntry), (TablePrefix.PlatformByName, MenuPrefix.Platform) }, { 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) }, // 🔹 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) }, // 🔹 TENANT TABLOLARI (GENEL) { nameof(TableNameEnum.Note), (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.CrudEndpoint), (TablePrefix.TenantByName, MenuPrefix.Saas) }, { nameof(TableNameEnum.CustomEndpoint), (TablePrefix.TenantByName, MenuPrefix.Saas) }, { nameof(TableNameEnum.CustomComponent), (TablePrefix.TenantByName, MenuPrefix.Saas) }, { nameof(TableNameEnum.DynamicService), (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) }, // 🔹 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) }, // 🔹 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) }, // 🔹 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) }, // 🔹 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) }, // 🔹 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) }, // 🔹 Supply Chain { nameof(TableNameEnum.MaterialType), (TablePrefix.TenantByName, MenuPrefix.SupplyChain) }, { nameof(TableNameEnum.MaterialGroup), (TablePrefix.TenantByName, MenuPrefix.SupplyChain) }, { nameof(TableNameEnum.Material), (TablePrefix.TenantByName, MenuPrefix.SupplyChain) }, { nameof(TableNameEnum.MaterialSpecification), (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) }, { nameof(TableNameEnum.Approval), (TablePrefix.TenantByName, MenuPrefix.SupplyChain) }, { nameof(TableNameEnum.ApprovalStep), (TablePrefix.TenantByName, MenuPrefix.SupplyChain) }, { nameof(TableNameEnum.RequestType), (TablePrefix.TenantByName, MenuPrefix.SupplyChain) }, { nameof(TableNameEnum.Request), (TablePrefix.TenantByName, MenuPrefix.SupplyChain) }, { nameof(TableNameEnum.RequestItem), (TablePrefix.TenantByName, MenuPrefix.SupplyChain) }, //Crm { nameof(TableNameEnum.CustomerSegment), (TablePrefix.TenantByName, MenuPrefix.Crm) }, { nameof(TableNameEnum.CustomerType), (TablePrefix.TenantByName, MenuPrefix.Crm) }, { nameof(TableNameEnum.LossReason), (TablePrefix.TenantByName, MenuPrefix.Crm) }, { nameof(TableNameEnum.Opportunity), (TablePrefix.TenantByName, MenuPrefix.Crm) }, { nameof(TableNameEnum.Activity), (TablePrefix.TenantByName, MenuPrefix.Crm) }, { nameof(TableNameEnum.Competitor), (TablePrefix.TenantByName, MenuPrefix.Crm) }, // 🔹 MAINTENANCE { nameof(TableNameEnum.WorkcenterType), (TablePrefix.TenantByName, MenuPrefix.Maintenance) }, { nameof(TableNameEnum.WorkcenterStatus), (TablePrefix.TenantByName, MenuPrefix.Maintenance) }, { nameof(TableNameEnum.Workcenter), (TablePrefix.TenantByName, MenuPrefix.Maintenance) }, { nameof(TableNameEnum.WorkcenterSpecification), (TablePrefix.TenantByName, MenuPrefix.Maintenance) }, { nameof(TableNameEnum.Plan), (TablePrefix.TenantByName, MenuPrefix.Maintenance) }, { nameof(TableNameEnum.PlanMaterial), (TablePrefix.TenantByName, MenuPrefix.Maintenance) }, { nameof(TableNameEnum.PlanEmployee), (TablePrefix.TenantByName, MenuPrefix.Maintenance) }, { nameof(TableNameEnum.Fault), (TablePrefix.TenantByName, MenuPrefix.Maintenance) }, { nameof(TableNameEnum.FaultStatus), (TablePrefix.TenantByName, MenuPrefix.Maintenance) }, { nameof(TableNameEnum.FaultType), (TablePrefix.TenantByName, MenuPrefix.Maintenance) }, { nameof(TableNameEnum.Workorder), (TablePrefix.TenantByName, MenuPrefix.Maintenance) }, { nameof(TableNameEnum.WorkorderType), (TablePrefix.TenantByName, MenuPrefix.Maintenance) }, { nameof(TableNameEnum.WorkorderStatus), (TablePrefix.TenantByName, MenuPrefix.Maintenance) }, // 🔹 ACCOUNTING { nameof(TableNameEnum.Bank), (TablePrefix.TenantByName, MenuPrefix.Accounting) }, { nameof(TableNameEnum.BankAccount), (TablePrefix.TenantByName, MenuPrefix.Accounting) }, // 🔹 STORE { nameof(TableNameEnum.WarehouseType), (TablePrefix.TenantByName, MenuPrefix.Store) }, { nameof(TableNameEnum.Warehouse), (TablePrefix.TenantByName, MenuPrefix.Store) }, { nameof(TableNameEnum.ZoneType), (TablePrefix.TenantByName, MenuPrefix.Store) }, { nameof(TableNameEnum.Zone), (TablePrefix.TenantByName, MenuPrefix.Store) }, { nameof(TableNameEnum.LocationType), (TablePrefix.TenantByName, MenuPrefix.Store) }, { nameof(TableNameEnum.Location), (TablePrefix.TenantByName, MenuPrefix.Store) }, { nameof(TableNameEnum.Putaway), (TablePrefix.TenantByName, MenuPrefix.Store) }, { nameof(TableNameEnum.PutawayCondition), (TablePrefix.TenantByName, MenuPrefix.Store) }, }; public static string GetFullTableName(string tableName) { if (!Enum.TryParse(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(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); } }