public async Task <IEnumerable <TransactionCategoryRow> > Query(Guid userId, TransactionSearchFilter filter) { var resolver = new Resolver(await categoryTreeFactory.Create(userId)); return((await queryBuilder.Query(userId, filter)) .Select(t => Create(t, resolver.GetCategories(t.Categories)))); }
public async Task <TransactionCategoryRow> Get(Guid transactionId, Guid userId) { var transaction = await transactionRepository.Find(transactionId); var transactionRow = transactionFactory.Create(transaction); var resolver = new Resolver(await categoryTreeFactory.Create(userId)); return(new TransactionCategoryRow(transactionRow, resolver.GetCategories(transactionRow.Categories))); }
public async Task Handle(RemoveCategory notification, CancellationToken cancellationToken) { if (notification.RemoveChildren == false) { return; } var tree = await treeFactory.Create(notification.UserId); var toDelete = tree.SubTree(notification.Id).Select(c => c.Id).ToList(); categoryRepository.Remove(toDelete); await categoryRepository.Save(); }
public async Task Handle(RemoveCategory notification, CancellationToken cancellationToken) { if (notification.RemoveChildren) { return; } var tree = await treeFactory.Create(notification.UserId); var node = tree[notification.Id]; foreach (var child in node.Children) { await mediator.Send(new UpdateCategory(child.Id, node.ParentId, child.Name, child.Color)); } categoryRepository.Remove(new List <Guid>() { node.Id }); }
public async Task <CategoryNode> Handle(ListCategories message, CancellationToken cancellationToken) { var tree = await treeFactory.Create(message.UserId); return(tree.Root); }