Implement story integration foundation: - Create Domain/Entities/StorySegment.cs with full CRUD methods - Create Domain/Entities/StoryProgress.cs for user story progress tracking - Create Application/DTOs/StorySegmentDto.cs with multiple DTO types - Create Domain/Interfaces/IStoryRepository.cs - Create Domain/Interfaces/IStoryProgressRepository.cs - Create Infrastructure/Data/Repositories/StoryRepository.cs - Create Infrastructure/Data/Repositories/StoryProgressRepository.cs - Add DbSets and entity configurations to AppDbContext - Add navigation properties to Level, Lesson, and User entities Next: Phase 2 - Backend Services (StoryService, StoryGenerationService) Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
61 lines
1.7 KiB
C#
61 lines
1.7 KiB
C#
namespace GermanApp.Domain.Entities;
|
|
|
|
/// <summary>
|
|
/// Represents a CEFR level in the DeutschLernen system (A1, A2, B1, B2, C1).
|
|
/// </summary>
|
|
public class Level
|
|
{
|
|
public int Id { get; private set; }
|
|
public string Name { get; private set; } = string.Empty;
|
|
public string Code { get; private set; } = string.Empty;
|
|
public int Order { get; private set; }
|
|
|
|
/// <summary>
|
|
/// Constructor for EF Core deserialization.
|
|
/// </summary>
|
|
private Level() { }
|
|
|
|
/// <summary>
|
|
/// Factory method to create a new level.
|
|
/// </summary>
|
|
/// <param name="name">Display name of the level (e.g., "Beginner A1")</param>
|
|
/// <param name="code">Short code for the level (e.g., "A1")</param>
|
|
/// <param name="order">Sort order of the level</param>
|
|
public static Level Create(string name, string code, int order)
|
|
{
|
|
return new Level
|
|
{
|
|
Name = name,
|
|
Code = code.ToUpperInvariant(),
|
|
Order = order
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// Updates the level's display name.
|
|
/// </summary>
|
|
public void UpdateName(string newName)
|
|
{
|
|
Name = newName;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Updates the level's code.
|
|
/// </summary>
|
|
public void UpdateCode(string newCode)
|
|
{
|
|
Code = newCode.ToUpperInvariant();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Updates the level's sort order.
|
|
/// </summary>
|
|
public void UpdateOrder(int newOrder)
|
|
{
|
|
Order = newOrder;
|
|
}
|
|
|
|
// Navigation properties
|
|
public virtual ICollection<Lesson> Lessons { get; private set; } = new List<Lesson>();
|
|
public virtual ICollection<StorySegment> StorySegments { get; private set; } = new List<StorySegment>();
|
|
}
|