diff --git a/AccessQueueService/Data/TakeANumberAccessQueueRepo.cs b/AccessQueueService/Data/TakeANumberAccessQueueRepo.cs index f05c660..5b35204 100644 --- a/AccessQueueService/Data/TakeANumberAccessQueueRepo.cs +++ b/AccessQueueService/Data/TakeANumberAccessQueueRepo.cs @@ -104,5 +104,20 @@ namespace AccessQueueService.Data } return _accessTickets.Remove(userId); } + + public void Optimize() + { + DeleteExpiredTickets(); + + var newQueue = new Dictionary(); + var newQueueNumbers = new Dictionary(); + ulong newIndex = 0; + for (ulong i = _nowServing; i < _nextUnusedTicket; i++) + { + var user = _accessQueue[i]; + newQueue[newIndex] = user; + newQueueNumbers[user.UserId] = newIndex; + } + } } }