public ChangeNote CreateChangeNote(Question question, string originalValue, string newValue, string changeReason)
        {
            var changeNote = new ChangeNote {
                Question     = question,
                ChangeReason = changeReason,
                ChangeDate   = DateTime.UtcNow
            };

            switch (question.DataType)
            {
            case QuestionDataType.Date:
            case QuestionDataType.Time:
                DateTime newDate;
                if (
                    !DateTime.TryParse(newValue, CultureInfo.InvariantCulture,
                                       DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out newDate))
                {
                    return(null);
                }
                DateTime originalDate;
                if (
                    !DateTime.TryParse(originalValue, CultureInfo.InvariantCulture,
                                       DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out originalDate))
                {
                    return(null);
                }

                changeNote.NewValue      = newDate.ToString(CultureInfo.InvariantCulture);
                changeNote.OriginalValue = originalDate.ToString(CultureInfo.InvariantCulture);
                break;

            case QuestionDataType.String:
                changeNote.NewValue      = newValue;
                changeNote.OriginalValue = originalValue;
                break;

            case QuestionDataType.Integer:
            case QuestionDataType.Enum:
                int newInt;
                if (!int.TryParse(newValue, NumberStyles.Integer, CultureInfo.InvariantCulture, out newInt))
                {
                    return(null);
                }
                int originalInt;
                if (!int.TryParse(originalValue, NumberStyles.Integer, CultureInfo.InvariantCulture, out originalInt))
                {
                    return(null);
                }

                changeNote.NewValue      = newInt.ToString(CultureInfo.InvariantCulture);
                changeNote.OriginalValue = originalInt.ToString(CultureInfo.InvariantCulture);
                break;

            case QuestionDataType.Number:
                decimal newNumber;
                if (!decimal.TryParse(newValue, NumberStyles.Number, CultureInfo.InvariantCulture, out newNumber))
                {
                    return(null);
                }
                decimal originalNumber;
                if (!decimal.TryParse(originalValue, NumberStyles.Number, CultureInfo.InvariantCulture, out originalNumber))
                {
                    return(null);
                }

                changeNote.NewValue      = newNumber.ToString(CultureInfo.InvariantCulture);
                changeNote.OriginalValue = originalNumber.ToString(CultureInfo.InvariantCulture);
                break;
            }
            changeNoteRepository.Add(changeNote);
            changeNoteRepository.Save();

            question.ChangeNotes.Add(changeNote);

            return(changeNote);
        }