Beispiel #1
0
        public async Task Handle(AddGroupCommand command)
        {
            var bankTransaction = await groupAccess.GetBankTransactionById(command.BankTransactionId);

            if (bankTransaction == null)
            {
                throw new BankAnalizerException($"Bank transaction id {command.BankTransactionId} doesn't exist");
            }

            var group = command.RuleId == default ?
                        await groupAccess.GetGroupByName(command.GroupName, command.UserId) :
                        await groupAccess.GetGroupByNameAndRuleId(command.GroupName, command.RuleId, command.UserId);

            if (group == null)
            {
                group = new Group {
                    Name = command.GroupName
                };
                group.User = await groupAccess.GetUser(command.UserId);

                if (command.RuleId != default)
                {
                    group.Rule = new Rule {
                        Id = command.RuleId
                    }
                }
                ;
            }

            await groupAccess.AddBankTransactionToGroup(bankTransaction, group);

            _ = eventsBus.Publish(new GroupToTransactionAddedEvent(bankTransaction, group, command.UserId));
        }
    }
        public async Task Handle(RemoveGroupCommand command)
        {
            using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                var group = await groupAccess.GetGroupByName(command.GroupName, command.UserId);

                await groupAccess.RemoveBankTransactionsFromGroup(command.BankTransactionId, group.Id);

                await groupAccess.RemoveGroupIfBankTransactionsDoNotExist(group.Id);

                scope.Complete();
            }
        }