public DataBlock CreateBlockFromSmsMessage(SMSMessage smsMessage, Commands command, int amount) { List <DataBlock> bc = new List <DataBlock>(); bc = Blocks.ContainsKey(smsMessage.From) ? Blocks[smsMessage.From] : new List <DataBlock>(); DataBlock newBlock; var isNewBlock = bc == null || bc.Count == 0; var lastBlock = isNewBlock ? new DataBlock(0, 100, "", "", DateTime.UtcNow.Ticks, new BlockTransaction(0, DefaultCreditScore)) : bc.OrderByDescending(x => x.Index).ToList().First(); var previousAmount = lastBlock.Transaction.Amount; var previousScore = lastBlock.Transaction.CreditScore; var periodOfLendingInSec = (int)(DateTime.UtcNow - lastBlock.Transaction.DateTime).TotalSeconds; switch (command) { case Commands.BORROW: newBlock = BlockProcessorActor.CreateNewBlock(bc, new BlockTransaction(amount + previousAmount, previousScore - 15)); break; case Commands.PAYBACK: newBlock = BlockProcessorActor.CreateNewBlock(bc, new BlockTransaction(previousAmount - amount, previousScore - periodOfLendingInSec + 15)); break; default: throw new ArgumentOutOfRangeException(nameof(command), command, null); } return(newBlock); }
public PerformUpdateMessage(SMSMessage smsMessage) { this.SmsMessage = smsMessage; }