99 lines
3.2 KiB
C#

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