/// <summary>
        /// Save chore workflow
        /// </summary>
        /// <param name="choreWorkflow">Chore workflow</param>
        public void SaveChoreWorkflow(ChoreWorkflow choreWorkflow)
        {
            choreWorkflow.WorkflowStatus = WorkflowStatus.Completed;
            Repository.Update(choreWorkflow);

            // Add new chore from chore work flow via sms
            var chore = new Chore
            {
                ChoreStatus    = ChoreStatus.Active,
                CreatedTime    = DateTime.UtcNow,
                DueDate        = choreWorkflow.DueDate,
                FamilyMemberID = choreWorkflow.ChildMemberID,
                FrequencyRange = choreWorkflow.FrequencyRange,
                FrequencyType  = choreWorkflow.FrequencyType.Value,
                Name           = choreWorkflow.Name.FirstCharToUpper(),
                Value          = choreWorkflow.Value.Value
            };

            chore = _choreService.Add(chore, choreWorkflow.ChildMember.User.FamilyID, DateTime.Now.DayOfWeek);
            if (chore.FrequencyType != FrequencyType.Once)
            {
                _recurringChoreService.UpdateRecurringChore(chore.Id, chore.FrequencyType, choreWorkflow.ChildMember.User.FamilyID, DateTime.Now.DayOfWeek);
            }
        }
        /// <summary>
        /// Add chore workflow
        /// </summary>
        /// <param name="familyMember">family member</param>
        /// <param name="messageBody">child name</param>
        /// <returns>Result message</returns>
        private string AddChoreWorkflow(FamilyMember familyMember, string messageBody, SmsCommandType commandType)
        {
            var           replyMessage       = string.Empty;
            FamilyMember  childMember        = null;
            ChoreWorkflow choreWorkflow      = null;
            var           choreWorkflowQuery = Repository.Table <ChoreWorkflow>().Include(m => m.ChildMember).Include(m => m.ChildMember.User)
                                               .Where(m => m.FamilyMemberID == familyMember.Id && m.WorkflowStatus == WorkflowStatus.Active);

            if (commandType == SmsCommandType.AddChore)
            {
                choreWorkflowQuery = choreWorkflowQuery.Where(m => m.ChildMember.Firstname.ToLower() == messageBody);
            }

            if (commandType == SmsCommandType.AddChore)
            {
                childMember = _familyService.GetMember(familyMember.User.FamilyID, messageBody, MemberType.Child);
                if (childMember == null)
                {
                    return("Child not found");
                }

                choreWorkflow = new ChoreWorkflow
                {
                    FamilyMemberID = familyMember.Id,
                    ChildMemberID  = childMember.Id
                };
                Repository.Insert(choreWorkflow);
                return("What chore would you like?");
            }

            choreWorkflow = choreWorkflowQuery.OrderByDescending(m => m.Id).FirstOrDefault();
            if (choreWorkflow == null)
            {
                return(_errMsg);
            }


            if (string.IsNullOrEmpty(choreWorkflow.Name))
            {
                choreWorkflow.Name = messageBody;
                replyMessage       = "Chore value?";
            }
            else if (!choreWorkflow.Value.HasValue)
            {
                var choreValue = decimal.Zero;
                if (!decimal.TryParse(messageBody.Replace("$", ""), out choreValue))
                {
                    return(_errMsg);
                }

                choreWorkflow.Value = choreValue;
                replyMessage        = string.Format("On which frequency should {0} do this?. Text back 'Once', 'Daily' or 'Weekly'", choreWorkflow.ChildMember.Firstname);
            }
            else if (!choreWorkflow.FrequencyType.HasValue)
            {
                choreWorkflow.FrequencyType = messageBody.FirstCharToUpper().ToEnum(FrequencyType.Daily);
                replyMessage = string.Format("When should {0} do this?", choreWorkflow.ChildMember.Firstname);
            }
            else if (string.IsNullOrEmpty(choreWorkflow.FrequencyRange))
            {
                choreWorkflow.FrequencyRange = messageBody.ConvertToDayFullName();
                if (choreWorkflow.FrequencyType.Value == FrequencyType.Once)
                {
                    choreWorkflow.DueDate = GetNextDateByDayName(choreWorkflow.FrequencyRange);
                }

                SaveChoreWorkflow(choreWorkflow);
                replyMessage = string.Format("Thanks! I've added that chore to {0}.", choreWorkflow.ChildMember.Firstname);
            }
            else
            {
                return(_errMsg);
            }

            Repository.Update(choreWorkflow);
            return(replyMessage);
        }