PresentationHelper.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. using System.Data;
  2. namespace TravelAgencyWinForms.Utils;
  3. public static class PresentationHelper
  4. {
  5. private static readonly Dictionary<string, string> Labels = new(StringComparer.OrdinalIgnoreCase)
  6. {
  7. ["audit_id"] = "ID",
  8. ["client_id"] = "ID клиента",
  9. ["employee_id"] = "ID сотрудника",
  10. ["position_id"] = "ID должности",
  11. ["tour_id"] = "ID тура",
  12. ["city_id"] = "ID города",
  13. ["tour_list_id"] = "ID рейса",
  14. ["booking_id"] = "ID бронирования",
  15. ["user_id"] = "ID пользователя",
  16. ["first_name"] = "Имя",
  17. ["last_name"] = "Фамилия",
  18. ["middle_name"] = "Отчество",
  19. ["client_name"] = "Клиент",
  20. ["client_phone"] = "Телефон клиента",
  21. ["client_email"] = "Email клиента",
  22. ["employee_name"] = "Сотрудник",
  23. ["position_name"] = "Должность",
  24. ["passport_data"] = "Паспорт",
  25. ["phone"] = "Телефон",
  26. ["email"] = "Email",
  27. ["registration_date"] = "Дата регистрации",
  28. ["birth_date"] = "Дата рождения",
  29. ["salary"] = "Зарплата",
  30. ["price"] = "Стоимость",
  31. ["name"] = "Название",
  32. ["tour_name"] = "Тур",
  33. ["city_name"] = "Город",
  34. ["cities"] = "Города",
  35. ["type"] = "Тур",
  36. ["start_date"] = "Дата начала",
  37. ["end_date"] = "Дата окончания",
  38. ["booking_number"] = "Номер",
  39. ["booking_date"] = "Дата оформления",
  40. ["status"] = "Статус",
  41. ["login"] = "Логин",
  42. ["role"] = "Роль",
  43. ["is_active"] = "Активен",
  44. ["table_name"] = "Таблица",
  45. ["operation"] = "Операция",
  46. ["record_id"] = "Код записи",
  47. ["changed_by"] = "Пользователь",
  48. ["changed_by_db_user"] = "Пользователь БД",
  49. ["changed_by_app_user"] = "Пользователь приложения",
  50. ["changed_at"] = "Дата изменения",
  51. ["old_data"] = "Было",
  52. ["new_data"] = "Стало"
  53. };
  54. private static readonly HashSet<string> HiddenViewColumns = new(StringComparer.OrdinalIgnoreCase)
  55. {
  56. "employee_id",
  57. "client_id",
  58. "tour_list_id",
  59. "tour_id",
  60. "city_id",
  61. "position_id",
  62. "user_id",
  63. "password_hash"
  64. };
  65. private static readonly HashSet<string> HiddenReportColumns = new(StringComparer.OrdinalIgnoreCase)
  66. {
  67. "audit_id",
  68. "booking_id",
  69. "employee_id",
  70. "client_id",
  71. "tour_list_id",
  72. "tour_id",
  73. "city_id",
  74. "position_id",
  75. "user_id",
  76. "password_hash"
  77. };
  78. public static string GetHeader(string columnName)
  79. {
  80. if (Labels.TryGetValue(columnName, out var label))
  81. return label;
  82. var words = columnName.Split('_', StringSplitOptions.RemoveEmptyEntries);
  83. return string.Join(' ', words.Select(w => char.ToUpper(w[0]) + w[1..]));
  84. }
  85. public static void ApplyHeaders(DataGridView grid)
  86. {
  87. foreach (DataGridViewColumn column in grid.Columns)
  88. column.HeaderText = GetHeader(column.Name);
  89. }
  90. public static void HideViewColumns(DataGridView grid)
  91. {
  92. foreach (DataGridViewColumn column in grid.Columns)
  93. if (HiddenViewColumns.Contains(column.Name))
  94. column.Visible = false;
  95. }
  96. public static void HideReportColumns(DataGridView grid)
  97. {
  98. foreach (DataGridViewColumn column in grid.Columns)
  99. if (HiddenReportColumns.Contains(column.Name))
  100. column.Visible = false;
  101. }
  102. public static string ShortDate(object? value)
  103. {
  104. if (value == null || value == DBNull.Value)
  105. return "—";
  106. if (value is DateTime dateTime)
  107. return dateTime.ToString("dd.MM.yyyy");
  108. return Convert.ToString(value) ?? "—";
  109. }
  110. }