193 lines
5.0 KiB
C#
193 lines
5.0 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Diagnostics;
|
|||
|
|
using System.Net;
|
|||
|
|
|
|||
|
|
class Program
|
|||
|
|
{
|
|||
|
|
static SignLanguageReportApiClient api;
|
|||
|
|
|
|||
|
|
static void Main(string[] args)
|
|||
|
|
{
|
|||
|
|
Console.Title = "SL REPORT – API TEST HARNESS";
|
|||
|
|
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
api = new SignLanguageReportApiClient("https://localhost:44367/");
|
|||
|
|
|
|||
|
|
LogHeader("SL REPORT TEST STARTED");
|
|||
|
|
|
|||
|
|
var userId = RegisterUser();
|
|||
|
|
if (userId == Guid.Empty)
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
RegisterClient();
|
|||
|
|
MapUser(userId);
|
|||
|
|
CaptureSessions();
|
|||
|
|
ReportAllHistory();
|
|||
|
|
ReportFilteredHistory();
|
|||
|
|
ListAllClients();
|
|||
|
|
|
|||
|
|
LogHeader("SL REPORT TEST COMPLETED");
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
LogFatal("UNHANDLED FATAL ERROR", ex);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Console.WriteLine("\nPress ENTER to exit...");
|
|||
|
|
Console.ReadLine();
|
|||
|
|
}
|
|||
|
|
static Guid RegisterUser()
|
|||
|
|
{
|
|||
|
|
return SafeCall(
|
|||
|
|
() => api.RegisterUser("test_user3", "123456"),
|
|||
|
|
"RegisterUser"
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
static void RegisterClient()
|
|||
|
|
{
|
|||
|
|
SafeCall(
|
|||
|
|
() => api.RegisterClient("13351", "MORO"),
|
|||
|
|
"RegisterClient"
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
static void MapUser(Guid userId)
|
|||
|
|
{
|
|||
|
|
SafeCall(
|
|||
|
|
() => api.MapUser(userId, "13351", "MORO"),
|
|||
|
|
"MapUser"
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
static void CaptureSessions()
|
|||
|
|
{
|
|||
|
|
SafeCall(() => api.Capture("13351", "MORO"), "Capture #1");
|
|||
|
|
SafeCall(() => api.Capture("13351", "MORO"), "Capture #2");
|
|||
|
|
}
|
|||
|
|
static void ReportAllHistory()
|
|||
|
|
{
|
|||
|
|
var history = SafeCall(
|
|||
|
|
() => api.ReportAllClientHistory("13351", "MORO"),
|
|||
|
|
"ReportAllClientHistory"
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
if (history == null) return;
|
|||
|
|
|
|||
|
|
LogInfo($"History records: {history.Count}");
|
|||
|
|
foreach (var h in history)
|
|||
|
|
LogInfo($"{h.captDate:yyyy-MM-dd HH:mm:ss} , Sessions: {h.NoOfSessions}");
|
|||
|
|
}
|
|||
|
|
static void ReportFilteredHistory()
|
|||
|
|
{
|
|||
|
|
var from = DateTime.Today.AddDays(-7);
|
|||
|
|
var to = DateTime.Today;
|
|||
|
|
|
|||
|
|
var history = SafeCall(
|
|||
|
|
() => api.ReportClientHistory("13351", "MORO", from, to),
|
|||
|
|
"ReportClientHistory"
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
if (history != null)
|
|||
|
|
LogInfo($"Filtered records: {history.Count}");
|
|||
|
|
foreach (var h in history)
|
|||
|
|
LogInfo($"{h.captDate:yyyy-MM-dd HH:mm:ss} , Sessions: {h.NoOfSessions}");
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
static void ListAllClients()
|
|||
|
|
{
|
|||
|
|
var clients = SafeCall(
|
|||
|
|
() => api.ListAllClients(),
|
|||
|
|
"ListAllClients"
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
if (clients != null)
|
|||
|
|
LogInfo($"Total clients: {clients.Count}");
|
|||
|
|
foreach (var c in clients)
|
|||
|
|
LogInfo($"cid: {c.cid}, srv: {c.srv}, addingDate: {c.addingDate}, lastCaptDate: {c.lastCaptDate}, NoOfCapt: {c.NoOfCapt}");
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
static T SafeCall<T>(Func<T> action, string stepName)
|
|||
|
|
{
|
|||
|
|
var sw = Stopwatch.StartNew();
|
|||
|
|
LogStep(stepName);
|
|||
|
|
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
var result = action();
|
|||
|
|
sw.Stop();
|
|||
|
|
LogSuccess($"{stepName} completed in {sw.ElapsedMilliseconds} ms");
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
catch (WebException wex)
|
|||
|
|
{
|
|||
|
|
sw.Stop();
|
|||
|
|
LogError(stepName, "NETWORK / HTTP ERROR", wex);
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
sw.Stop();
|
|||
|
|
LogError(stepName, "APPLICATION ERROR", ex);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return default;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
static void LogHeader(string msg)
|
|||
|
|
{
|
|||
|
|
Console.ForegroundColor = ConsoleColor.Cyan;
|
|||
|
|
Console.WriteLine("\n======================================");
|
|||
|
|
Console.WriteLine(msg);
|
|||
|
|
Console.WriteLine("======================================\n");
|
|||
|
|
Console.ResetColor();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
static void LogStep(string msg)
|
|||
|
|
{
|
|||
|
|
Console.ForegroundColor = ConsoleColor.Yellow;
|
|||
|
|
Console.WriteLine($"> {msg}");
|
|||
|
|
Console.ResetColor();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
static void LogSuccess(string msg)
|
|||
|
|
{
|
|||
|
|
Console.ForegroundColor = ConsoleColor.Green;
|
|||
|
|
Console.WriteLine($"✔ {msg}\n");
|
|||
|
|
Console.ResetColor();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
static void LogInfo(string msg)
|
|||
|
|
{
|
|||
|
|
Console.ForegroundColor = ConsoleColor.Gray;
|
|||
|
|
Console.WriteLine($" {msg}");
|
|||
|
|
Console.ResetColor();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
static void LogError(string step, string type, Exception ex)
|
|||
|
|
{
|
|||
|
|
Console.ForegroundColor = ConsoleColor.Red;
|
|||
|
|
Console.WriteLine($"✖ {step} FAILED [{type}]");
|
|||
|
|
Console.WriteLine($" Message: {ex.Message}");
|
|||
|
|
|
|||
|
|
if (ex.InnerException != null)
|
|||
|
|
Console.WriteLine($" Inner: {ex.InnerException.Message}");
|
|||
|
|
|
|||
|
|
Console.ResetColor();
|
|||
|
|
Console.WriteLine();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
static void LogFatal(string msg, Exception ex)
|
|||
|
|
{
|
|||
|
|
Console.ForegroundColor = ConsoleColor.DarkRed;
|
|||
|
|
Console.WriteLine("!!! FATAL ERROR !!!");
|
|||
|
|
Console.WriteLine(msg);
|
|||
|
|
|
|||
|
|
if (ex != null)
|
|||
|
|
{
|
|||
|
|
Console.WriteLine(ex.Message);
|
|||
|
|
Console.WriteLine(ex.StackTrace);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Console.ResetColor();
|
|||
|
|
}
|
|||
|
|
}
|