using System.ComponentModel; using System.Windows.Media; using Brush = System.Windows.Media.Brush; using Brushes = System.Windows.Media.Brushes; using ColorConverter = System.Windows.Media.ColorConverter; using Color = System.Windows.Media.Color; using static AgroBase.Models.Enums; namespace OperationControl.ViewModels.Views.Operacao { public class OperacaoTopViewModel : INotifyPropertyChanged { private string _contextoSelecionado = "ROVER 01"; public string ContextoSelecionado { get => _contextoSelecionado; set { _contextoSelecionado = value; OnPropertyChanged(nameof(ContextoSelecionado)); } } private string _tituloStatus = "ROVER OPERANDO NORMALMENTE"; public string TituloStatus { get => _tituloStatus; set { _tituloStatus = value; OnPropertyChanged(nameof(TituloStatus)); } } private string _motivoPrincipal = "Todos os módulos obrigatórios e regras de controle estão OK."; public string MotivoPrincipal { get => _motivoPrincipal; set { _motivoPrincipal = value; OnPropertyChanged(nameof(MotivoPrincipal)); } } private string _badgeTexto = "NORMAL"; public string BadgeTexto { get => _badgeTexto; set { _badgeTexto = value; OnPropertyChanged(nameof(BadgeTexto)); } } private string _resumoCurto = "Sistema saudável"; public string ResumoCurto { get => _resumoCurto; set { _resumoCurto = value; OnPropertyChanged(nameof(ResumoCurto)); } } private Brush _corFundo = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#153D2C")); public Brush CorFundo { get => _corFundo; set { _corFundo = value; OnPropertyChanged(nameof(CorFundo)); } } private Brush _corBorda = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#2C7A57")); public Brush CorBorda { get => _corBorda; set { _corBorda = value; OnPropertyChanged(nameof(CorBorda)); } } private Brush _corAccent = Brushes.LightGreen; public Brush CorAccent { get => _corAccent; set { _corAccent = value; OnPropertyChanged(nameof(CorAccent)); } } private Brush _corBadge = Brushes.LightGreen; public Brush CorBadge { get => _corBadge; set { _corBadge = value; OnPropertyChanged(nameof(CorBadge)); } } private Brush _corTexto = Brushes.White; public Brush CorTexto { get => _corTexto; set { _corTexto = value; OnPropertyChanged(nameof(CorTexto)); } } private Brush _corTextoBadge = Brushes.Black; public Brush CorTextoBadge { get => _corTextoBadge; set { _corTextoBadge = value; OnPropertyChanged(nameof(CorTextoBadge)); } } public void AtualizarStatus(StatusModulo status, string titulo, StatusOperacao status_op, string linha1, string linha2, string status_str, string resumo) { ContextoSelecionado = $"{titulo} • {status_op}"; TituloStatus = linha1; MotivoPrincipal = linha2; BadgeTexto = status_str; ResumoCurto = resumo; AplicarPaletaStatus(status); } private void AplicarPaletaStatus(StatusModulo status) { switch (status) { case StatusModulo.Desconectado: CorFundo = BrushFromHex("#2A2F36"); CorBorda = BrushFromHex("#4B5563"); CorAccent = BrushFromHex("#9CA3AF"); CorBadge = BrushFromHex("#9CA3AF"); CorTexto = Brushes.White; CorTextoBadge = BrushFromHex("#111827"); break; case StatusModulo.Conectado: CorFundo = BrushFromHex("#15324A"); CorBorda = BrushFromHex("#2563EB"); CorAccent = BrushFromHex("#60A5FA"); CorBadge = BrushFromHex("#60A5FA"); CorTexto = Brushes.White; CorTextoBadge = BrushFromHex("#0B1220"); break; case StatusModulo.Falha: CorFundo = BrushFromHex("#4A1D1D"); CorBorda = BrushFromHex("#DC2626"); CorAccent = BrushFromHex("#F87171"); CorBadge = BrushFromHex("#F87171"); CorTexto = Brushes.White; CorTextoBadge = BrushFromHex("#1F0A0A"); break; case StatusModulo.Alerta: CorFundo = BrushFromHex("#4A3A12"); CorBorda = BrushFromHex("#D97706"); CorAccent = BrushFromHex("#FBBF24"); CorBadge = BrushFromHex("#FBBF24"); CorTexto = Brushes.White; CorTextoBadge = BrushFromHex("#1F1400"); break; case StatusModulo.Operante: default: CorFundo = BrushFromHex("#153D2C"); CorBorda = BrushFromHex("#2C7A57"); CorAccent = BrushFromHex("#86EFAC"); CorBadge = BrushFromHex("#86EFAC"); CorTexto = Brushes.White; CorTextoBadge = BrushFromHex("#052E16"); break; } } private SolidColorBrush BrushFromHex(string hex) { return new SolidColorBrush((Color)ColorConverter.ConvertFromString(hex)); } public event PropertyChangedEventHandler? PropertyChanged; private void OnPropertyChanged(string nome) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nome)); } } public class MotivoTopBarModel { public int Prioridade { get; set; } public string Fonte { get; set; } = ""; public string Titulo { get; set; } = ""; public string Descricao { get; set; } = ""; public StatusModulo StatusVisual { get; set; } public T_Code? Modulo { get; set; } } }