private async Task <CommandResponse> ProcessLine(BlockFiRecord record, Guid userId) { RequestWithUserId <CommandResponse> CreateAward(BlockFiRecord r) { var s = new core.Cryptos.Handlers.Reward.Command { Date = r.ConfirmedAt, DollarAmount = 0, Quantity = r.Amount, Notes = r.Notes, Token = r.Cryptocurrency }; s.WithUserId(userId); return(s); } RequestWithUserId <CommandResponse> cmd = null; switch (record.TransactionType.ToLower()) { case "cc rewards redemption": cmd = CreateAward(record); break; case "interest payment": cmd = CreateAward(record); break; } try { if (cmd != null) { return(await _mediator.Send(cmd)); } else { return(CommandResponse.Success()); } } catch (Exception ex) { return(CommandResponse.Failed( $"Entry for {record.Cryptocurrency}/{record.TransactionType}/{record.ConfirmedAt.ToString("yyyy-MM-dd")} failed: {ex.Message}" )); } }
private async Task <CommandResponse> ProcessLine(CryptoRecord record, Guid userId) { RequestWithUserId <CommandResponse> CreateBuy(CryptoRecord r) { var b = new core.Cryptos.Handlers.Buy.Command { Date = record.Timestamp, DollarAmount = record.USDSubtotal.Value, Quantity = record.QuantityTransacted.Value, Token = record.Asset }; b.WithUserId(userId); return(b); } RequestWithUserId <CommandResponse> CreateSell(CryptoRecord r) { var s = new core.Cryptos.Handlers.Sell.Command { Date = record.Timestamp, DollarAmount = record.USDSubtotal.Value, Quantity = record.QuantityTransacted.Value, Token = record.Asset }; s.WithUserId(userId); return(s); } RequestWithUserId <CommandResponse> CreateAward(CryptoRecord r) { var s = new core.Cryptos.Handlers.Reward.Command { Date = record.Timestamp, DollarAmount = record.USDSubtotal.Value, Quantity = record.QuantityTransacted.Value, Notes = record.Notes, Token = record.Asset }; s.WithUserId(userId); return(s); } RequestWithUserId <CommandResponse> CreateYield(CryptoRecord r) { var s = new core.Cryptos.Handlers.Yield.Command { Date = record.Timestamp, DollarAmount = record.USDSubtotal.Value, Quantity = record.QuantityTransacted.Value, Notes = record.Notes, Token = record.Asset }; s.WithUserId(userId); return(s); } RequestWithUserId <CommandResponse> cmd = null; switch (record.TransactionType.ToLower()) { case "buy": cmd = CreateBuy(record); break; case "sell": cmd = CreateSell(record); break; case "coinbase earn": cmd = CreateAward(record); break; case "rewards income": cmd = CreateYield(record); break; } try { if (cmd != null) { return(await _mediator.Send(cmd)); } else { return(CommandResponse.Success()); } } catch (Exception ex) { return(CommandResponse.Failed( $"Entry for {record.Asset}/{record.TransactionType}/{record.Timestamp.ToString("yyyy-MM-dd")} failed: {ex.Message}" )); } }