121 lines
4.2 KiB
C#
121 lines
4.2 KiB
C#
using AgroBase.Models;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
using System.Net.Http;
|
|
using System.Text;
|
|
|
|
namespace AgroBase.Services
|
|
{
|
|
public static class APIService
|
|
{
|
|
public static Process pythonProcess = null;
|
|
public static string API_Base { get; set; } = "http://localhost";
|
|
public static string API_Porta { get; set; } = "5001";
|
|
public static string GPS_setCoordenadasEndpoint { get; set; } = "/receber-coordenadas";
|
|
public static string GPS_getCoordenadasEndpoint { get; set; } = "/servir-coordenadas/<id>";
|
|
public static string Mapa_setRuasSelecionadasEndpoint { get; set; } = "/receber-ruas-selecionadas";
|
|
public static string Mapa_getRuasSelecionadasEndpoint { get; set; } = "/servir-ruas-selecionadas";
|
|
public static int GPS_IDcoordenadasRobo { get; set; } = 1;
|
|
|
|
public static string ApiBase()
|
|
{
|
|
return API_Base + ":" + API_Porta.ToString();
|
|
}
|
|
|
|
public static void Inicializar()
|
|
{
|
|
if (pythonProcess == null)
|
|
{
|
|
pythonProcess = PythonService.RunScript(PythonService.ScriptAPI, new string[] {
|
|
API_Porta.ToString(),
|
|
GPS_getCoordenadasEndpoint,
|
|
GPS_setCoordenadasEndpoint,
|
|
Mapa_getRuasSelecionadasEndpoint,
|
|
Mapa_setRuasSelecionadasEndpoint
|
|
});
|
|
}
|
|
}
|
|
|
|
public static void Parar()
|
|
{
|
|
if (pythonProcess != null && !pythonProcess.HasExited)
|
|
{
|
|
pythonProcess.Kill();
|
|
pythonProcess = null;
|
|
}
|
|
}
|
|
|
|
public static async void AtualizarCoordenadasGPS(GPSModel Leitura, int ID)
|
|
{
|
|
var url = ApiBase() + GPS_setCoordenadasEndpoint;
|
|
var localizacao = new
|
|
{
|
|
id = ID.ToString(),
|
|
latitude = Leitura.Latitude,
|
|
longitude = Leitura.Longitude
|
|
};
|
|
|
|
var json = JsonConvert.SerializeObject(localizacao);
|
|
var data = new StringContent(json, Encoding.UTF8, "application/json");
|
|
|
|
try
|
|
{
|
|
using (var client = new HttpClient())
|
|
{
|
|
var response = await client.PostAsync(url, data);
|
|
|
|
string result = await response.Content.ReadAsStringAsync();
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Console.WriteLine("Erro ao atualizar coordenadas GPS: " + e.Message);
|
|
|
|
if (pythonProcess == null || pythonProcess.HasExited)
|
|
{
|
|
Inicializar();
|
|
}
|
|
}
|
|
}
|
|
|
|
public static async void AtualizarRuasSelecionadas()
|
|
{
|
|
try
|
|
{
|
|
var url = ApiBase() + Mapa_getRuasSelecionadasEndpoint;
|
|
|
|
using (var client = new HttpClient())
|
|
{
|
|
var response = await client.GetAsync(url);
|
|
List<string> ids = new List<string>();
|
|
string result = await response.Content.ReadAsStringAsync();
|
|
if (!result.Contains("[]"))
|
|
{
|
|
result = result.Replace("\n", "");
|
|
result = result.Replace("\"", "");
|
|
ids = JsonConvert.DeserializeObject<int[]>(result).Select(x => x.ToString()).ToList();
|
|
}
|
|
if (ids.Count != Variaveis.OperacaoEmAndamento.Mapa.RuasPercorrer.Count)
|
|
{
|
|
Variaveis.OperacaoEmAndamento.Mapa.RuasPercorrer = ids;
|
|
Variaveis.OperacaoEmAndamento.Mapa.PopularTrajetoria();
|
|
}
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Console.WriteLine("Erro ao atualizar ruas selecionadas: " + e.Message);
|
|
|
|
if (pythonProcess == null || pythonProcess.HasExited)
|
|
{
|
|
Inicializar();
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|