Пример #1
0
        private async Task DoProlongationPaymentAsync(ProlongationPayment payment)
        {
            var user = await users.Find(_ => _.Id == payment.UserId).FirstOrDefaultAsync();

            if (user != null)
            {
                TimeSpan?period = null;

                switch (payment.Type.ToLower())
                {
                case "hour":
                    period = new TimeSpan(1, 5, 0);
                    break;

                case "day":
                    period = new TimeSpan(1, 1, 0, 0);
                    break;

                case "week":
                    period = new TimeSpan(7, 1, 0, 0);
                    break;

                case "month":
                    period = new TimeSpan(32, 0, 0, 0);
                    break;
                }

                if (period.HasValue)
                {
                    if (user.Balance == null)
                    {
                        user.Balance = new UserBalance();
                    }

                    if (user.Balance.Pays == null)
                    {
                        user.Balance.Pays = new List <UserPay>();
                    }

                    if (user.Balance.ServiceExpired < DateTime.Now)
                    {
                        user.Balance.ServiceExpired = DateTime.Now;
                    }

                    user.Balance.ServiceExpired = user.Balance.ServiceExpired.Add(period.Value);
                    user.Balance.Pays.Add(new UserPay {
                        Amount = payment.Amount, Type = payment.Type, Description = payment.Description
                    });

                    var filter = Builders <T> .Filter.Eq(_ => _.Id, user.Id);

                    var update = Builders <T> .Update.Set(_ => _.Balance, user.Balance);

                    await users.UpdateOneAsync(filter, update);

                    logger.Info($"UsersService: added payment for {user.Id} with amount {payment.Amount} and type {payment.Type}");
                }
                else
                {
                    logger.Error($"UsersService: unknown type {payment.Amount} on payment");
                }
            }
            else
            {
                logger.Error($"UsersService: unknown userid {payment.UserId} on payment");
            }
        }
Пример #2
0
 private void DoProlongationPayment(ProlongationPayment payment)
 {
     Task.Run(async() => await DoProlongationPaymentAsync(payment)).GetAwaiter().GetResult();
 }