Skip to main content

Club Entities

Entities for fishing clubs, memberships, and club events.

FishingClub

Purpose: Fishing club or organization.

Key Fields:

  • Id (int): Unique identifier
  • ClubName: Club name
  • Description: Club description
  • MissionStatement: Club mission
  • LogoUrl, CoverImageUrl: Club images
  • Website, Email, Phone: Contact information
  • Address, City, State, ZipCode: Location
  • Latitude, Longitude: Coordinates
  • ClubType: Local, Regional, National, International
  • Category: Bass Fishing, Fly Fishing, Ice Fishing, etc.
  • Focus: Conservation, Competition, Social
  • MembershipModel: Free, Paid, InviteOnly
  • AnnualDues: Annual membership dues
  • RequiresApproval: Whether membership requires approval
  • MemberCount: Denormalized member count

Relationships:

  • One-to-many: ClubMembership, ClubEvent

Usage Patterns:

// Create club
var club = new FishingClub
{{
ClubName = "Lake Michigan Anglers",
ClubType = ClubType.Local,
Category = "Salmon Fishing",
Focus = "Conservation",
MembershipModel = MembershipModel.Free,
RequiresApproval = false
}};

// Get clubs by location
var clubs = context.FishingClubs
.Where(fc => fc.Latitude.HasValue && fc.Longitude.HasValue)
.ToList();

ClubMembership

Purpose: User memberships in fishing clubs.

Key Fields:

  • Id (int): Unique identifier
  • FishingClubId: Associated club
  • UserId: Member user
  • MembershipType: Member, Admin, Founder
  • Status: Active, Inactive, Suspended
  • JoinedAt: Join date
  • ExpiresAt: Membership expiration (if applicable)
  • PaymentStatus: Payment status for paid memberships

Relationships:

  • Many-to-one: FishingClub, User

Usage Patterns:

// Join club
var membership = new ClubMembership
{{
FishingClubId = clubId,
UserId = userId,
MembershipType = MembershipType.Member,
Status = MembershipStatus.Active,
JoinedAt = DateTime.UtcNow
}};

// Get user's club memberships
var memberships = context.ClubMemberships
.Where(cm => cm.UserId == userId && cm.Status == MembershipStatus.Active)
.Include(cm => cm.FishingClub)
.ToList();

ClubEvent

Purpose: Events organized by fishing clubs.

Key Fields:

  • Id (int): Unique identifier
  • FishingClubId: Organizing club
  • EventName: Event name
  • Description: Event description
  • EventDate: Event date
  • Location: Event location
  • EventType: Meeting, Tournament, Social, etc.
  • IsPublic: Whether event is public
  • MaxParticipants: Maximum participants

Relationships:

  • Many-to-one: FishingClub

Usage Patterns:

// Create club event
var clubEvent = new ClubEvent
{{
FishingClubId = clubId,
EventName = "Monthly Meeting",
EventDate = meetingDate,
EventType = EventType.ClubMeeting,
IsPublic = false
}};

// Get upcoming club events
var events = context.ClubEvents
.Where(ce => ce.FishingClubId == clubId && ce.EventDate >= DateTime.UtcNow)
.OrderBy(ce => ce.EventDate)
.ToList();
  • Events System - See FishingLog.Infrastructure/Entities/Events/FishingEvent.cs for general event system
  • Social Features - User groups and circles