using AgroBase.Models; using AgroBase.Models.Operacoes; using AgroBase.Services; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using static AgroBase.Models.Enums; namespace AgroMonitor.Forms { public partial class frmAjustesOperacao : Form { OperacaoParametrosModel Parametros = new OperacaoParametrosModel(); Timer tmrDadosMapa = new Timer(); string path = Variaveis.CaminhoSistema + Variaveis.CaminhoOperacoes + "\\" + MapasVariaveisModel.NomeArquivoMapaInterativoSaida; public frmAjustesOperacao() { InitializeComponent(); } private void frmAjustesOperacao_Load(object sender, EventArgs e) { cmbModosOperacao.Items.Clear(); cmbModosOperacao.Items.AddRange(Enum.GetNames(typeof(ModoOperacao))); cmbModosOperacao.SelectedIndex = 0; } private void frmAjustesOperacao_FormClosing(object sender, FormClosingEventArgs e) { tmrDadosMapa.Stop(); } private void cmbModosOperacao_SelectedIndexChanged(object sender, EventArgs e) { AtualizarDadosOperacao(true); } private void AtualizarDadosOperacao(bool CarregarOperacao) { if (CarregarOperacao) { Variaveis.OperacaoEmAndamento = OperacaoModel.CarregarParametrosOperacaoPadrao((ModoOperacao)cmbModosOperacao.SelectedIndex); } foreach (var chb in pnlModulos.Controls.OfType()) { string disp = chb.Name.Replace("chb", ""); T_Code Dispositivo = (T_Code)Enum.Parse(typeof(T_Code), disp); chb.Checked = Variaveis.OperacaoEmAndamento.ModulosMandatorios.Any(x => x.Dispositivo == Dispositivo); } double velocidadeMax = MovimentacaoModel.CalculaVelocidadeRPM(Variaveis.OperacaoEmAndamento.Controle.RPM_Max); double velocidadeMin = MovimentacaoModel.CalculaVelocidadeRPM(Variaveis.OperacaoEmAndamento.Controle.RPM_Min); txtDescricao.Text = Variaveis.OperacaoEmAndamento.Descricao; txtVelocidadeSemErvas.Text = velocidadeMax.ToString("0.00"); txtVelocidadeComErvas.Text = velocidadeMin.ToString("0.00"); txtAnguloMaximo.Text = Variaveis.OperacaoEmAndamento.Controle.Angulo_Max.ToString("0"); txtVelocidadeDirecional.Text = Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP.ToString("0"); txtPercentualAtuacao.Text = (Variaveis.OperacaoEmAndamento.Controle.PercentualInicioPulverizacao * 100).ToString("0"); txtCapacidadeReservatorio.Text = Variaveis.OperacaoEmAndamento.CapacidadeReservatorio.ToString("0"); txtPressaoLinha.Text = Variaveis.OperacaoEmAndamento.Controle.PressaoLinha.ToString("0"); txtDuracaoAtuacao.Text = Variaveis.OperacaoEmAndamento.Controle.TempoAtuacao.ToString("0"); } private void btnProximo_Click(object sender, EventArgs e) { tabControl1.SelectedIndex = 1; } private void btnCarregarMapa_Click(object sender, EventArgs e) { List ruasSelecionadas = new List(); Variaveis.OperacaoEmAndamento.Mapa = new MapasModel(); Variaveis.OperacaoEmAndamento.Mapa.pnlMapa = pnlMapa; Variaveis.OperacaoEmAndamento.Mapa.lblMapa = lblMapaCarregado; tabControl1.SelectedIndex = 1; Variaveis.OperacaoEmAndamento.Mapa.btnCarregar_Click(sender, e); if (!tmrDadosMapa.Enabled) { tmrDadosMapa = new Timer() { Interval = 500 }; tmrDadosMapa.Tick += tmrDadosMapa_Tick; tmrDadosMapa.Start(); } } private void tmrDadosMapa_Tick(object sender, EventArgs e) { if (Variaveis.OperacaoEmAndamento.Mapa.mapaService.DadosMapa == null) { return; } //GPSService.AtualizarRuasSelecionadas(new List() { "183", "182", "181" }); Variaveis.OperacaoEmAndamento.OpMapaGPS.AtualizarRuasSelecionadas(); lblDistanciaTotal.Text = $"Distância total: {Variaveis.OperacaoEmAndamento.Mapa.mapaService.DadosMapa.features.Sum(x => x.properties.Length).ToString("0.00")} m"; lblDistanciaOperacao.Text = $"Distância da operação: {Variaveis.OperacaoEmAndamento.Mapa.DistanciaTotal.ToString("0.00")} m"; double.TryParse(txtVelocidadeSemErvas.Text, out double velocidadeSemErvas); double.TryParse(txtVelocidadeComErvas.Text, out double velocidadeComErvas); string tempo = Variaveis.OperacaoEmAndamento.TempoEstimado(velocidadeSemErvas, velocidadeComErvas); lblTempoEstimado.Text = $"Tempo estimado: {tempo}"; } private void btnSalvar_Click(object sender, EventArgs e) { bool sucesso = Variaveis.OperacaoEmAndamento.SalvarParametrizacaoOperacao( txtDescricao.Text, txtCapacidadeReservatorio.Text, txtPressaoLinha.Text, txtDuracaoAtuacao.Text, txtPercentualAtuacao.Text, txtAnguloMaximo.Text, txtVelocidadeDirecional.Text, txtVelocidadeSemErvas.Text, txtVelocidadeComErvas.Text ); if (!sucesso) { txtDescricao.Focus(); } } private void btnCarregar_Click(object sender, EventArgs e) { CarregarOperacao().ConfigureAwait(false); } private async Task CarregarOperacao() { (bool carregado, List ruasSelecionadas) = Variaveis.OperacaoEmAndamento.CarregarParametrizacaoOperacao(pnlMapa, lblMapaCarregado); if (carregado) { tabControl1.SelectedIndex = 1; AtualizarDadosOperacao(false); MessageBox.Show("Operação carregada com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information); tmrDadosMapa = new Timer() { Interval = 500 }; tmrDadosMapa.Tick += tmrDadosMapa_Tick; tmrDadosMapa.Start(); await Task.Delay(1000); if (ruasSelecionadas.Any()) { await Task.Delay(1000); GPSService.AtualizarRuasSelecionadas(ruasSelecionadas); File.Delete(path); } } } private void chbModulo_CheckedChanged(object sender, EventArgs e) { CheckBox chb = (CheckBox)sender; string ModID = chb.Name.Replace("chb", ""); T_Code Dispositivo = (T_Code)Enum.Parse(typeof(T_Code), ModID); if (Variaveis.OperacaoEmAndamento.ModulosMandatorios.Any(x => x.Dispositivo == Dispositivo)) { Variaveis.OperacaoEmAndamento.ModulosMandatorios.First(x => x.Dispositivo == Dispositivo).Mandatorio = chb.Checked; } else { Variaveis.OperacaoEmAndamento.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = Dispositivo, Conectado = false, Mandatorio = chb.Checked, Utilizar = chb.Checked, }); } } } }