public async Task HandleAsync(SellOrderCreatedEvent message) { var pm = await _processManagerRepository.FindAsync(message.AggregateId); if (pm != null) { throw new StocqresException("Process Manager for this Order currently exist"); } var orderProcessManager = new SellOrderProcessManager(message.AggregateId); orderProcessManager.When(message); await _processManagerRepository.Save(orderProcessManager); }
public async Task Save(SellOrderProcessManager processManager) { processManager.UpdateModifiedDate(); var pm = await FindAsync(processManager.AggregateId); if (pm == null) { await Add(processManager); } else { await Update(processManager); } await HandleCommands(processManager); }
private async Task Add(SellOrderProcessManager processManager) { await _connection.ExecuteAsync( $@"INSERT INTO Transactions.{nameof(SellOrderProcessManager)}(Id, AggregateId, WalletId, CompanyId, StockCode, StockQuantity, CancelReason, State, CreatedAt, ModifiedAt) VALUES(@Id, @AggregateId, @WalletId, @CompanyId, @StockCode, @StockQuantity, @CancelReason, @State, @CreatedAt, @ModifiedAt)", new { Id = Guid.NewGuid(), AggregateId = processManager.AggregateId, WalletId = processManager.WalletId, CompanyId = processManager.CompanyId, StockCode = processManager.StockCode, StockQuantity = processManager.StockQuantity, CancelReason = processManager.CancelReason, State = processManager.State, CreatedAt = processManager.CreatedAt, ModifiedAt = processManager.ModifiedAt }, _transaction); }
private async Task Update(SellOrderProcessManager processManager) { await _connection.ExecuteAsync($@"UPDATE Transactions.{nameof(SellOrderProcessManager)} SET WalletId = @WalletId, CompanyId = @CompanyId, StockCode = @StockCode, StockQuantity = @StockQuantity, CancelReason = @CancelReason, State = @State, ModifiedAt = @ModifiedAt WHERE AggregateId = @AggregateId", new { WalletId = processManager.WalletId, CompanyId = processManager.CompanyId, StockCode = processManager.StockCode, StockQuantity = processManager.StockQuantity, CancelReason = processManager.CancelReason, State = processManager.State, ModifiedAt = processManager.ModifiedAt, AggregateId = processManager.AggregateId }, _transaction); }