Skip to content
Merged
26 changes: 13 additions & 13 deletions src/AasxServerStandardBib/EventService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -537,7 +537,7 @@ public async void PublishRestApiMessage(EventDto eventData, string submodelId, s
wp = true;

var e = CollectPayloadForRestApi(null, eventData.ConditionSM, eventData.ConditionSME,
minInterval, maxInterval, wp, diffTime);
minInterval, maxInterval, wp, diffTime, submodelId);

var options = new JsonSerializerOptions
{
Expand Down Expand Up @@ -838,7 +838,7 @@ private string GetSha1Base64URL(string input)

private List<EventPayload> CollectPayloadForRestApi(SqlConditions? securitySqlConditions,
AasCore.Aas3_1.Property conditionSM, AasCore.Aas3_1.Property conditionSME, TimeSpan minInterval, TimeSpan maxInterval,
bool withPayload, DateTime diffTime)
bool withPayload, DateTime diffTime, string eventSubmodelId)
{
bool isREST = true;

Expand Down Expand Up @@ -892,15 +892,15 @@ private List<EventPayload> CollectPayloadForRestApi(SqlConditions? securitySqlCo

if (searchSM is "(*)" or "*" or "")
{
var s = db.SMSets.Select(sm => sm.TimeStampTree);
var s = db.SMSets.Where(sm => sm.Identifier != eventSubmodelId).Select(sm => sm.TimeStampTree);
if (s.Any())
{
timeStampMax = s.Max();
}
}
else
{
var s = db.SMSets.Where(searchSM).Select(sm => sm.TimeStampTree);
var s = db.SMSets.Where(sm => sm.Identifier != eventSubmodelId).Where(searchSM).Select(sm => sm.TimeStampTree);
if (s.Any())
{
timeStampMax = s.Max();
Expand All @@ -909,7 +909,7 @@ private List<EventPayload> CollectPayloadForRestApi(SqlConditions? securitySqlCo

eventPayload.SetTime(timeStampMax);

IQueryable<SMSet> smSearchSet = db.SMSets;
IQueryable<SMSet> smSearchSet = db.SMSets.Where(sm => sm.Identifier != eventSubmodelId);
if (!searchSM.IsNullOrEmpty() && searchSM != "*")
{
smSearchSet = smSearchSet.Where(searchSM);
Expand Down Expand Up @@ -944,7 +944,7 @@ private List<EventPayload> CollectPayloadForRestApi(SqlConditions? securitySqlCo

//entry.time = TimeStamp.TimeStamp.DateTimeToString(sm.TimeStampTree);

entry.dataSchema = EventPayload.REST_API_SM_SCHEMA_URL;
entry.SetDataschema(EventPayload.REST_API_SM_SCHEMA_URL);

if (sm.SemanticId != null && !isREST)
{
Expand Down Expand Up @@ -1309,7 +1309,7 @@ public List<EventPayload> CollectPayload(SqlConditions? securitySqlConditions, b

entry.source = sourceString;

entry.dataSchema = EventPayload.SCHEMA_URL + CrudOperator.GetModelType(sme.SMEType);
entry.SetDataschema(EventPayload.SCHEMA_URL + CrudOperator.GetModelType(sme.SMEType));

if (notDeletedIdShortList != null && notDeletedIdShortList.Count > 0)
{
Expand Down Expand Up @@ -1367,7 +1367,7 @@ public List<EventPayload> CollectPayload(SqlConditions? securitySqlConditions, b
entry.SetSubmodelType(entryType);
entry.SetTime(sm.TimeStampTree);

entry.dataSchema = EventPayload.SCHEMA_URL + "submodel";
entry.SetDataschema(EventPayload.SCHEMA_URL + "submodel");

if (sm.SemanticId != null && !isREST)
{
Expand Down Expand Up @@ -1451,7 +1451,7 @@ private void AddStatus(string basicEventElementSourceString, string basicEventEl
{
if (!basicEventElementSourceString.IsNullOrEmpty())
{
eventPayload.dataSchema = "https://api.swaggerhub.com/domains/Plattform_i40/Part1-MetaModel-Schemas/V3.1.0#/components/schemas/BasicEventElement";
eventPayload.SetDataschema("https://api.swaggerhub.com/domains/Plattform_i40/Part1-MetaModel-Schemas/V3.1.0#/components/schemas/BasicEventElement");
eventPayload.id = $"{basicEventElementSourceString}-{eventPayload.time}";
eventPayload.source = basicEventElementSourceString;
eventPayload.cursor = "0";
Expand Down Expand Up @@ -2388,7 +2388,7 @@ public async void NotifyDeleted(ISubmodel submodel, string idShortPath, string s
eventPayload.source = $"{Program.externalBlazor}/submodels/{Base64UrlEncoder.Encode(mqttEventDto.SubmodelId)}/events/{mqttEventDto.IdShortPath}.{mqttEventDto.IdShort}";
}
eventPayload.semanticid = (mqttEventDto.SemanticId != null && mqttEventDto.SemanticId?.Keys != null) ? mqttEventDto.SemanticId?.Keys[0].Value : "";
eventPayload.dataSchema = "https://api.swaggerhub.com/domains/Plattform_i40/Part1-MetaModel-Schemas/V3.1.0#/components/schemas/BasicEventElement";
eventPayload.SetDataschema("https://api.swaggerhub.com/domains/Plattform_i40/Part1-MetaModel-Schemas/V3.1.0#/components/schemas/BasicEventElement");

}
else
Expand All @@ -2402,11 +2402,11 @@ public async void NotifyDeleted(ISubmodel submodel, string idShortPath, string s
{
sourceString += "/submodel-elements/" + idShortPath;
eventPayload.semanticid = smeSemanticId;
eventPayload.dataSchema = EventPayload.SCHEMA_URL + smeModelType;
eventPayload.SetDataschema(EventPayload.SCHEMA_URL + smeModelType);
}
else
{
eventPayload.dataSchema = EventPayload.SCHEMA_URL + "submodel";
eventPayload.SetDataschema(EventPayload.SCHEMA_URL + "submodel");

if (submodel.SemanticId != null)
{
Expand Down Expand Up @@ -2547,7 +2547,7 @@ public async void NotifyDeleted(ISubmodel submodel, string idShortPath, string s
eventPayload.SetSubmodelType(EventPayloadType.Deleted);
eventPayload.SetTime(submodel.TimeStampTree);

eventPayload.dataSchema = EventPayload.REST_API_SM_SCHEMA_URL;
eventPayload.SetDataschema(EventPayload.REST_API_SM_SCHEMA_URL) ;

if (submodel.SemanticId != null)
{
Expand Down
24 changes: 23 additions & 1 deletion src/Contracts/Events/EventPayload.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ namespace Contracts.Events;
using System.ComponentModel;
using System.Text.Json.Nodes;
using System.Text.Json.Serialization;
using Irony.Parsing;
using Microsoft.IdentityModel.Tokens;


Expand Down Expand Up @@ -65,7 +66,9 @@ public class EventPayload : IComparable<EventPayload>
public string type { get; set; } // Created, Updated, Deleted
public string source { get; set; } // link to source
public JsonObject data { get; set; } // JSON Serialization
public string dataSchema { get; set; } // SCHEMA_URL + model type

public string dataSchema { get; private set; } // SCHEMA_URL + model type
public string dataschema { get; private set; } // SCHEMA_URL + model type fur REST API
public List<string> notDeletedIdShortList { get; set; } // for DELETE only, remaining idShort
public string semanticid { get; set; }
public string subject { get; set; }
Expand All @@ -79,12 +82,14 @@ public EventPayload(bool isREST)
{
id = Guid.NewGuid().ToString();
domain = null;
dataSchema = null;
}
else
{
id = null;
datacontenttype = DATA_CONTENT_TYPE;
domain = "";
dataschema = null;
}

IsREST = isREST;
Expand All @@ -98,6 +103,18 @@ public void SetSubmodelType(EventPayloadType type)
this.type = $"io.admin-shell.submodel.{type.ToString()?.ToLower()}.v1";
}

public void SetDataschema(string dataschema)
{
if (IsREST)
{
this.dataschema = dataschema;
}
else
{
this.dataSchema = dataschema;
}
}

public void SetTime(DateTime dateTime)
{
if (IsREST)
Expand Down Expand Up @@ -165,6 +182,11 @@ public string GetIdShortPath()

public string GetModelType()
{
if (IsREST)
{
return dataschema.Split("/")?.Last();
}

return dataSchema.Split("/")?.Last();
}

Expand Down
Loading