/// <summary> /// Sets the value of the field. /// </summary> /// <param name="value"> /// The value. /// </param> /// <param name="identity"> /// The identity setting the value. /// </param> /// <returns> /// The current <see cref="FieldValue"/>. /// </returns> public FieldValue Set(object value, DomainIdentity identity) { this.elements.Clear(); if (value is ICollection list) { foreach (var item in list) { var element = new FieldValueElement(item); this.elements.Add(element); element.AddToValue(this); } } else { var element = new FieldValueElement(value); this.elements.Add(element); element.AddToValue(this); } this.LastModifiedBy = identity; // Reducing resolution for the purposes of PostgreSQL compatibility. var now = DateTimeOffset.Now; this.LastModifiedTime = new DateTimeOffset(now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second, now.Millisecond, now.Offset); return(this); }
/// <summary> /// Loads value elements into the value. /// </summary> /// <param name="valueElements"> /// The elements to load. /// </param> public void Load([NotNull] IEnumerable <FieldValueElement> valueElements) { if (valueElements == null) { throw new ArgumentNullException(nameof(valueElements)); } this.elements.Clear(); foreach (var item in valueElements.OrderBy(element => element.Order)) { var element = new FieldValueElement(item.Element, item.FieldValueElementId.GetValueOrDefault()); this.elements.Add(element); element.AddToValue(this); } }