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);
        }
示例#2
0
        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);
        }
示例#3
0
 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);
 }
示例#4
0
 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);
 }