using AgroBase.Models; using AgroBase.Models.Operacoes; using OperationControl.Controls; using OperationControl.Helpers; using OperationControl.Models; using System.ComponentModel; using System.Windows.Input; namespace OperationControl.ViewModels.Views.Operacao.Monitoramento { public class ParametrizacaoViewModel : INotifyPropertyChanged { private OperacaoParametrosModel _parametros = new OperacaoParametrosModel(); public OperacaoParametrosModel Parametros { get => _parametros; set { if (_parametros != value) { _parametros = value; OnPropertyChanged(nameof(Parametros)); } } } private bool _operacaoConcluida; public bool OperacaoConcluida { get => _operacaoConcluida; set { _operacaoConcluida = value; OnPropertyChanged(nameof(OperacaoConcluida)); } } public ParametrizacaoViewModel() { CarregarParametrosPadraoCommand = new RelayCommand(p => CarregarParametrosPadrao((AgroBase.Models.Enums.ModoOperacao)p)); LerParametrosCommand = new RelayCommand(_ => LerParametrosSolicitado?.Invoke()); SalvarParametrosCommand = new RelayCommand(_ => SalvarParametrosSolicitado?.Invoke(Parametros)); ReiniciarOperacaoCommand = new RelayCommand(_ => ReiniciarOperacao()); } public event Action? LerParametrosSolicitado; public event Action? SalvarParametrosSolicitado; public ICommand LerParametrosCommand { get; } public ICommand SalvarParametrosCommand { get; } public ICommand CarregarParametrosPadraoCommand { get; } public ICommand ReiniciarOperacaoCommand { get; } public Array ModosOperacaoDisponiveis { get; } = Enum.GetValues(typeof(AgroBase.Models.Enums.ModoOperacao)); private void CarregarParametrosPadrao(AgroBase.Models.Enums.ModoOperacao modo) { var p = OperacaoModel.CarregarParametrosOperacaoPadrao(modo, false); p.Descricao = $"{p.Modo} - Padrão"; Parametros = p; } private void ReiniciarOperacao() { VariaveisControleOperacao.EnviarComandoIniciarOperacao(false, false); } public void AtualizarParametros(OperacaoParametrosModel origem) { if (origem == null) return; Parametros = origem; OperacaoConcluida = (VariaveisControleOperacao.RoverEmFoco?.DadosLeitura?.Operacao?.Status ?? AgroBase.Models.Enums.StatusOperacao.NaoIniciado) == AgroBase.Models.Enums.StatusOperacao.Concluido; } public void ProcessarStreetMapClicked(MapViewControl.StreetMapClickedEventArgs e) { } public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(string nome) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nome)); } } }