Skip to main content

Education Entities

Entities for fishing courses, modules, enrollments, and certifications.

FishingCourse

Purpose: Educational fishing courses.

Key Fields:

  • Id (int): Unique identifier
  • Title: Course title
  • Description: Course description
  • CourseCode: Course code/identifier
  • InstructorUserId: User instructor
  • InstructorName: Instructor name (if not user)
  • InstructorBio: Instructor biography
  • CourseType: Online, InPerson, Hybrid
  • Level: Beginner, Intermediate, Advanced
  • Category: Bass Fishing, Fly Fishing, Rod Building, etc.
  • EstimatedHours: Estimated completion time
  • IsFree: Whether course is free
  • Price: Course price
  • Currency: Currency code
  • MaxEnrollments: Maximum enrollments
  • CurrentEnrollments: Current enrollment count
  • RequiresApproval: Whether enrollment requires approval
  • IsActive: Whether course is active
  • IsPublished: Whether course is published

Relationships:

  • Many-to-one: User (instructor)
  • One-to-many: CourseModule, CourseEnrollment, CourseCertification

Usage Patterns:

// Create course
var course = new FishingCourse
{{
Title = "Advanced Bass Fishing Techniques",
InstructorUserId = instructorId,
CourseType = CourseType.Online,
Level = CourseLevel.Advanced,
Category = "Bass Fishing",
EstimatedHours = 8,
IsFree = false,
Price = 49.99m,
IsActive = true,
IsPublished = true
}};

// Get published courses
var courses = context.FishingCourses
.Where(fc => fc.IsPublished && fc.IsActive)
.Include(fc => fc.InstructorUser)
.ToList();

CourseModule

Purpose: Course content modules/lessons.

Key Fields:

  • Id (int): Unique identifier
  • FishingCourseId: Associated course
  • Title: Module title
  • Description: Module description
  • Order: Module order
  • Content: Module content (text, video URL, etc.)
  • ContentType: Video, Text, Quiz, etc.
  • DurationMinutes: Module duration
  • IsRequired: Whether module is required

Relationships:

  • Many-to-one: FishingCourse

CourseEnrollment

Purpose: User enrollments in courses.

Key Fields:

  • Id (int): Unique identifier
  • FishingCourseId: Enrolled course
  • UserId: Enrolled user
  • Status: Enrolled, InProgress, Completed, Dropped
  • EnrolledAt: Enrollment date
  • StartedAt: Start date
  • CompletedAt: Completion date
  • ProgressPercent: Completion percentage

Relationships:

  • Many-to-one: FishingCourse, User

CourseCertification

Purpose: Certifications earned from courses.

Key Fields:

  • Id (int): Unique identifier
  • CourseEnrollmentId: Associated enrollment
  • CertificateNumber: Certificate number
  • IssuedAt: Issue date
  • ExpiresAt: Expiration date (if applicable)
  • CertificateUrl: Certificate URL

Relationships:

  • Many-to-one: CourseEnrollment