private async Task <List <HandlerServiceResult> > ConfigureOperationType(CategoryTypeEnum type, User user) { HandlerServiceResult nextQuestion; var categories = await _categoryDocumentService.GetByUserIdAsync(user.Id); categories = categories.Where(c => c.Configured && c.Type == type).ToList(); if (categories.Count > 0) { var operation = new Operation { Configured = false, Id = _operationDocumentService.GenerateNewId() }; await _operationDocumentService.InsertAsync(operation); user.Context = new Context { OperationId = operation.Id, CategoryType = type, CurrentNode = _tree }; nextQuestion = await _questionService.BuildQuestion(user); } else { nextQuestion = _resultService.BuildOperationTypeCleanCategoryList(); } await _userDocumentService.UpdateAsync(user); return(new List <HandlerServiceResult> { nextQuestion }); }
private async Task <List <HandlerServiceResult> > ConfigureStatsAction(string answer, User user) { answer = answer.Trim(); if (string.IsNullOrEmpty(answer) || !answer.Equals("All categories") && !answer.Equals("Income only") && !answer.Equals("Expense only") && !answer.Equals("Custom category")) { return(new List <HandlerServiceResult> { _resultService.BuildStatsWrongArgumentErrorResult() }); } if (answer.Equals("All categories")) { user.Context = null; await _userDocumentService.UpdateAsync(user); return(await _statsService.BuildStatistics(user)); } if (answer.Equals("Income only")) { var categories = await _categoryDocumentService.GetByUserIdAsync(user.Id); categories = categories.Where(c => c.Configured && c.Type == CategoryTypeEnum.Income).ToList(); if (categories.Count == 0) { return(new List <HandlerServiceResult> { _resultService.BuildOperationTypeCleanCategoryList() }); } user.Context = null; await _userDocumentService.UpdateAsync(user); return(await _statsService.BuildStatistics(user, CategoryTypeEnum.Income)); } if (answer.Equals("Expense only")) { var categories = await _categoryDocumentService.GetByUserIdAsync(user.Id); categories = categories.Where(c => c.Configured && c.Type == CategoryTypeEnum.Expense).ToList(); if (categories.Count == 0) { return(new List <HandlerServiceResult> { _resultService.BuildOperationTypeCleanCategoryList() }); } user.Context = null; await _userDocumentService.UpdateAsync(user); return(await _statsService.BuildStatistics(user, CategoryTypeEnum.Expense)); } user.Context.CurrentNode = user.Context.CurrentNode.Children.FirstOrDefault(); await _userDocumentService.UpdateAsync(user); return(new List <HandlerServiceResult> { await _questionService.BuildQuestion(user) }); }