コード例 #1
0
        public async Task <bool> UpdateGoalSubscriberAmount(int userId, int userGoalId, int completedAmountIncrement, int moneyAmountSaved, int?savingTransferAmount)
        {
            var subscriber = await _goalSubscriberRepository.Get(userId, userGoalId);

            if (subscriber != null && completedAmountIncrement > 0)
            {
                subscriber.CompletedAmount += completedAmountIncrement;
                // for now update only completed amount
                //subscriber.MoneyAmountSaved = moneyAmountSaved;
                //subscriber.SavingTransferAmount = savingTransferAmount;

                await _goalSubscriberRepository.Update(subscriber.Id, subscriber);

                string eventMessage = $"{subscriber.Subscriber.Name} increased goal by {completedAmountIncrement}";
                await _eventService.AddEventToAllUserSubscribers(subscriber.UserGoalId, eventMessage);

                if (subscriber.SavingTransferAmount.HasValue)
                {
                    await _bankingService.TransferToSavingsAccount(userId, subscriber.SavingTransferAmount.Value);
                }

                return(true);
            }
            else
            {
                return(false);
            }
        }