private Task ProcessMessageAsync(CashInEvent message) { var fees = message.CashIn.Fees; var fee = fees?.FirstOrDefault()?.Transfer; var @event = new CashInProcessedEvent { OperationId = Guid.Parse(message.Header.RequestId), RequestId = Guid.Parse(message.Header.MessageId), WalletId = Guid.Parse(message.CashIn.WalletId), Volume = decimal.Parse(message.CashIn.Volume), AssetId = message.CashIn.AssetId, Timestamp = message.Header.Timestamp, FeeSize = ParseNullabe(fee?.Volume) }; _cqrsEngine.PublishEvent(@event, BoundedContext.Name); if (fees != null) { var feeEvent = new FeeChargedEvent { OperationId = message.Header.MessageId, OperationType = FeeOperationType.CashInOut, Fee = fees.Where(x => x.Transfer != null).Select(x => x.Transfer).ToJson() }; _cqrsEngine.PublishEvent(feeEvent, BoundedContext.Name); } return(Task.CompletedTask); }
private async Task ProcessMessageAsync(CashInEvent message) { var fees = message.CashIn.Fees; var fee = fees?.FirstOrDefault()?.Transfer; var @event = new CashInProcessedEvent { OperationId = Guid.Parse(message.Header.RequestId), RequestId = Guid.Parse(message.Header.MessageId), WalletId = Guid.Parse(message.CashIn.WalletId), Volume = decimal.Parse(message.CashIn.Volume), AssetId = message.CashIn.AssetId, Timestamp = message.Header.Timestamp, FeeSize = ParseNullabe(fee?.Volume) }; _cqrsEngine.PublishEvent(@event, BoundedContext.Name); if (fees != null) { var feeEvent = new FeeChargedEvent { OperationId = message.Header.MessageId, OperationType = FeeOperationType.CashInOut, Fee = fees.Where(x => x.Transfer != null).Select(x => x.Transfer).ToJson() }; _cqrsEngine.PublishEvent(feeEvent, BoundedContext.Name); } await _lykkeMailerliteClient.Customers.UpdateDepositAsync(new UpdateCustomerDepositRequest { CustomerId = message.CashIn.WalletId, RequestId = Guid.NewGuid().ToString(), Timestamp = message.Header.Timestamp.ToTimestamp() }); }
public async Task <CommandHandlingResult> Handle(CashInProcessedEvent @event) { var entity = Mapper.Map <Cashin>(@event); if (!await _historyRecordsRepository.TryInsertAsync(entity)) { _logger.Warning($"Skipped duplicated cashin record", context: new { id = @event.OperationId }); } return(CommandHandlingResult.Ok()); }
private CashInProcessedEvent CreateCashinRecord() { var cqrs = _container.Resolve <ICqrsEngine>(); var id = Guid.NewGuid(); var clientId = Guid.NewGuid(); var volume = 54.31M; var @event = new CashInProcessedEvent { OperationId = id, WalletId = clientId, Volume = volume, AssetId = "EUR", Timestamp = DateTime.UtcNow, FeeSize = 10 }; cqrs.PublishEvent(@event, PostProcessingBoundedContext.Name); return(@event); }