lottery/Services/Games/GameService.cs
2024-02-02 17:36:06 +03:00

50 lines
1.5 KiB
C#

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<GameService> logger, INumbersService numbersService, ITicketService ticketService)
{
_numbersService = numbersService;
_ticketService = ticketService;
}
public async Task<List<(List<LotteryTicket> winTickets, int matches)>> GetWinnersTickets(byte[] winNumbers)
{
List<LotteryTicket> tickets = await _ticketService.GetAllTickets();
return CalculateWinners(tickets, winNumbers);
}
private List<(List<LotteryTicket> winTickets,int matches)> CalculateWinners(List<LotteryTicket> tickets, byte[] bytes)
{
List<(List<LotteryTicket> winTickets,int matches)> results = new();
for (int i = 0; i < bytes.Length; i++)
{
List<LotteryTicket> winners = new List<LotteryTicket>();
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);
}
}