/
kochkatech
/
Queue
Обзор
Документация
Войти
/
kochkatech
/
Queue
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
dev
src/Queue.Admin/App.xaml.cs
81 строка
3 KB
kochkareal
feat: вкладка "Экраны" в Admin — запуск/управление табло и АРМ оператора
27 июл 2026, 21:26
27 июл 2026, 21:26
62e41f9
Код
Авторство
О чём код?
using System.Linq; using System.Windows; using System.Windows.Media; using Microsoft.EntityFrameworkCore; using Queue.Admin.ViewModels; using Queue.Core.Models; using Queue.Data; namespace Queue.Admin; public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); var dbContextFactory = new QueueDbContextFactory(); using (var db = dbContextFactory.CreateDbContext()) { // Migrate() применяет миграции из Queue.Data/Migrations (см. README там) и создаёт БД, // если её ещё нет. И Admin, и Server вызывают Migrate() при старте — какой бы процесс // ни запустился первым на конкретном ПК, схема будет актуальной. db.Database.Migrate(); // WAL: файл БД теперь общий с Queue.Server (см. src/Queue.Server) — это отдельный процесс, // WAL снижает конфликты блокировок при параллельном доступе. db.Database.ExecuteSqlRaw("PRAGMA journal_mode=WAL;"); var organization = db.Organizations.FirstOrDefault(); ApplyBrandOverrides(organization); } var shellViewModel = new ShellViewModel(dbContextFactory); var mainWindow = new MainWindow { DataContext = shellViewModel }; mainWindow.Show(); } // Цвета клиента (экран "Настройки" -> Organization) подменяют ресурсы до создания // MainWindow — StaticResource в окне подхватит уже новые значения. Если у организации // цвета не заданы, остаются значения по умолчанию из Themes/BrandColors.xaml. private void ApplyBrandOverrides(Organization? organization) { if (organization is null) { return; } if (TryParseColor(organization.MainColorHex, out var mainColor)) { Resources["MainColor"] = mainColor; Resources["MainBrush"] = new SolidColorBrush(mainColor); } if (TryParseColor(organization.FocusColorHex, out var focusColor)) { Resources["FocusColor"] = focusColor; Resources["FocusBrush"] = new SolidColorBrush(focusColor); } } private static bool TryParseColor(string? hex, out Color color) { color = default; if (string.IsNullOrWhiteSpace(hex)) { return false; } try { color = (Color)ColorConverter.ConvertFromString(hex); return true; } catch { return false; } } }