/// <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); }