Esempio n. 1
0
        private async Task <GoldExpense> TryExpendGoldInternal(GoldExpense expense, bool saveChanges = true)
        {
            var character = await _characterRepo.GetCharacterSimpleAsync(expense.CharacterId);

            if (character == null)
            {
                expense.Result = GoldExpenseResult.CharacterNotFound;
            }
            else
            {
                if (expense.ExpenseRequested < 0)
                {
                    expense.Result = GoldExpenseResult.BadRequest;
                }
                else if (character.Gold < expense.ExpenseRequested)
                {
                    expense.Result = GoldExpenseResult.NotEnoughResources;
                }
                else
                {
                    expense.Result  = GoldExpenseResult.Authorized;
                    character.Gold -= expense.ExpenseRequested;

                    if (saveChanges)
                    {
                        await _characterRepo.SaveChangesAsync();
                    }
                }

                expense.RemainingGold = character.Gold;
            }

            return(expense);
        }
Esempio n. 2
0
        public async Task <GoldExpenseResponseDTO> TryExpendGold(GoldExpenseRequestDTO expenseRequest)
        {
            var expense = new GoldExpense(expenseRequest);

            expense = await TryExpendGoldInternal(expense);

            return(_mapper.Map <GoldExpenseResponseDTO>(expense));
        }