예제 #1
0
        private bool UpdateDateTimeFieldValue(Model.FieldDefinitions.FieldValue fieldValue, CustomFieldValue customFieldValue)
        {
            if (!(fieldValue is Model.FieldDefinitions.DateTimeFieldValue dateTimeFieldValue))
            {
                return(false);
            }

            dateTimeFieldValue.PreviousValue = dateTimeFieldValue.Value;

            var listString = _tmService.GetMultipleStringValues(fieldValue.GetValueString(), fieldValue.ValueType).ToList();

            if (!string.IsNullOrEmpty(customFieldValue.Value))
            {
                var index = listString.IndexOf(customFieldValue.Value);
                if (index > -1)
                {
                    listString[index] = customFieldValue.NewValue;
                }
            }
            var newDateTimeFieldValue = new Model.FieldDefinitions.DateTimeFieldValue
            {
                Name      = fieldValue.Name,
                Value     = DateTime.Parse(listString.First()),
                ValueType = FieldValueType.DateTime
            };

            fieldValue.Clear();
            fieldValue.Add(newDateTimeFieldValue);

            return(dateTimeFieldValue.PreviousValue != dateTimeFieldValue.Value);
        }
예제 #2
0
        private bool UpdateMultipleStringFieldValue(Model.FieldDefinitions.FieldValue fieldValue, CustomFieldValue customFieldValue)
        {
            if (!(fieldValue is Model.FieldDefinitions.MultipleStringFieldValue multipleStringFieldValue))
            {
                return(false);
            }

            if (multipleStringFieldValue.PreviousValues == null)
            {
                multipleStringFieldValue.PreviousValues = new HashSet <string>();
                foreach (var value in multipleStringFieldValue.Values)
                {
                    multipleStringFieldValue.PreviousValues.Add(value.Clone().ToString());
                }
            }

            var listString = _tmService.GetMultipleStringValues(fieldValue.GetValueString(), fieldValue.ValueType).ToList();

            if (!string.IsNullOrEmpty(customFieldValue.Value))
            {
                var index = listString.IndexOf(customFieldValue.Value);
                if (index > -1)
                {
                    listString[index] = customFieldValue.NewValue;
                }
            }

            var multiStrngFieldValue = new Model.FieldDefinitions.MultipleStringFieldValue
            {
                Name      = fieldValue.Name,
                Values    = new HashSet <string>(listString),
                ValueType = FieldValueType.MultipleString
            };

            fieldValue.Clear();
            fieldValue.Add(multiStrngFieldValue);

            var valueString         = ValuesToString(multipleStringFieldValue.Values);
            var previousValueString = ValuesToString(multipleStringFieldValue.PreviousValues);

            return(previousValueString != valueString);
        }
예제 #3
0
        private static bool UpdateSinglePicklistFieldValue(Model.FieldDefinitions.FieldValue fieldValue, CustomFieldValue customFieldValue)
        {
            if (!(fieldValue is Model.FieldDefinitions.SinglePicklistFieldValue singlePicklistFieldValue))
            {
                return(false);
            }

            if (!singlePicklistFieldValue.Value.Name.Equals(customFieldValue.Value))
            {
                return(false);
            }

            singlePicklistFieldValue.PreviousValue = new Model.FieldDefinitions.PicklistItem
            {
                Name         = singlePicklistFieldValue.Value.Name,
                ID           = singlePicklistFieldValue.Value.ID,
                PreviousName = singlePicklistFieldValue.Value.Name
            };

            singlePicklistFieldValue.Value.PreviousName = singlePicklistFieldValue.Value.Name;
            singlePicklistFieldValue.Value.Name         = customFieldValue.NewValue;

            var picklistFieldValue = new Model.FieldDefinitions.SinglePicklistFieldValue
            {
                ValueType = FieldValueType.SinglePicklist,
                Name      = fieldValue.Name,
                Value     = new Model.FieldDefinitions.PicklistItem(singlePicklistFieldValue.Value.Name)
                {
                    ID           = singlePicklistFieldValue.Value.ID,
                    PreviousName = singlePicklistFieldValue.Value.PreviousName
                }
            };

            fieldValue.Clear();
            fieldValue.Merge(picklistFieldValue);

            return(true);
        }
예제 #4
0
        private bool UpdateSingleStringFieldValue(Model.FieldDefinitions.FieldValue fieldValue, CustomFieldValue customFieldValue)
        {
            if (!(fieldValue is Model.FieldDefinitions.SingleStringFieldValue singleStringFieldValue))
            {
                return(false);
            }

            if (singleStringFieldValue.Value != customFieldValue.Value)
            {
                return(false);
            }

            singleStringFieldValue.PreviousValue = singleStringFieldValue.Value;

            var listString = _tmService.GetMultipleStringValues(fieldValue.GetValueString(), fieldValue.ValueType).ToList();

            if (!string.IsNullOrEmpty(customFieldValue.Value))
            {
                var index = listString.IndexOf(customFieldValue.Value);
                if (index > -1)
                {
                    listString[index] = customFieldValue.NewValue;
                }
            }

            var newSingleStringFieldValue = new Model.FieldDefinitions.SingleStringFieldValue
            {
                Name      = fieldValue.Name,
                Value     = listString.First(),
                ValueType = FieldValueType.SingleString
            };

            fieldValue.Clear();
            fieldValue.Merge(newSingleStringFieldValue);

            return(singleStringFieldValue.PreviousValue != singleStringFieldValue.Value);
        }
예제 #5
0
        private static bool UpdateMultiplePickListFieldValue(Model.FieldDefinitions.FieldValue fieldValue, CustomFieldValue customFieldValue)
        {
            if (!(fieldValue is Model.FieldDefinitions.MultiplePicklistFieldValue multiplePicklistFieldValue))
            {
                return(false);
            }

            var canUpdate = false;

            foreach (var picklistItem in multiplePicklistFieldValue.Values)
            {
                if (picklistItem.Name.Equals(customFieldValue.Value) && customFieldValue.NewValue != null)
                {
                    canUpdate = true;
                }
            }

            if (!canUpdate)
            {
                return(false);
            }

            multiplePicklistFieldValue.PreviousValues = new List <Model.FieldDefinitions.PicklistItem>();
            foreach (var picklistItem in multiplePicklistFieldValue.Values)
            {
                var pickListItemClone = new Model.FieldDefinitions.PicklistItem(picklistItem.Name)
                {
                    ID           = picklistItem.ID,
                    PreviousName = picklistItem.Name
                };
                multiplePicklistFieldValue.PreviousValues.Add(pickListItemClone);
            }

            var updated = false;
            var values  = new List <Model.FieldDefinitions.PicklistItem>();

            foreach (var picklistItem in multiplePicklistFieldValue.Values)
            {
                picklistItem.PreviousName = picklistItem.Name;
                if (picklistItem.Name.Equals(customFieldValue.Value) && customFieldValue.NewValue != null)
                {
                    updated           = true;
                    picklistItem.Name = customFieldValue.NewValue;
                }

                values.Add(new Model.FieldDefinitions.PicklistItem(picklistItem.Name)
                {
                    ID           = picklistItem.ID,
                    PreviousName = picklistItem.PreviousName
                });
            }

            var picklistFieldValue = new Model.FieldDefinitions.MultiplePicklistFieldValue
            {
                ValueType = FieldValueType.MultiplePicklist,
                Name      = fieldValue.Name,
                Values    = values
            };

            fieldValue.Clear();
            fieldValue.Merge(picklistFieldValue);

            return(updated);
        }