using Microsoft.Extensions.Logging; using Services.Numbers; using Services.Tickets; using Services.Tickets.Models; using System.Net.Sockets; namespace Services.Games; internal class GameService : IGameService { private readonly INumbersService _numbersService; private readonly ITicketService _ticketService; public GameService(ILogger logger, INumbersService numbersService, ITicketService ticketService) { _numbersService = numbersService; _ticketService = ticketService; } public async Task winTickets, int matches)>> GetWinnersTickets(byte[] winNumbers) { List tickets = await _ticketService.GetAllTickets(); return CalculateWinners(tickets, winNumbers); } private List<(List winTickets,int matches)> CalculateWinners(List tickets, byte[] bytes) { List<(List winTickets,int matches)> results = new(); for (int i = 0; i < bytes.Length; i++) { List winners = new List(); for (int j = 0; j < tickets.Count; j++) { if (bytes.Except(tickets[j].Numbers!).Count() == i) { winners.Add(tickets[j]); tickets.RemoveAt(j); } } results.Add((winners, bytes.Length - i)); } return results; } public byte[] GetWinNumbers() { return _numbersService.GetNumbers(6); } }