diff --git a/Data/PostgresRepository.cs b/Data/PostgresRepository.cs index 58f66c3..fe37cd3 100644 --- a/Data/PostgresRepository.cs +++ b/Data/PostgresRepository.cs @@ -2,8 +2,9 @@ using System.Collections.Generic; using Npgsql; using PI_Assync_PLD.Models; +using Windows.Devices.Sensors; - public class PostgresRepository : IDataRepository +public class PostgresRepository : IDataRepository { private readonly string _connectionString; @@ -39,23 +40,33 @@ using PI_Assync_PLD.Models; using var transaction = conn.BeginTransaction(); - string query = "INSERT INTO pld (dia_num, hora, submercado, valor, mes_ref, dia_da_semana) " + - "VALUES (@Dia, @Hora, @Submercado, @Valor, @MesRef, @DiaSemana)"; + var sb = new System.Text.StringBuilder(); + sb.Append("INSERT INTO pld (dia_num, hora, submercado, valor, mes_ref, dia_da_semana) VALUES "); - using var cmd = new NpgsqlCommand(query, conn, transaction); + var parametros = new List(); + int count = 0; foreach (var pld in novosPLDs) { - cmd.Parameters.Clear(); - cmd.Parameters.AddWithValue("@Dia", pld.Dia.ToOADate()); - cmd.Parameters.AddWithValue("@Hora", pld.Hora); - cmd.Parameters.AddWithValue("@Submercado", pld.Submercado); - cmd.Parameters.AddWithValue("@Valor", pld.Valor); - cmd.Parameters.AddWithValue("@MesRef", pld.Mes); - cmd.Parameters.AddWithValue("@DiaSemana", pld.DiaSemana); - cmd.ExecuteNonQuery(); + sb.Append($"(@Dia{count}, @Hora{count}, @Submercado{count}, @Valor{count}, @MesRef{count}, @DiaSemana{count}),"); + + parametros.Add(new NpgsqlParameter($"@Dia{count}", NpgsqlTypes.NpgsqlDbType.Integer) { Value = pld.Dia.ToOADate() }); + parametros.Add(new NpgsqlParameter($"@Hora{count}", NpgsqlTypes.NpgsqlDbType.Integer) { Value = pld.Hora }); + parametros.Add(new NpgsqlParameter($"@Submercado{count}", NpgsqlTypes.NpgsqlDbType.Text) { Value = pld.Submercado }); + parametros.Add(new NpgsqlParameter($"@Valor{count}", NpgsqlTypes.NpgsqlDbType.Double) { Value = pld.Valor }); + parametros.Add(new NpgsqlParameter($"@MesRef{count}", NpgsqlTypes.NpgsqlDbType.Text) { Value = pld.Mes }); + parametros.Add(new NpgsqlParameter($"@DiaSemana{count}", NpgsqlTypes.NpgsqlDbType.Integer) { Value = pld.DiaSemana }); + + count++; } + // Removemos a última vírgula da query + sb.Length--; + + using var cmd = new NpgsqlCommand(sb.ToString(), conn, transaction); + cmd.Parameters.AddRange(parametros.ToArray()); + + cmd.ExecuteNonQuery(); transaction.Commit(); } } diff --git a/Services/HttpClientService.cs b/Services/HttpClientService.cs index 445e501..e3d240e 100644 --- a/Services/HttpClientService.cs +++ b/Services/HttpClientService.cs @@ -1,4 +1,5 @@ -using System.Security.Cryptography.X509Certificates; +using System.Net; +using System.Security.Cryptography.X509Certificates; using System.Text; public class HttpClientService @@ -9,7 +10,14 @@ public class HttpClientService { var handler = new HttpClientHandler { - ClientCertificates = { new X509Certificate2("X:\\Back\\APP Smart\\Certificado\\cert_ssl.pfx", "appsmart") } + ClientCertificates = { new X509Certificate2("X:\\Back\\APP Smart\\Certificado\\cert_ssl.pfx", "appsmart") }, + + //// Configura o proxy do Fiddler + //Proxy = new WebProxy("127.0.0.1", 8888), + //UseProxy = true, + + //// Permite qualquer certificado SSL (para evitar erros com o proxy do Fiddler) + //ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true }; _client = new HttpClient(handler) { DefaultRequestHeaders = { { "SOAPAction", "listarPLD" } } }; } diff --git a/Services/PLDService.cs b/Services/PLDService.cs index 0a7019c..84c40a5 100644 --- a/Services/PLDService.cs +++ b/Services/PLDService.cs @@ -33,12 +33,11 @@ public class PLDService for (DateTime data = menorDataInicial; data < dataFinal; data = data.AddDays(1)) { DateTime dataInicio = data; - DateTime dataFim = dataInicio.AddDays(1); tarefasRequisicoes.Add(Task.Run(async () => { await _requestLimiter.WaitAsync(); - string xmlResponse = await _httpClient.EnviarRequisicaoAsync(PrepararXML(dataInicio, dataFim)); + string xmlResponse = await _httpClient.EnviarRequisicaoAsync(PrepararXML(dataInicio)); _requestLimiter.Release(); return xmlResponse; })); @@ -81,11 +80,11 @@ public class PLDService } } - private string PrepararXML(DateTime inicio, DateTime fim) + private string PrepararXML(DateTime inicio) { string xmlTemplate = System.IO.File.ReadAllText(@"X:\Back\PLD Horário\listarPLD.txt"); return xmlTemplate.Replace("DATA_INI", inicio.ToString("yyyy-MM-ddT00:00:00")) - .Replace("DATA_FIM", fim.ToString("yyyy-MM-ddT00:00:00")) + .Replace("DATA_FIM", inicio.ToString("yyyy-MM-ddT00:00:00")) .Replace("PAG_NUM", "1"); } }