2026-03-30 21:51:43 +01:00

54 lines
1.4 KiB
C#

using CatherineLynwood.Models;
namespace CatherineLynwood.Services
{
public interface IAccessCodeService
{
#region Public Methods
Task<(int pageNumber, int wordIndex)> GetCurrentChallengeAsync();
Task<(int accessLevel, int highestBook)> ValidateWordAsync(string userWord);
#endregion Public Methods
}
public class AccessCodeService : IAccessCodeService
{
#region Private Fields
private readonly List<AccessCode> _accessCodes;
#endregion Private Fields
#region Public Constructors
public AccessCodeService(DataAccess dataAccess)
{
_accessCodes = dataAccess.GetAccessCodes();
}
#endregion Public Constructors
#region Public Methods
public Task<(int pageNumber, int wordIndex)> GetCurrentChallengeAsync()
{
var challenge = _accessCodes.First(); // current prompt
return Task.FromResult((challenge.PageNumber, challenge.WordIndex));
}
public Task<(int accessLevel, int highestBook)> ValidateWordAsync(string userWord)
{
var match = _accessCodes.FirstOrDefault(c =>
c.ExpectedWord.Equals(userWord, StringComparison.OrdinalIgnoreCase));
if (match != null)
return Task.FromResult((match.AccessLevel, match.BookID));
return Task.FromResult((0, 0));
}
#endregion Public Methods
}
}