using Python.Runtime; using System.Text.Json; namespace dopt.DeltaBarth { public class Plugin : SharpPython.BasePlugin { protected dynamic pyModManagement; protected dynamic pyModPipeline; public Plugin() : base(verbose: false) { base.Initialise(); using (Py.GIL()) { pyModManagement = Py.Import("delta_barth.management"); pyModPipeline = Py.Import("delta_barth.pipelines"); } } public void Startup(string basisApiUrl, string nutzername, string passwort, string datenbank, string mandant) { SetzeBasisApiUrl(basisApiUrl); SetzeNutzerdaten(nutzername, passwort, datenbank, mandant); } public void Shutdown() { base.Finalise(); } public void SetzeBasisApiUrl(string basisApiUrl) { pyModManagement.set_base_url(basisApiUrl); } public void SetzeNutzerdaten(string nutzername, string passwort, string datenbank, string mandant) { using (Py.GIL()) { pyModManagement.set_credentials(nutzername, passwort, datenbank, mandant); } } public JsonStructs.UmsatzPrognoseAusgabe UmsatzprognoseDummy(int? firmaId, DateTime? buchungsDatum) { string pyJson; using (Py.GIL()) { pyJson = pyModPipeline.pipeline_sales_forecast_dummy(firmaId, buchungsDatum); } var parsed = JsonSerializer.Deserialize(pyJson); return parsed; } public JsonStructs.UmsatzPrognoseAusgabe Umsatzprognose(int? firmaId, DateTime? buchungsDatum) { string pyJson; using (Py.GIL()) { pyJson = pyModPipeline.pipeline_sales_forecast(firmaId, buchungsDatum); } var parsed = JsonSerializer.Deserialize(pyJson); return parsed; } protected string GetBaseApiUrl() { string pyJson; using (Py.GIL()) { pyJson = (string)pyModManagement.get_base_url(); } return pyJson; } protected JsonStructs.Credentials GetCredentials() { string pyJson; using (Py.GIL()) { pyJson = (string)pyModManagement.get_credentials(); } JsonStructs.Credentials credentials = JsonSerializer.Deserialize(pyJson); return credentials; } } }