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 _logger; private readonly CardRepository _cardRepository; private readonly List _cardBlacklist = new() { "_", "BonusEgg" }; public GameConfigurationService(ILogger logger, CardRepository cardRepository) { _logger = logger; _cardRepository = cardRepository; } private List OpenDaysOfWeek => new List {DayOfWeek.Saturday, DayOfWeek.Sunday}; private bool IsOpenDay => OpenDaysOfWeek.Contains(DateTime.Today.DayOfWeek); public async Task 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; } } }