137 lines
4.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections.Immutable;
namespace dopt.DeltaBarth.DataObjects
{
/// <summary>
/// Eine verpackte Fehlermeldung, die vom API-Server zur Verfügung gestellt wurde.
/// </summary>
public record class ApiServerError
{
/// <summary>
/// Statuscode der HTTP-Anfrage
/// </summary>
public required int status_code { get; init; }
/// <summary>
/// Fehlerbezeichnung
/// </summary>
public required string message { get; init; }
/// <summary>
/// optional: spezifischer Code als Text, der vom Server ausgegeben wurde
/// </summary>
public string? code { get; init; }
/// <summary>
/// optional: spezifische Hinweise als Text, der vom Server ausgegeben wurde
/// </summary>
public string? hints { get; init; }
/// <summary>
/// optional: spezifischer Typus als Text, der vom Server ausgegeben wurde
/// </summary>
public string? type { get; init; }
/// <summary>
/// optional: spezifischer Titel als Text, der vom Server ausgegeben wurde
/// </summary>
public string? title { get; init; }
/// <summary>
/// optional: spezifischer ID (vermutlich zur Nachverfolgung) als Text, der vom Server ausgegeben wurde
/// </summary>
public string? traceId { get; init; }
}
/// <summary>
/// Status-Objekt: Gibt Aufschluss über Erfolg/Misserfolg einer Routine und beschreibt aufgetretene Fehler
/// mit zusätzlichen Informationen
/// </summary>
public record class Status
{
/// <summary>
/// bibliotheksinterner Fehlercode
/// </summary>
public required int code { get; init; }
/// <summary>
/// Fehlerbeschreibung oder Python-Exception-Name
/// </summary>
public required string description { get; init; }
/// <summary>
/// genauere Beschreibung oder Fehler-Inhalt
/// </summary>
public required string message { get; init; }
/// <summary cref="ApiServerError">
/// optional: eventuell aufgetretener API-Server-Fehler
/// </summary>
public ApiServerError? apiServerError { get; init; }
}
/// <summary>
/// Nutzerdaten zur API-Interaktion
/// </summary>
public record class Credentials
{
/// <summary>
/// Nutzername
/// </summary>
public required string username { get; init; }
/// <summary>
/// Passwort
/// </summary>
public required string password { get; init; }
/// <summary>
/// Datenbank
/// </summary>
public required string database { get; init; }
/// <summary>
/// Mandant
/// </summary>
public required string mandant { get; init; }
}
/// <summary>
/// Einzelergebnis der Umsatzprognose, 1 Eintrag von potenziell mehreren
/// </summary>
public record class UmsatzPrognoseEinzelergebnis
{
/// <summary>
/// Jahr des Eintrags
/// </summary>
public required int jahr { get; init; }
/// <summary>
/// Monat des Eintrags
/// </summary>
public required int monat { get; init; }
/// <summary>
/// Prognosewert für den Umsatz
/// </summary>
public required decimal vorhersage { get; init; }
}
/// <summary>
/// Sammlung von unterschiedlichen Einzelergebnissen
/// <see cref="UmsatzPrognoseEinzelergebnis"/>
/// </summary>
public record class UmsatzPrognoseErgebnisse
{
/// <summary>
/// unveränderliche Sammlung von Einzelergebnissen in Form eines Array
/// </summary>
public required ImmutableArray<UmsatzPrognoseEinzelergebnis> daten { get; init; }
}
/// <summary>
/// Ausgabe der Prognose-Pipeline:
/// enthält das Ergebnis als auch einen dazugehörigen Status
/// </summary>
public record class UmsatzPrognoseAusgabe
{
/// <summary>
/// Sammlung von Prognosewerten
/// <see cref="UmsatzPrognoseErgebnisse"/>
/// </summary>
public required UmsatzPrognoseErgebnisse response { get; init; }
/// <summary>
/// Status über den Erfolg/Misserfolg der Routine
/// <see cref="Status"/>
/// </summary>
public required Status status { get; init; }
}
}