Добавьте файлы проекта.

This commit is contained in:
Yevgeniy Ulyantsev
2024-02-02 17:36:06 +03:00
parent e787cd8afd
commit f034e41c07
27 changed files with 495 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Services.Tickets.Extentions;
namespace Services.Games.Extentions;
public static class ServiceCollectionExtentions
{
public static void TyAddGamesService(this IServiceCollection services)
{
services.TyAddTicketService();
services.TryAddScoped<IGameService, GameService>();
}
}

View File

@@ -0,0 +1,49 @@
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);
}
}

View File

@@ -0,0 +1,9 @@
using Services.Tickets.Models;
namespace Services.Games;
public interface IGameService
{
byte[] GetWinNumbers();
Task<List<(List<LotteryTicket> winTickets, int matches)>> GetWinnersTickets(byte[] winNumbers);
}