コード例 #1
0
        /// <summary>
        /// Gets the sample type field value.
        /// </summary>
        /// <param name="field">
        /// The field.
        /// </param>
        /// <param name="editableRoot">
        /// The editable root.
        /// </param>
        /// <returns>
        /// The value.
        /// </returns>
        public object GetValue(DetailsSaveFieldModel field, IEditableRoot editableRoot)
        {
            var jObject = field.Value as JObject;
            if (jObject != null)
            {
                return jObject.ToObject<SampleTypeModel>();
            }

            return field.Value;
        }
コード例 #2
0
        public object GetValue(DetailsSaveFieldModel field, IEditableRoot editableRoot)
        {
            var bytes = field.Value as byte[];

            var base64 = field.Value as string;
            if (!string.IsNullOrEmpty(base64))
            {
                bytes = Convert.FromBase64String(base64);
            }

            return bytes;
        }
コード例 #3
0
        /// <summary>
        /// Gets the value.
        /// </summary>
        /// <param name="field">The field.</param>
        /// <param name="editableRoot">The editable root.</param>
        /// <returns></returns>
        public object GetValue(DetailsSaveFieldModel field, IEditableRoot editableRoot)
        {
            if (field.Settings == null)
                return null;

            var fileFieldOptions = field.Settings.ToObject<FileFieldOptions>();
            if (fileFieldOptions == null)
                return null;

            IFileProcess fileEdit = editableRoot.GetValueByPropertyName(field.SystemName);
            if (fileEdit == null)
                return null;

            fileEdit.FileName = fileFieldOptions.FileName;
            fileEdit.OriginalFileName = fileFieldOptions.OriginalFileName;

            if (!fileFieldOptions.Locked)
            {
                fileEdit.LockedDate = null;
            }
            else if (!fileEdit.Locked.HasValue || !fileEdit.Locked.Value)
            {
                fileEdit.LockedDate = DateTime.Now;
            }
            fileEdit.Locked = fileFieldOptions.Locked;
            fileEdit.LockedByAccountId = fileFieldOptions.LockedByAccountId;
            fileEdit.LockedByAccountName = fileFieldOptions.LockedByAccountName;

            if (fileFieldOptions.AuditLog != null)
            {
                fileEdit.FileChangeInfo = new AuditLogInfo
                {
                    LogType = fileFieldOptions.AuditLog.LogType,
                    ProcessName = fileFieldOptions.AuditLog.ProcessName,
                    ItemId = fileFieldOptions.AuditLog.ItemId,
                    FieldName = fileFieldOptions.AuditLog.FieldName,
                    OldValue = fileFieldOptions.AuditLog.OldValue,
                    NewValue = fileFieldOptions.AuditLog.NewValue,
                    DateUpdated = fileFieldOptions.AuditLog.DateUpdated,
                    User = fileFieldOptions.AuditLog.User
                };
            }

            var newModel = ((IBusinessBase)fileEdit).Save();

            if (fileFieldOptions.FileId == 0)
            {
                editableRoot.SetValueByPropertyName(string.Format("{0}Id", field.SystemName), ((IDynamicObject)newModel).Id);
            }

            return newModel;
        }
コード例 #4
0
		/// <summary>
		/// Gets the field value.
		/// </summary>
		/// <param name="field">The field.</param>
		/// <returns></returns>
		private object GetFieldValue(DetailsSaveFieldModel field)
		{
			switch (field.FieldType)
			{
				case ColumnTypes.Integer:
					return Convert.ToInt32(field.Value);
				case ColumnTypes.Frequency:
					var jObject = field.Value as JObject;
					if (jObject != null)
						return jObject.ToObject<FrequencyModel>();
					return field.Value;
				case ColumnTypes.Reference:
					return Convert.ToInt32(field.Value);
				case ColumnTypes.MultiReference:
					if (field.Value == null)
						return null;
					return JsonConvert.DeserializeObject<List<MultiCrossReferenceModel>>(field.Value.ToString());
				case ColumnTypes.Numeric:
					return Convert.ToDecimal(field.Value);
				default:
					return field.Value;
			}
		}
