Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 public PerformUpdateMessage(SMSMessage smsMessage)
 {
     this.SmsMessage = smsMessage;
 }