Добавьте файлы проекта.
This commit is contained in:
14
Services/Games/Extentions/ServiceCollectionExtentions.cs
Normal file
14
Services/Games/Extentions/ServiceCollectionExtentions.cs
Normal 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>();
|
||||
}
|
||||
}
|
||||
49
Services/Games/GameService.cs
Normal file
49
Services/Games/GameService.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
9
Services/Games/IGameService.cs
Normal file
9
Services/Games/IGameService.cs
Normal 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);
|
||||
}
|
||||
Reference in New Issue
Block a user