54 lines
2.0 KiB
C#
54 lines
2.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.Extensions.Logging;
|
|
using TOOHUCardAPI.Data.Repositories;
|
|
using TOOHUCardAPI.DTO;
|
|
|
|
namespace TOOHUCardAPI.Data.Services
|
|
{
|
|
public class GameConfigurationService
|
|
{
|
|
private readonly ILogger<GameConfigurationService> _logger;
|
|
private readonly CardRepository _cardRepository;
|
|
|
|
private readonly List<string> _cardBlacklist = new()
|
|
{
|
|
"_",
|
|
"BonusEgg"
|
|
};
|
|
|
|
public GameConfigurationService(ILogger<GameConfigurationService> logger, CardRepository cardRepository)
|
|
{
|
|
_logger = logger;
|
|
_cardRepository = cardRepository;
|
|
}
|
|
|
|
private List<DayOfWeek> OpenDaysOfWeek => new List<DayOfWeek> {DayOfWeek.Saturday, DayOfWeek.Sunday};
|
|
|
|
private bool IsOpenDay => OpenDaysOfWeek.Contains(DateTime.Today.DayOfWeek);
|
|
|
|
public async Task<GameConfigResponse> GetGameConfiguration()
|
|
{
|
|
var random = new Random(DateTime.Now.Date.GetHashCode());
|
|
var openDays = string.Join(", ", OpenDaysOfWeek.Select(i => i.ToString()));
|
|
GameConfigResponse response = new GameConfigResponse();
|
|
var cards = await _cardRepository.GetAllCards();
|
|
var validCards =
|
|
cards.Where(card => _cardBlacklist.Select(bl => !card.CardName.Contains(bl)).All(res => res))
|
|
.Select(card => card.CardName).Append("all");
|
|
var enumerable = validCards as string[] ?? validCards.ToArray();
|
|
var index = random.Next(0, enumerable.Length);
|
|
response.IsOpenDay = IsOpenDay ? 1 : 0;
|
|
response.OpenDayList = openDays;
|
|
response.LuckCard = enumerable.ElementAt(index);
|
|
response.GameMessage += $" Today's lucky card is {response.LuckCard}!";
|
|
if (IsOpenDay)
|
|
{
|
|
response.GameMessage += " Today is an open day!";
|
|
}
|
|
return response;
|
|
}
|
|
}
|
|
} |