/// <summary> /// Create from service model /// </summary> /// <param name="model"></param> public ReplaceValuesDetailsApiModel(ReplaceValuesDetailsModel model) { if (model == null) { throw new ArgumentNullException(nameof(model)); } Values = model.Values? .Select(v => v == null ? null : new HistoricValueApiModel(v)) .ToList(); }
/// <summary> /// Create service model from api model /// </summary> public static ReplaceValuesDetailsApiModel ToApiModel( this ReplaceValuesDetailsModel model) { if (model == null) { return(null); } return(new ReplaceValuesDetailsApiModel { Values = model.Values? .Select(v => v.ToApiModel()) .ToList() }); }
/// <summary> /// Convert update data details /// </summary> /// <param name="codec"></param> /// <param name="details"></param> /// <returns></returns> public static JToken Encode(this IVariantEncoder codec, ReplaceValuesDetailsModel details) { if (details == null) { throw new ArgumentNullException(nameof(details)); } if (details.Values == null || details.Values.Count == 0) { throw new ArgumentException(nameof(details.Values)); } return(codec.Encode(new ExtensionObject(new UpdateDataDetails { NodeId = NodeId.Null, PerformInsertReplace = PerformUpdateType.Replace, UpdateValues = new DataValueCollection(details.Values .Select(d => new DataValue { ServerPicoseconds = d.ServerPicoseconds ?? 0, SourcePicoseconds = d.SourcePicoseconds ?? 0, ServerTimestamp = d.ServerTimestamp ?? DateTime.MinValue, SourceTimestamp = d.SourceTimestamp ?? DateTime.MinValue, StatusCode = d.StatusCode ?? StatusCodes.Good, Value = new EncodeableJToken(d.Value) // TODO: Validate })) }))); }