private async Task <List <HandlerServiceResult> > ConfigureCategoryDelete(string answer, User user)
        {
            answer = answer.Trim();

            List <HandlerServiceResult> result;

            var categories = await _categoryDocumentService.GetByUserIdAsync(user.Id);

            var categoryToDelete = categories.FirstOrDefault(c => c.Name.Equals(answer));

            if (categoryToDelete != null)
            {
                await _categoryDocumentService.DeleteAsync(categoryToDelete.Id);

                result = new List <HandlerServiceResult> {
                    _resultService.BuildCategoryDeletedResult()
                };
            }
            else
            {
                result = new List <HandlerServiceResult> {
                    _resultService.BuildCategoryNotFoundErrorResult()
                };
            }

            user.Context.CurrentNode = null;

            user.Context.CategoryId = null;

            await _userDocumentService.UpdateAsync(user);

            return(result);
        }
        public async Task <List <HandlerServiceResult> > Handle(Message message)
        {
            var user = await _userDocumentService.GetByChatId(message.UserInfo.ChatId);

            if (user.Context?.CategoryId != null)
            {
                var category = await _categoryDocumentService.GetByIdAsync(user.Context.CategoryId);

                if (!category.Configured)
                {
                    await _categoryDocumentService.DeleteAsync(user.Context.CategoryId);
                }
            }
            if (user.Context?.OperationId != null)
            {
                var operation = await _operationDocumentService.GetByIdAsync(user.Context.OperationId);

                if (!operation.Configured)
                {
                    await _operationDocumentService.DeleteAsync(user.Context.OperationId);
                }
            }

            if (user.Context == null)
            {
                user.Context = new Context();
            }

            user.Context.CurrentNode = null;
            user.Context.CategoryId  = null;
            user.Context.OperationId = null;

            await _userDocumentService.UpdateAsync(user);

            return(new List <HandlerServiceResult>
            {
                new HandlerServiceResult
                {
                    Message = "Command cancelled.",
                    StatusCode = StatusCodeEnum.Ok
                }
            });
        }