public async Task RemoveAndRefundAllRequests()
        {
            var currentRequests = _getCurrentRequestsRepository.GetCurrentRequests();

            if (currentRequests == null)
            {
                return;
            }

            var refundVips = currentRequests?.VipRequests?.Where(sr => sr.IsSuperVip || sr.IsVip).Select(sr =>
                                                                                                         new VipRefund
            {
                Username     = sr.Username,
                VipsToRefund = sr.IsSuperVip ? _configService.Get <int>("SuperVipCost") :
                               sr.IsVip ? 1 :
                               0
            }).ToList() ?? new List <VipRefund>();

            _refundVipCommand.Refund(refundVips);

            foreach (var refund in refundVips)
            {
                await _vipService.UpdateClientVips(refund.Username).ConfigureAwait(false);
            }

            _clearRequestsRepository.ClearRequests(currentRequests.RegularRequests);
            _clearRequestsRepository.ClearRequests(currentRequests.VipRequests);
        }
Esempio n. 2
0
        public async Task <bool> RefundVip(string username, bool deferSave = false)
        {
            try
            {
                _refundVipCommand.Refund(new VipRefund
                {
                    Username     = username,
                    VipsToRefund = 1
                });

                await UpdateClientVips(username).ConfigureAwait(false);

                return(true);
            }
            catch (Exception e)
            {
                _logger.LogError(e, $"Error when refunding Vip token. username: {username}, defersave: {deferSave}");
                return(false);
            }
        }
Esempio n. 3
0
        public async Task ArchiveRequest(int requestId, bool refundVip)
        {
            var username = _archiveRequestRepository.ArchiveRequest(requestId);

            if (refundVip)
            {
                var request = _getSongRequestByIdQuery.GetSongRequestById(requestId);
                if (request.isVip || request.isSuperVip)
                {
                    _refundVipCommand.Refund(new VipRefund
                    {
                        Username     = request.songRequester,
                        VipsToRefund = request.isVip ? 1 : _configService.Get <int>("SuperVipCost")
                    });
                }
            }

            await _vipService.UpdateClientVips(username).ConfigureAwait(false);
        }