コード例 #5
0
 public object GetValue(DetailsSaveFieldModel field, IEditableRoot editableRoot)
 {
     return Convert.ToInt32(field.Value);
 }
コード例 #6
0
ファイル: DetailsCommand.cs プロジェクト: mparsin/Elements
 private static void SetSampleTypeValue(DetailsSaveFieldModel field, IEditableRoot editableRoot)
 {
     var model = field.Value as SampleTypeModel;
     if (model != null)
     {
         editableRoot.SetSampleType(field.SystemName, model.SampleType);
         editableRoot.SetSampleFalseLabel(field.SystemName, model.FalseLabel);
         editableRoot.SetSampleTrueLabel(field.SystemName, model.TrueLabel);
     }
 }
コード例 #7
0
ファイル: DetailsCommand.cs プロジェクト: mparsin/Elements
        private static void SetFrequencyValue(DetailsSaveFieldModel field, IEditableRoot editableRoot)
        {
            var model = field.Value as FrequencyModel;

            if (model != null)
            {
                FrequencyFieldOptions settings = null;
                if (field.Settings != null)
                {
                    settings = field.Settings.ToObject<FrequencyFieldOptions>();
                }

                editableRoot.SetFrequencyInfo(
                    field.SystemName,
                    new FrequencyInfo(GetFrequencyName(model, settings), model.FrequencyType.ToString(), model.FrequencyHours, model.SelectedEvent));
            }
        }
コード例 #8
0
ファイル: DetailsCommand.cs プロジェクト: mparsin/Elements
        private void SetMultiReferenceValue(DetailsSaveFieldModel field, IEditableRoot editableRoot)
        {
            var currentMcrValue = (ICrossRefItemList)editableRoot.GetValueByPropertyName(field.SystemName);
            if (field.Value == null)
            {
                currentMcrValue.Clear();
                return;
            }

            var mcrContent = JsonConvert.DeserializeObject<List<MultiCrossReferenceModel>>(field.Value.ToString());
            if (mcrContent == null || mcrContent.ToArray().Length == 0)
            {
                if (currentMcrValue != null)
                {
                    currentMcrValue.Clear();
                }
                return;
            }                      

            var newItemsList =  mcrContent
                .Where(mcrItem => !currentMcrValue.Contains(mcrItem.Id))
                .Select(c => (ICrossRefItemInfo)_dynamicTypeManager.GetMultiCrossReferenceItem(editableRoot.ProcessName, field.SystemName, c.Id)).ToList();
            var deletedItems = (from ICrossRefItemInfo item in currentMcrValue where !mcrContent.Select(x=>x.Id).Contains(item.Id) select item).ToList();

            currentMcrValue.RemoveRange(deletedItems);
            currentMcrValue.AddRange(newItemsList);           
        }
コード例 #9
0
ファイル: DetailsCommand.cs プロジェクト: mparsin/Elements
        private void SetValue(Type editableRootType, DetailsSaveFieldModel field, IEditableRoot editableRoot)
        {
            var prop = editableRootType.GetProperty(field.SystemName);
            if (prop != null)
            {
                if (_handlers.ContainsKey(field.FieldType))
                    field.Value = _handlers[field.FieldType].GetValue(field, editableRoot);

                if (field.FieldType == ColumnTypes.Reference)
                {
                    int? value = new int?(Convert.ToInt32(field.Value));
                    prop.SetValue(editableRoot, value);
                    return;
                }

                if (field.FieldType == ColumnTypes.MultiReference)
                {
                    SetMultiReferenceValue(field, editableRoot);
                    return;
                }

                if (field.FieldType == ColumnTypes.Numeric)
                {
                    decimal? value = new decimal?(Convert.ToDecimal(field.Value));
                    prop.SetValue(editableRoot, value);
                    return;
                }

                if (field.FieldType == ColumnTypes.Frequency)
                {
                    SetFrequencyValue(field, editableRoot);
                    return;
                }

                if (field.FieldType == ColumnTypes.SampleType)
                {
                    SetSampleTypeValue(field, editableRoot);
                    return;
                }

                prop.SetValue(editableRoot, field.Value);
            }
            else
                SetValue(editableRoot.GetBaseEdit().GetType(), field, editableRoot.GetBaseEdit());
        }