Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
182 changes: 182 additions & 0 deletions SwipeWords/.idea/.idea.SwipeWords.dir/.idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

27 changes: 13 additions & 14 deletions SwipeWords/Controllers/FlashcardsController.cs
Original file line number Diff line number Diff line change
@@ -1,19 +1,22 @@
using Microsoft.AspNetCore.Mvc;
using SwipeWords.Data;
using SwipeWords.Models;
using SwipeWords.Services;

namespace SwipeWords.Controllers;

[ApiController]
[Route("api/[controller]")]
public class FlashcardsController : ControllerBase
{
private readonly FlashcardGameDatabaseContext _context;
private readonly FlashcardService _flashcardService;
private readonly FlashcardGameDatabaseContext _dbContext;
private readonly ILogger<FlashcardsController> _logger;

public FlashcardsController(FlashcardGameDatabaseContext context, ILogger<FlashcardsController> logger)
public FlashcardsController(FlashcardService flashcardService, FlashcardGameDatabaseContext dbContext, ILogger<FlashcardsController> logger)
{
_context = context;
_dbContext = dbContext;
_flashcardService = flashcardService;
_logger = logger;
}

Expand All @@ -23,11 +26,9 @@ public async Task<IActionResult> GetFlashcards(int wordCount = 5)
{
try
{
var apiService = new ExternalApiService();
var flashcard = new Flashcard();
await flashcard.InitializeAsync(_context, apiService, wordCount);
var mixedWords = flashcard.GetMixedWords();
return Ok(new { flashcardId = flashcard.Id, mixedWords });
await _flashcardService.InitializeAsync(wordCount);
var mixedWords = _flashcardService.GetMixedWords();
return Ok(new { flashcardId = _flashcardService.Id, mixedWords });
}
catch (Exception ex)
{
Expand All @@ -42,16 +43,14 @@ public IActionResult CalculateScore([FromBody] ScoreRequest request)
{
try
{
var userCorrectList = request.UserCorrect.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
.ToList();
var userIncorrectList = request.UserIncorrect.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
.ToList();
var userCorrectList = request.UserCorrect.Split(',').ToList();
var userIncorrectList = request.UserIncorrect.Split(',').ToList();

var (score, correctWords, incorrectWords) = Flashcard.CalculateScore(
var (score, correctWords, incorrectWords) = FlashcardService.CalculateScore(
userCorrectList,
userIncorrectList,
request.FlashcardId,
_context);
_dbContext);

return Ok(new { score, correctWords, incorrectWords });
}
Expand Down
1 change: 1 addition & 0 deletions SwipeWords/Models/FlashcardExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using SwipeWords.Data;
using SwipeWords.Services;

namespace SwipeWords.Models;

Expand Down
4 changes: 4 additions & 0 deletions SwipeWords/Program.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
using Microsoft.EntityFrameworkCore;
using SwipeWords.Data;
using SwipeWords.Services;

var builder = WebApplication.CreateBuilder(args);

var connectionString = builder.Configuration.GetConnectionString("FlashcardGameDbConnectionString");

// Add services to the container.
builder.Services.AddScoped<FlashcardService>();
builder.Services.AddSingleton<ExternalApiService>();
builder.Services.AddScoped<FlashcardGameDatabaseContext>();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddControllers();
Expand Down
3 changes: 2 additions & 1 deletion SwipeWords/test/FlashcardScoreTests.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using Microsoft.EntityFrameworkCore;
using SwipeWords.Data;
using SwipeWords.Models;
using SwipeWords.Services;
using Xunit;

public class FlashcardScoreTests
Expand Down Expand Up @@ -36,7 +37,7 @@ public void CalculateScore_ShouldReturnCorrectScoreAndWords()

// Act
var (score, correctWords, incorrectWords) =
Flashcard.CalculateScore(userCorrect, userIncorrect, flashcardId, context);
FlashcardService.CalculateScore(userCorrect, userIncorrect, flashcardId, context);

// Assert
Assert.Equal(3, score);
Expand Down