Files
API/TOOHUCardAPI/Data/Services/GameConfigurationService.cs

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;
}
}
}