This repository has been archived on 2022-11-03. You can view files and clone it, but cannot push or open issues or pull requests.
DevOpsOpenHack/support/simulator/DeviceSim/Program.cs
2022-11-03 16:41:13 -04:00

106 lines
3.8 KiB
C#

using DeviceSim.Controllers;
using DeviceSim.Helpers;
using Microsoft.Extensions.Configuration;
using System;
using System.Threading;
using System.Threading.Tasks;
namespace DeviceSim
{
internal class Program
{
#region Variables
private static DBConnectionInfo dBConnectionInfo;
public static int WaitTime { get; private set; }
public static string TeamName { get; private set; }
public static bool UseApi { get; private set; }
public static string UserApiEndPoint { get; private set; }
public static string PoiApiEndPoint { get; private set; }
public static string TripsApiEndPoint { get; private set; }
#endregion Variables
private static void Main(string[] args)
{
InitializeApp();
UseApi = true;
Console.WriteLine($"***** {TeamName}-Driving Simulator *****");
Console.WriteLine($"Currently Using API Routes : {UseApi.ToString()}");
Console.WriteLine($"*Starting Simulator - A new trip will be created every {WaitTime / 1000} seconds *");
while (true)
{
try
{
CreateTripAsync().Wait();
Thread.Sleep(WaitTime);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
private static async Task CreateTripAsync()
{
try
{
Console.WriteLine($"Starting Trip Creation : {DateTime.Now}. ");
await CreateTrip();
Console.WriteLine($"Trip Completed at : {DateTime.Now}. ");
}
catch (Exception)
{
throw;
}
}
private static void InitializeApp()
{
IConfiguration funcConfiguration;
var builder = new ConfigurationBuilder().AddEnvironmentVariables();
funcConfiguration = builder.Build();
//Environmental Variables - Pass to Container
//Database Connection Information
dBConnectionInfo.DBServer = funcConfiguration.GetSection("SQL_SERVER").Value;
dBConnectionInfo.DBUserName = funcConfiguration.GetSection("SQL_USER").Value;
dBConnectionInfo.DBPassword = funcConfiguration.GetSection("SQL_PASSWORD").Value;
dBConnectionInfo.DBCatalog = "mydrivingDB";
//Api Connection Information
UseApi = Convert.ToBoolean(funcConfiguration.GetSection("USE_API").Value);
UserApiEndPoint = funcConfiguration.GetSection("USER_ROOT_URL").Value;
PoiApiEndPoint = funcConfiguration.GetSection("POI_ROOT_URL").Value;
TripsApiEndPoint = funcConfiguration.GetSection("TRIPS_ROOT_URL").Value;
//Execution Information
WaitTime = Convert.ToInt32(funcConfiguration.GetSection("TRIP_FREQUENCY").Value ?? ("180000"));
TeamName = funcConfiguration.GetSection("TEAM_NAME").Value ?? ("TEAM 01");
}
private static async Task CreateTrip()
{
try
{
if (UseApi)
{
ApiTripController CurrentTrip = new ApiTripController(dBConnectionInfo, UserApiEndPoint, PoiApiEndPoint, TripsApiEndPoint);
await CurrentTrip.CreateTrip();
}
else
{
EFTripController CurrentTrip = new EFTripController(dBConnectionInfo);
await CurrentTrip.CreateTrip();
await CurrentTrip.SaveChangesAsync();
}
}
catch (Exception)
{
throw;//do Nothing just continue throwing
}
}
}
}