PI_Assync_PLD/Data/PostgresRepository.cs
Adriano Serighelli d656f07613 19/03/2025
2025-03-19 10:39:34 -03:00

58 lines
2.3 KiB
C#

using System;
using System.Collections.Generic;
using Npgsql;
using PI_Assync_PLD.Models;
public class PostgresRepository : IDataRepository
{
private readonly string _connectionString;
public PostgresRepository(string environment)
{
_connectionString = environment == "dev"
? "Server=smart-energia-dev-pgsql.cykff7tj7mik.us-east-1.rds.amazonaws.com; Port=5432; Database=smartimptest; User Id=postgres; Password=VfHml#Z78!%kvvNM;"
: "Server=smart-energia-dev-pgsql.cykff7tj7mik.us-east-1.rds.amazonaws.com; Port=5432; Database=smartenergiaprod; User Id=postgres; Password=VfHml#Z78!%kvvNM;";
}
public DateTime ObterDataInicial()
{
using var conn = new NpgsqlConnection(_connectionString);
conn.Open();
string query = "SELECT TO_DATE('1899-12-30', 'YYYY-MM-DD') + INTERVAL '1' DAY * MAX(dia_num) AS ultimo_dia FROM pld";
using var cmd = new NpgsqlCommand(query, conn);
using var reader = cmd.ExecuteReader();
return reader.Read() && DateTime.TryParse(reader["ultimo_dia"]?.ToString(), out var data)
? data.AddDays(1)
: DateTime.Now.AddYears(-2);
}
public void SalvarPLDs(List<PLDModel> plds)
{
using var conn = new NpgsqlConnection(_connectionString);
conn.Open();
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)";
using var cmd = new NpgsqlCommand(query, conn, transaction);
foreach (var pld in plds)
{
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@Dia", pld.Dia);
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();
}
transaction.Commit();
}
}