JsValue Emit(JsValue thisValue, JsValue[] parameters) { if (parameters.Length < 3) { throw new ArgumentException("invalid number of parameters"); } string stream = EnsureNonNullStringValue(parameters.At(0), "streamId"); var eventType = EnsureNonNullStringValue(parameters.At(1), "eventName"); var eventBody = EnsureNonNullObjectValue(parameters.At(2), "eventBody"); if (parameters.Length == 4 && !parameters.At(3).IsObject()) #pragma warning disable CA2208 // ReSharper disable once NotResolvedInText { throw new ArgumentException("object expected", "metadata"); } #pragma warning restore CA2208 var data = _json.Stringify(JsValue.Undefined, new JsValue[] { eventBody }).AsString(); ExtraMetaData?metadata = null; if (parameters.Length == 4) { var md = parameters.At(3).AsObject(); var d = new Dictionary <string, string?>(); foreach (var kvp in md.GetOwnProperties()) { d.Add(kvp.Key.AsString(), AsString(kvp.Value.Value, _json, true)); } metadata = new ExtraMetaData(d); } _emitted.Add(new EmittedEventEnvelope(new EmittedDataEvent(stream, Guid.NewGuid(), eventType, true, data, metadata, _currentPosition, null))); return(JsValue.Undefined); }
public static void Publish(Resolution resl, DateTime pubblicationStartDate, DateTime pubblicationEndDate, string xmlDoc, string xmlOther, int chainId, int chainEnum, bool isPrivacy) { var obj = resl.ResolutionObjectPrivacy != null?resl.ResolutionObjectPrivacy.Replace("&", "&") : resl.ResolutionObject.Replace("&", "&"); var resolutionType = resl.Type.Description; // Se non carica il valore, ricarico l'oggetto if (string.IsNullOrEmpty(resolutionType)) { var reslTypeFacade = new ResolutionTypeFacade(); resolutionType = reslTypeFacade.GetById(resl.Type.Id).Description; } var retVal = new ReturnValue(); try { Debug.Assert(resl.AdoptionDate != null, "resl.AdoptionDate != null"); retVal = ServiceSHP.InsertInPublicationArea(resl.Container.Name, resl.Year, resl.Number.ToString(), resl.AdoptionDate.Value, obj, DateTime.Now, pubblicationStartDate, pubblicationEndDate, resolutionType, xmlOther, xmlDoc); } catch (Exception ex) { throw new DocSuiteException("Errore pubblicazione", "Errore Pubblicazione internet: " + retVal.Guid, ex); } new ResolutionLogFacade().Log(resl, ResolutionLogType.WP, "File pubblicato correttamente"); try { resl.WebSPGuid = retVal.Guid; resl.WebState = Resolution.WebStateEnum.Published; resl.WebPublicationDate = pubblicationStartDate; new ResolutionFacade().Update(ref resl); // Registro il numero di publicazione ritornato // Da verificare non appena il servizio sarà disponibile var numeroPubblicazione = string.Empty; for (var i = 0; numeroPubblicazione == string.Empty && i < retVal.ExtraMetaDatas.Length; i++) { ExtraMetaData data = retVal.ExtraMetaDatas[i]; if (data.Name == "NumeroPubblicazione") { numeroPubblicazione = data.Value; } } if (numeroPubblicazione != string.Empty) { new ResolutionFacade().DoGenericWebPublication(resl, numeroPubblicazione, chainId, chainEnum, isPrivacy); } else { throw new DocSuiteException("Pubblicazione") { Descrizione = string.Format("Errore nella memorizzazione del numero di pubblicazione reslid = {0} Contattare l'amministratore del sistema.", resl.Id), User = DocSuiteContext.Current.User.FullUserName } }; } catch (Exception ex) { throw new DocSuiteException("Pubblicazione", ex) { Descrizione = string.Format("Errore Pubblicazione internet: Impossibile aggiornare i dati sul database. IdResolution = {0}", resl.Id), User = DocSuiteContext.Current.User.FullUserName }; } }
public bool ProcessEvent( string partition, CheckpointTag eventPosition, string category1, ResolvedEvent data, out string newState, out string newSharedState, out EmittedEventEnvelope[] emittedEvents) { newSharedState = null; emittedEvents = null; newState = null; if (data.EventStreamId != data.PositionStreamId) { return(false); } if (!data.IsJson) { return(false); } JObject metadata = null; try { metadata = JObject.Parse(data.Metadata); } catch (JsonReaderException) { return(false); } if (metadata[_correlationIdProperty] == null) { return(false); } string correlationId = metadata[_correlationIdProperty].Value <string>(); if (correlationId == null) { return(false); } string linkTarget; if (data.EventType == SystemEventTypes.LinkTo) { linkTarget = data.Data; } else { linkTarget = data.EventSequenceNumber + "@" + data.EventStreamId; } var metadataDict = new Dictionary <string, string>(); metadataDict.Add("$eventTimestamp", "\"" + data.Timestamp.ToString("yyyy-MM-ddTHH:mm:ss.ffffffZ") + "\""); if (data.EventType == SystemEventTypes.LinkTo) { JObject linkObj = new JObject(); linkObj.Add("eventId", data.EventId); linkObj.Add("metadata", metadata); metadataDict.Add("$link", linkObj.ToJson()); } var linkMetadata = new ExtraMetaData(metadataDict); emittedEvents = new[] { new EmittedEventEnvelope( new EmittedDataEvent( _corrIdStreamPrefix + correlationId, Guid.NewGuid(), "$>", false, linkTarget, linkMetadata, eventPosition, expectedTag: null)) }; return(true); }