Ejemplo n.º 1
0
        public async Task <Purse> CreatePurse(Guid userId)
        {
            var purse = new Purse {
                UserId = userId
            };
            await _dbContext.Purses.AddAsync(purse);

            await _dbContext.SaveChangesAsync();

            return(purse);
        }
Ejemplo n.º 2
0
        public async Task Run()
        {
            var transactionsToProcess = await _purseAppDbContext.Transactions
                                        .Where(s => s.Status == TransactionStatus.Created).ToListAsync();

            foreach (var transaction in transactionsToProcess)
            {
                try
                {
                    await TransferMoney(transaction.AccountSourceId, transaction.AccountDestinationId,
                                        transaction.Amount);

                    transaction.Status = TransactionStatus.Successed;
                }
                catch (Exception)
                {
                    transaction.Status = TransactionStatus.Failed;
                    throw;
                }
                finally
                {
                    await _purseAppDbContext.SaveChangesAsync();
                }
            }
        }
Ejemplo n.º 3
0
        public async Task <Account> CreateAccount(Guid purseId, Currency currency, string name)
        {
            if (await _dbContext.Accounts.AnyAsync(s => s.PurseId == purseId && s.Currency.CurrencyId == currency.CurrencyId))
            {
                throw new Exception("Счет с такой валютой уже существует");
            }
            var account = new Account {
                PurseId = purseId, Currency = currency, Name = name
            };

            await _dbContext.Accounts.AddAsync(account);

            await _dbContext.SaveChangesAsync();

            return(account);
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> TransferMoney(Guid accountIdSource, [FromQuery] Guid accountIdDest, [FromQuery] decimal amount)
        {
            var transaction = new Transaction
            {
                AccountSourceId      = accountIdSource,
                AccountDestinationId = accountIdDest,
                Amount = amount
            };
            await _dbContext.Transactions.AddAsync(transaction);

            await _dbContext.SaveChangesAsync();

            return(Ok());
        }
Ejemplo n.º 5
0
        public async Task CreateCurrency(string name)
        {
            await _dbContext.Currencies.AddAsync(new Currency { Name = name });

            await _dbContext.SaveChangesAsync();
        }