54 lines
1.4 KiB
C#
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
|
|
}
|
|
} |