2025-04-14 12:55:28 -07:00

126 lines
4.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.Priority;
#nullable enable
public class Notification
{
[JsonConstructor]
public Notification(int? fibonacci,
string? id,
int? inverse,
string? machineId,
string page,
string? site,
string? sessionId,
string time,
string? username,
string? value)
{
int? i = inverse is not null ? inverse : GetInverse(value);
Fibonacci = fibonacci is not null ? fibonacci : i is null ? null : GetFibonacci(i.Value);
Id = id;
Inverse = i;
MachineId = machineId;
Page = page;
Site = site is not null ? site : "MES";
SessionId = sessionId;
Time = time;
Username = username;
Value = value;
}
[JsonPropertyName("id")] public string? Id { get; }
[JsonPropertyName("fibonacci")] public int? Fibonacci { get; }
[JsonPropertyName("inverse")] public int? Inverse { get; }
[JsonPropertyName("machineId")] public string? MachineId { get; }
[JsonPropertyName("page")] public string Page { get; }
[JsonPropertyName("site")] public string? Site { get; }
[JsonPropertyName("sessionId")] public string? SessionId { get; }
[JsonPropertyName("time")] public string Time { get; }
[JsonPropertyName("username")] public string? Username { get; }
[JsonPropertyName("value")] public string? Value { get; }
internal static Notification Get(Dictionary<string, string?> keyValuePairs)
{
Notification results;
string? id;
string? fibonacci;
string? inverse;
string? machineId;
string? page;
string? site;
string? sessionId;
string? username;
string? time;
string? value;
if (!keyValuePairs.TryGetValue(nameof(id), out id))
id = null;
if (!keyValuePairs.TryGetValue(nameof(fibonacci), out fibonacci))
fibonacci = null;
if (!keyValuePairs.TryGetValue(nameof(inverse), out inverse))
inverse = null;
if (!keyValuePairs.TryGetValue(nameof(machineId), out machineId))
machineId = null;
if (!keyValuePairs.TryGetValue(nameof(page), out page))
throw new Exception();
if (!keyValuePairs.TryGetValue(nameof(site), out site))
site = null;
if (!keyValuePairs.TryGetValue(nameof(sessionId), out sessionId))
sessionId = null;
if (!keyValuePairs.TryGetValue(nameof(username), out username))
username = null;
if (!keyValuePairs.TryGetValue(nameof(time), out time))
throw new Exception();
if (!keyValuePairs.TryGetValue(nameof(value), out value))
value = null;
results = new(fibonacci: fibonacci is null ? null : int.Parse(fibonacci),
id: id,
inverse: inverse is null ? null : int.Parse(inverse),
machineId: machineId,
page: page ?? throw new Exception(),
site: site,
sessionId: sessionId,
time: time ?? throw new Exception(),
username: username,
value: value);
return results;
}
internal static int? GetInverse(string? value) =>
value switch
{
"1" => 5,
"2" => 4,
"3" => 3,
"4" => 2,
"5" => 1,
_ => null
};
private static int? GetFibonacci(int value) =>
value switch
{
9 => 55,
8 => 34,
7 => 21,
6 => 13,
5 => 8,
4 => 5,
3 => 3,
2 => 2,
1 => 1,
_ => null
};
}
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(Notification))]
public partial class NotificationSourceGenerationContext : JsonSerializerContext
{
}