Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
            }
        }