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