public object PersistDataValue(PersistDataValueRequest request)
        {
            // Variables.
            var result           = default(object);
            var rootId           = CoreConstants.System.Root.ToInvariantString();
            var dataValuesRootId = GuidHelper.GetGuid(DataValuesConstants.Id);
            var parentId         = GuidHelper.GetGuid(request.ParentId);
            var kindId           = GuidHelper.GetGuid(request.KindId);


            // Catch all errors.
            try
            {
                // Parse or create the data value ID.
                var dataValueId = string.IsNullOrWhiteSpace(request.DataValueId)
                    ? Guid.NewGuid()
                    : GuidHelper.GetGuid(request.DataValueId);


                // Get the ID path.
                var parent = parentId == Guid.Empty ? null : Entities.Retrieve(parentId);
                var path   = parent == null
                    ? new[] { dataValuesRootId, dataValueId }
                    : parent.Path.Concat(new[] { dataValueId }).ToArray();


                // Create data value.
                var dataValue = new DataValue()
                {
                    KindId = kindId,
                    Id     = dataValueId,
                    Path   = path,
                    Name   = request.DataValueName,
                    Alias  = request.DataValueAlias,
                    Data   = JsonHelper.Serialize(request.Data)
                };


                // Persist data value.
                Persistence.Persist(dataValue);


                // Variables.
                var fullPath = new[] { rootId }
                .Concat(path.Select(x => GuidHelper.GetString(x)))
                .ToArray();


                // Success.
                result = new
                {
                    Success = true,
                    Id      = GuidHelper.GetString(dataValueId),
                    Path    = fullPath
                };
            }
            catch (Exception ex)
            {
                // Error.
                LogHelper.Error <DataValuesController>(PersistDataValueError, ex);
                result = new
                {
                    Success = false,
                    Reason  = UnhandledError
                };
            }


            // Return result.
            return(result);
        }
        public object PersistDataValue(PersistDataValueRequest request)
        {
            // Variables.
            var result = default(object);
            var rootId = CoreConstants.System.Root.ToInvariantString();
            var dataValuesRootId = GuidHelper.GetGuid(DataValuesConstants.Id);
            var parentId = GuidHelper.GetGuid(request.ParentId);
            var kindId = GuidHelper.GetGuid(request.KindId);

            // Catch all errors.
            try
            {

                // Parse or create the data value ID.
                var dataValueId = string.IsNullOrWhiteSpace(request.DataValueId)
                    ? Guid.NewGuid()
                    : GuidHelper.GetGuid(request.DataValueId);

                // Get the ID path.
                var path = parentId == Guid.Empty
                    ? new[] { dataValuesRootId, dataValueId }
                    : Entities.Retrieve(parentId).Path
                        .Concat(new[] { dataValueId }).ToArray();

                // Create data value.
                var dataValue = new DataValue()
                {
                    KindId = kindId,
                    Id = dataValueId,
                    Path = path,
                    Name = request.DataValueName,
                    Alias = request.DataValueAlias,
                    Data = JsonHelper.Serialize(request.Data)
                };

                // Persist data value.
                Persistence.Persist(dataValue);

                // Variables.
                var fullPath = new[] { rootId }
                    .Concat(path.Select(x => GuidHelper.GetString(x)))
                    .ToArray();

                // Success.
                result = new
                {
                    Success = true,
                    Id = GuidHelper.GetString(dataValueId),
                    Path = fullPath
                };

            }
            catch (Exception ex)
            {

                // Error.
                LogHelper.Error<DataValuesController>(PersistDataValueError, ex);
                result = new
                {
                    Success = false,
                    Reason = UnhandledError
                };

            }

            // Return result.
            return result;
        }