feat: se centralizan las variables de entorno y utilidades, ademas de agregar entidades para poder hacer más legible el codigo
This commit is contained in:
parent
bffcdabc0a
commit
222d5fdc08
14 changed files with 203 additions and 59 deletions
|
@ -4,6 +4,7 @@ using Microsoft.Extensions.Configuration;
|
|||
using Shared.DTO;
|
||||
using Shared.DTO.Integracion_DGA;
|
||||
using Shared.Helper;
|
||||
using Shared.Utils.Variables_Entorno;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
@ -22,13 +23,15 @@ namespace BLL.Integracion_DGA
|
|||
private readonly JobsDgaVilosRepository _jobsVilos;
|
||||
private readonly JobsDgaSupFlujRepository _jobsSupFluj;
|
||||
private readonly FileLoggerHelper _fileLoggerHelper;
|
||||
private readonly NexusApiUrl _nexusApi;
|
||||
|
||||
public BusinessLogic(IConfiguration configuration, ApiService apiService, JobsDgaRepository jobs, JobsDgaVilosRepository jobsVilos, JobsDgaSupFlujRepository jobsSupFluj) {
|
||||
public BusinessLogic(IConfiguration configuration, ApiService apiService, JobsDgaRepository jobs, JobsDgaVilosRepository jobsVilos, JobsDgaSupFlujRepository jobsSupFluj,NexusApiUrl nexusApiUrl) {
|
||||
_configuration = configuration;
|
||||
_apiService = apiService;
|
||||
_jobs = jobs;
|
||||
_jobsVilos = jobsVilos;
|
||||
_jobsSupFluj = jobsSupFluj;
|
||||
_nexusApi = nexusApiUrl;
|
||||
FileLoggerHelper.ConfigureLogger(_configuration);
|
||||
}
|
||||
|
||||
|
@ -44,11 +47,11 @@ namespace BLL.Integracion_DGA
|
|||
WriteLineAndLog($"Inicia Proceso DGA");
|
||||
try
|
||||
{
|
||||
string apiUrlBase = _configuration["ApiSettings:ApiUrl"];
|
||||
string apiUrlBase = _nexusApi.ApiUrl;
|
||||
Dictionary<string, string> headers = new Dictionary<string, string>
|
||||
{
|
||||
{ "nexustoken", _configuration["ApiSettings:ApiKey"] },
|
||||
{ "nexusapiversion", _configuration["ApiSettings:Version"] },
|
||||
{ "nexustoken", _nexusApi.ApiKey },
|
||||
{ "nexusapiversion", _nexusApi.Version },
|
||||
{ "accept", "application/json" }
|
||||
};
|
||||
|
||||
|
@ -73,8 +76,8 @@ namespace BLL.Integracion_DGA
|
|||
}
|
||||
|
||||
HistoricRequest historicRequest = new HistoricRequest();
|
||||
historicRequest.DataSource = _configuration["ApiSettings:DataSource"];
|
||||
historicRequest.Resolution = _configuration["ApiSettings:Resolution"];
|
||||
historicRequest.DataSource = _nexusApi.DataSource;
|
||||
historicRequest.Resolution = _nexusApi.Resolution;
|
||||
historicRequest.Uids = listTagsID;
|
||||
historicRequest.StartTs = dateStart.ToUnixTimeSeconds();
|
||||
historicRequest.EndTs = dateEnd.ToUnixTimeSeconds();
|
||||
|
|
|
@ -9,25 +9,25 @@ using System.Text;
|
|||
using System.Threading.Tasks;
|
||||
using Dapper;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Shared.Utils.Variables_Entorno;
|
||||
|
||||
namespace DAL
|
||||
{
|
||||
public class JobsDgaRepository
|
||||
{
|
||||
private static string connectionString = string.Empty;
|
||||
private readonly IConfiguration _configuration;
|
||||
public JobsDgaRepository(IConfiguration configuration)
|
||||
private readonly BD_Conexion _bdConexion;
|
||||
public JobsDgaRepository(IConfiguration configuration,BD_Conexion bdConexion)
|
||||
{
|
||||
_configuration = configuration;
|
||||
connectionString = _configuration.GetConnectionString("DefaultConnection") ?? "";
|
||||
|
||||
_bdConexion = bdConexion;
|
||||
}
|
||||
|
||||
public async Task<bool> InsertarDgaMacroResultado(List<DgaMacroResultado> dgaMacroResultados)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (SqlConnection connection = new SqlConnection(connectionString))
|
||||
using (SqlConnection connection = new SqlConnection(_bdConexion.stringConnection))
|
||||
{
|
||||
await connection.OpenAsync();
|
||||
// 1. Truncar la tabla antes de insertar
|
||||
|
@ -49,7 +49,7 @@ namespace DAL
|
|||
{
|
||||
try
|
||||
{
|
||||
using (var connection = new SqlConnection(connectionString))
|
||||
using (var connection = new SqlConnection(_bdConexion.stringConnection))
|
||||
{
|
||||
await connection.OpenAsync();
|
||||
|
||||
|
@ -77,7 +77,7 @@ namespace DAL
|
|||
try
|
||||
{
|
||||
// Configurar la conexión a la base de datos
|
||||
using (SqlConnection connection = new SqlConnection(connectionString))
|
||||
using (SqlConnection connection = new SqlConnection(_bdConexion.stringConnection))
|
||||
{
|
||||
await connection.OpenAsync();
|
||||
// Truncar la tabla antes de insertar
|
||||
|
@ -102,7 +102,7 @@ namespace DAL
|
|||
{
|
||||
try
|
||||
{
|
||||
using (var connection = new SqlConnection(connectionString))
|
||||
using (var connection = new SqlConnection(_bdConexion.stringConnection))
|
||||
{
|
||||
await connection.OpenAsync();
|
||||
// Ejecuta el stored procedure sin parámetros
|
||||
|
@ -120,7 +120,7 @@ namespace DAL
|
|||
{
|
||||
try
|
||||
{
|
||||
using (var connection = new SqlConnection(connectionString))
|
||||
using (var connection = new SqlConnection(_bdConexion.stringConnection))
|
||||
{
|
||||
await connection.OpenAsync();
|
||||
await connection.ExecuteAsync(
|
||||
|
@ -140,7 +140,7 @@ namespace DAL
|
|||
{
|
||||
try
|
||||
{
|
||||
using (var connection = new SqlConnection(connectionString))
|
||||
using (var connection = new SqlConnection(_bdConexion.stringConnection))
|
||||
{
|
||||
await connection.OpenAsync();
|
||||
await connection.ExecuteAsync(
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
using Microsoft.Data.SqlClient;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Shared.DTO.Integracion_DGA;
|
||||
using Shared.Utils.Variables_Entorno;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
|
@ -13,13 +14,13 @@ namespace DAL
|
|||
{
|
||||
public class JobsDgaSupFlujRepository
|
||||
{
|
||||
private static string connectionString = string.Empty;
|
||||
private readonly IConfiguration _configuration;
|
||||
private readonly BD_Conexion _bdConexion;
|
||||
|
||||
public JobsDgaSupFlujRepository(IConfiguration configuration)
|
||||
public JobsDgaSupFlujRepository(IConfiguration configuration, BD_Conexion bdConexion)
|
||||
{
|
||||
_configuration = configuration;
|
||||
connectionString = _configuration.GetConnectionString("DefaultConnection") ?? "";
|
||||
_configuration = configuration;
|
||||
_bdConexion = bdConexion;
|
||||
}
|
||||
|
||||
public async Task<bool> InsertarDgaMacroResultadoSupFluj(List<DgaMacroResultadoSupFluj> dgaMacroResultadoSupFluj)
|
||||
|
@ -27,7 +28,7 @@ namespace DAL
|
|||
try
|
||||
{
|
||||
// Configurar la conexión a la base de datos
|
||||
using (SqlConnection connection = new SqlConnection(connectionString))
|
||||
using (SqlConnection connection = new SqlConnection(_bdConexion.stringConnection))
|
||||
{
|
||||
await connection.OpenAsync();
|
||||
await connection.ExecuteAsync("TRUNCATE TABLE DGA_MACRO_RESULTADO_SUP_FLUJ");
|
||||
|
@ -49,7 +50,7 @@ namespace DAL
|
|||
{
|
||||
try
|
||||
{
|
||||
using (var connection = new SqlConnection(connectionString))
|
||||
using (var connection = new SqlConnection(_bdConexion.stringConnection))
|
||||
{
|
||||
await connection.OpenAsync();
|
||||
await connection.ExecuteAsync(
|
||||
|
@ -69,7 +70,7 @@ namespace DAL
|
|||
{
|
||||
try
|
||||
{
|
||||
using (var connection = new SqlConnection(connectionString))
|
||||
using (var connection = new SqlConnection(_bdConexion.stringConnection))
|
||||
{
|
||||
await connection.OpenAsync();
|
||||
await connection.ExecuteAsync(
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
using Microsoft.Data.SqlClient;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Shared.DTO.Integracion_DGA;
|
||||
using Shared.Utils.Variables_Entorno;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
|
@ -14,19 +15,19 @@ namespace DAL
|
|||
public class JobsDgaVilosRepository
|
||||
{
|
||||
private IConfiguration _configuration;
|
||||
private static string connectionString = string.Empty;
|
||||
private readonly BD_Conexion _bdConexion;
|
||||
|
||||
public JobsDgaVilosRepository(IConfiguration configuration)
|
||||
public JobsDgaVilosRepository(IConfiguration configuration,BD_Conexion bdConexion)
|
||||
{
|
||||
_configuration = configuration;
|
||||
connectionString = _configuration.GetConnectionString("DefaultConnection") ?? "";
|
||||
_bdConexion = bdConexion;
|
||||
}
|
||||
|
||||
public async Task<bool> InsertarDgaMacroResultadoVilos(List<DgaMacroResultadoVilos> dgaMacroResultadoVilos)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var connection = new SqlConnection(connectionString))
|
||||
using (var connection = new SqlConnection(_bdConexion.stringConnection))
|
||||
{
|
||||
await connection.OpenAsync();
|
||||
|
||||
|
@ -53,7 +54,7 @@ namespace DAL
|
|||
{
|
||||
try
|
||||
{
|
||||
using (var connection = new SqlConnection(connectionString))
|
||||
using (var connection = new SqlConnection(_bdConexion.stringConnection))
|
||||
{
|
||||
await connection.OpenAsync();
|
||||
|
||||
|
@ -77,7 +78,7 @@ namespace DAL
|
|||
{
|
||||
try
|
||||
{
|
||||
using (var connection = new SqlConnection(connectionString))
|
||||
using (var connection = new SqlConnection(_bdConexion.stringConnection))
|
||||
{
|
||||
await connection.OpenAsync();
|
||||
await connection.ExecuteAsync(
|
||||
|
@ -97,7 +98,7 @@ namespace DAL
|
|||
{
|
||||
try
|
||||
{
|
||||
using (var connection = new SqlConnection(connectionString))
|
||||
using (var connection = new SqlConnection(_bdConexion.stringConnection))
|
||||
{
|
||||
await connection.OpenAsync();
|
||||
await connection.ExecuteAsync(
|
||||
|
|
|
@ -7,24 +7,26 @@ using Dapper;
|
|||
using Microsoft.Data.SqlClient;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Shared.DTO.Envios_DGA;
|
||||
using Shared.Utils.Variables_Entorno;
|
||||
|
||||
namespace DAL
|
||||
{
|
||||
public class LogMedicionScadaRepository
|
||||
{
|
||||
private IConfiguration _configuration;
|
||||
private static string connectionString = string.Empty;
|
||||
public LogMedicionScadaRepository(IConfiguration configuration)
|
||||
private readonly BD_Conexion _bdConexion;
|
||||
|
||||
public LogMedicionScadaRepository(IConfiguration configuration,BD_Conexion bdConexion)
|
||||
{
|
||||
_configuration = configuration;
|
||||
connectionString = _configuration.GetConnectionString("DefaultConnection") ?? "";
|
||||
_bdConexion = bdConexion;
|
||||
}
|
||||
|
||||
public async Task<bool> InsertarLogMedicionScadaAsync(LogMedicionScada logMedicionScada)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var connection = new SqlConnection(connectionString))
|
||||
using (var connection = new SqlConnection(_bdConexion.stringConnection))
|
||||
{
|
||||
await connection.OpenAsync();
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
using Microsoft.Data.SqlClient;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Shared.DTO.Envios_DGA;
|
||||
using Shared.Utils.Variables_Entorno;
|
||||
using System.Data;
|
||||
|
||||
namespace DAL
|
||||
|
@ -9,16 +10,17 @@ namespace DAL
|
|||
public class MedicionScadaRepository
|
||||
{
|
||||
private readonly IConfiguration _configuration;
|
||||
private readonly BD_Conexion _bdConexion;
|
||||
|
||||
public MedicionScadaRepository(IConfiguration configuration)
|
||||
public MedicionScadaRepository(IConfiguration configuration,BD_Conexion bdConexion)
|
||||
{
|
||||
_configuration = configuration;
|
||||
_bdConexion = bdConexion;
|
||||
}
|
||||
|
||||
public async Task<List<MedicionScada>> ObtenerMedicionesAsync()
|
||||
{
|
||||
var connectionString = _configuration.GetConnectionString("DefaultConnection");
|
||||
await using var connection = new SqlConnection(connectionString);
|
||||
await using var connection = new SqlConnection(_bdConexion.stringConnection);
|
||||
|
||||
var result = await connection.QueryAsync<MedicionScada>(
|
||||
"SP_OBTENER_MEDICION_SMARTSCADA_OPERACION",
|
||||
|
|
|
@ -5,6 +5,8 @@ using DAL;
|
|||
using DAS;
|
||||
using BLL.Recuperacion_DGA;
|
||||
using BLL.Integracion_DGA;
|
||||
using Shared.Utils;
|
||||
using Shared.Utils.Variables_Entorno;
|
||||
|
||||
namespace Integracion_DGA
|
||||
{
|
||||
|
@ -12,11 +14,20 @@ namespace Integracion_DGA
|
|||
{
|
||||
static async Task Main(string[] args)
|
||||
{
|
||||
var nexusApiUrl = EnviromentUtils.GetEnvNexusApiUrl("NEXUS_API_URL");
|
||||
var subterraneaApiUrl = EnviromentUtils.GetEnvSubterraneaApiUrl("SUBTERRANEAS_API_URL");
|
||||
var bdConexion = EnviromentUtils.GetEnvBDConexion("CONEXION_BD_ENVIO_DGA");
|
||||
var credencialesDGA = EnviromentUtils.GetEnvCredencialesDGA("DGA_CREDENCIALES");
|
||||
|
||||
using IHost host = Host.CreateDefaultBuilder(args)
|
||||
.ConfigureServices((context, services) =>
|
||||
{
|
||||
IConfiguration configuration = context.Configuration;
|
||||
services.AddSingleton<IConfiguration>(configuration);
|
||||
services.AddSingleton(nexusApiUrl);
|
||||
services.AddSingleton(subterraneaApiUrl);
|
||||
services.AddSingleton(bdConexion);
|
||||
services.AddSingleton(credencialesDGA);
|
||||
|
||||
services.AddScoped<MedicionScadaRepository>();
|
||||
services.AddScoped<EnvioDGA>();
|
||||
|
@ -30,12 +41,12 @@ namespace Integracion_DGA
|
|||
services.AddScoped<BusinessLogic>();
|
||||
})
|
||||
.Build();
|
||||
|
||||
|
||||
var envioDGA = host.Services.GetRequiredService<EnvioDGA>();
|
||||
var bussinessLogic = host.Services.GetRequiredService<BusinessLogic>();
|
||||
var apiService = host.Services.GetRequiredService<ApiService>();
|
||||
await bussinessLogic.Run();
|
||||
var mediciones = await envioDGA.ObtenerMedicionesAsync();
|
||||
//await bussinessLogic.Run();
|
||||
//var mediciones = await envioDGA.ObtenerMedicionesAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,23 +1,4 @@
|
|||
{
|
||||
"ConnectionStrings": {
|
||||
"DefaultConnection": "Server=10.224.7.53,1433;Initial Catalog=ENVIO_DGA;Persist Security Info=False;User ID=usrdga;Password=AfX8zE8F740;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=true;Connection Timeout=30;"
|
||||
},
|
||||
"ApiSettings": {
|
||||
"ApiUrl": "http://smartscada.esval.cl:56000",
|
||||
"ApiKey": "3c5fa5dd-1b19-422a-b668-10b1b6c566e2",
|
||||
"Version": "v3.0",
|
||||
"DataSource": "RAW",
|
||||
"Resolution": "RES_15_MIN"
|
||||
},
|
||||
"ApiSubterranea": {
|
||||
"BaseUrl": "https://apimee.mop.gob.cl",
|
||||
"Endpoint": "/api/v1/mediciones/subterraneas"
|
||||
},
|
||||
"Credenciales": {
|
||||
"rutEmpresa": "9A4PUqd1t4",
|
||||
"rutUsuario": "77555666-7",
|
||||
"password": "20999888-7"
|
||||
},
|
||||
"Logging": {
|
||||
"LogFile": {
|
||||
"Path": "logs/log.txt"
|
||||
|
|
|
@ -26,5 +26,7 @@ namespace Shared.DTO.Envios_DGA
|
|||
public decimal? Caudalsub { get; set; }
|
||||
|
||||
public decimal? Nivel { get; set; }
|
||||
|
||||
public string? TipoEmpresa { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
79
SHARED/Utils/EnviromentUtils.cs
Normal file
79
SHARED/Utils/EnviromentUtils.cs
Normal file
|
@ -0,0 +1,79 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Shared.Utils.Variables_Entorno;
|
||||
|
||||
namespace Shared.Utils
|
||||
{
|
||||
public static class EnviromentUtils
|
||||
{
|
||||
public static Dictionary<string,string> GetVarEnviromentDict(string key)
|
||||
{
|
||||
string variableEnv = Environment.GetEnvironmentVariable(key);
|
||||
if (string.IsNullOrEmpty(variableEnv))
|
||||
{
|
||||
throw new ArgumentException($"La variable de entorno '{key}' no está definida.");
|
||||
}
|
||||
var dictionary = new Dictionary<string, string>();
|
||||
var pares = variableEnv.Split(';');
|
||||
|
||||
foreach (var data in pares)
|
||||
{
|
||||
if(data == null || data.Equals("")) { continue; }
|
||||
var div = data.IndexOf('=');
|
||||
var keyValue = data.Substring(0, div).ToUpper();
|
||||
var value = data.Substring(div+1);
|
||||
if (!string.IsNullOrEmpty(keyValue) && !string.IsNullOrEmpty(value))
|
||||
{
|
||||
dictionary.Add(keyValue, value);
|
||||
}
|
||||
}
|
||||
return dictionary;
|
||||
}
|
||||
|
||||
public static Credenciales_DGA GetEnvCredencialesDGA(string env)
|
||||
{
|
||||
Dictionary<string,string> dictEnv = GetVarEnviromentDict(env);
|
||||
return new Credenciales_DGA
|
||||
{
|
||||
RutEmpresa = dictEnv.ContainsKey("RUTEMPRESA") ? dictEnv["RUTEMPRESA"] : string.Empty,
|
||||
RutUsuario = dictEnv.ContainsKey("RUTUSUARIO") ? dictEnv["RUTUSUARIO"] : string.Empty,
|
||||
Password = dictEnv.ContainsKey("PASSWORD") ? dictEnv["PASSWORD"] : string.Empty
|
||||
};
|
||||
}
|
||||
|
||||
public static BD_Conexion GetEnvBDConexion(string env)
|
||||
{
|
||||
|
||||
return new BD_Conexion
|
||||
{
|
||||
stringConnection = Environment.GetEnvironmentVariable(env) ?? string.Empty
|
||||
};
|
||||
}
|
||||
|
||||
public static NexusApiUrl GetEnvNexusApiUrl(string env)
|
||||
{
|
||||
Dictionary<string, string> dictEnv = GetVarEnviromentDict(env);
|
||||
return new NexusApiUrl
|
||||
{
|
||||
ApiUrl = dictEnv.ContainsKey("URL") ? dictEnv["URL"] : string.Empty,
|
||||
ApiKey = dictEnv.ContainsKey("APIKEY") ? dictEnv["APIKEY"] : string.Empty,
|
||||
Version = dictEnv.ContainsKey("VERSION") ? dictEnv["VERSION"] : string.Empty,
|
||||
DataSource = dictEnv.ContainsKey("DATASOURCE") ? dictEnv["DATASOURCE"] : string.Empty,
|
||||
Resolution = dictEnv.ContainsKey("RESOLUTION") ? dictEnv["RESOLUTION"] : string.Empty
|
||||
};
|
||||
}
|
||||
|
||||
public static SubterraneaApiUrl GetEnvSubterraneaApiUrl(string env)
|
||||
{
|
||||
Dictionary<string, string> dictEnv = GetVarEnviromentDict(env);
|
||||
return new SubterraneaApiUrl
|
||||
{
|
||||
BaseUrl = dictEnv.ContainsKey("URL") ? dictEnv["URL"] : string.Empty,
|
||||
EndPoint = dictEnv.ContainsKey("ENDPOINT") ? dictEnv["ENDPOINT"] : string.Empty
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
13
SHARED/Utils/Variables_Entorno/BD_Conexion.cs
Normal file
13
SHARED/Utils/Variables_Entorno/BD_Conexion.cs
Normal file
|
@ -0,0 +1,13 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Shared.Utils.Variables_Entorno
|
||||
{
|
||||
public class BD_Conexion
|
||||
{
|
||||
public String stringConnection { get; set; }
|
||||
}
|
||||
}
|
16
SHARED/Utils/Variables_Entorno/Credenciales_DGA.cs
Normal file
16
SHARED/Utils/Variables_Entorno/Credenciales_DGA.cs
Normal file
|
@ -0,0 +1,16 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Shared.Utils.Variables_Entorno
|
||||
{
|
||||
public class Credenciales_DGA
|
||||
{
|
||||
public String RutEmpresa { get; set; }
|
||||
public String RutUsuario { get; set; }
|
||||
public String Password { get; set; }
|
||||
|
||||
}
|
||||
}
|
18
SHARED/Utils/Variables_Entorno/NexusApiUrl.cs
Normal file
18
SHARED/Utils/Variables_Entorno/NexusApiUrl.cs
Normal file
|
@ -0,0 +1,18 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Shared.Utils.Variables_Entorno
|
||||
{
|
||||
public class NexusApiUrl
|
||||
{
|
||||
public String ApiUrl { get; set; }
|
||||
public String ApiKey { get; set; }
|
||||
public String Version { get; set; }
|
||||
public String DataSource { get; set; }
|
||||
public String Resolution { get; set; }
|
||||
|
||||
}
|
||||
}
|
15
SHARED/Utils/Variables_Entorno/SubterraneaApiUrl.cs
Normal file
15
SHARED/Utils/Variables_Entorno/SubterraneaApiUrl.cs
Normal file
|
@ -0,0 +1,15 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Shared.Utils.Variables_Entorno
|
||||
{
|
||||
public class SubterraneaApiUrl
|
||||
{
|
||||
public string BaseUrl { get; set; }
|
||||
public string EndPoint { get; set; }
|
||||
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue