Ejemplo n.º 1
0
        /// <summary>
        /// Adds new Intro,Reason and available at
        /// </summary>
        /// <param name="part">The part of the answer</param>
        /// <param name="id">The id of the answer</param>
        /// <param name="value">The value of the answer</param>
        public void Update(AnswerPart part, string id, string value)
        {
            switch (part)
            {
            case AnswerPart.Intro:
                var intro = intros.FindAll(it => it.Id == id);
                if (intro.Count == 0)
                {
                    throw new AnswerPartNotFoundException();
                }
                intros.Remove(intro.First());
                intros.Add(new Intro(id, value));
                break;

            case AnswerPart.Reason:
                var reason = reasons.FindAll(it => it.Id == id);
                if (reason.Count == 0)
                {
                    throw new AnswerPartNotFoundException();
                }
                reasons.Remove(reason.First());
                reasons.Add(new Reason(id, value));
                break;

            case AnswerPart.AvailableAt:
                var availableAt = availableAts.FindAll(it => it.Id == id);
                if (availableAt.Count == 0)
                {
                    throw new AnswerPartNotFoundException();
                }
                availableAts.Remove(availableAt.First());
                availableAts.Add(new AvailableAt(id, value));
                break;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Gets a specified answer(if there is a new part added it prints it,the others remain default)
        /// </summary>
        /// <param name="part">The part of the answer</param>
        /// <param name="word">The word</param>
        /// <returns></returns>
        public Answer GetSpecificAnswer(AnswerPart part, string word)
        {
            var defaultAnswer = GetAnswer();

            switch (part)
            {
            case AnswerPart.Intro:
                var intro = intros.FindAll(it => it.Value.Contains(word));
                if (intro.Count == 0)
                {
                    return(defaultAnswer);
                }
                else
                {
                    return(new Answer(intro.First().Value, defaultAnswer.Reason, defaultAnswer.AvailableAt));
                }

            case AnswerPart.Reason:
                var reason = reasons.FindAll(it => it.Value.Contains(word));
                if (reason.Count == 0)
                {
                    return(defaultAnswer);
                }
                else
                {
                    return(new Answer(defaultAnswer.Intro, reason.First().Value, defaultAnswer.AvailableAt));
                }

            case AnswerPart.AvailableAt:
                var availableAt = availableAts.FindAll(it => it.Value.Contains(word));
                if (availableAt.Count == 0)
                {
                    return(defaultAnswer);
                }
                else
                {
                    return(new Answer(defaultAnswer.Intro, defaultAnswer.Reason, availableAt.First().Value));
                }

            default:
                return(defaultAnswer);
            }
        }