Club Entities
Entities for fishing clubs, memberships, and club events.
FishingClub
Purpose: Fishing club or organization.
Key Fields:
Id(int): Unique identifierClubName: Club nameDescription: Club descriptionMissionStatement: Club missionLogoUrl,CoverImageUrl: Club imagesWebsite,Email,Phone: Contact informationAddress,City,State,ZipCode: LocationLatitude,Longitude: CoordinatesClubType: Local, Regional, National, InternationalCategory: Bass Fishing, Fly Fishing, Ice Fishing, etc.Focus: Conservation, Competition, SocialMembershipModel: Free, Paid, InviteOnlyAnnualDues: Annual membership duesRequiresApproval: Whether membership requires approvalMemberCount: 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 identifierFishingClubId: Associated clubUserId: Member userMembershipType: Member, Admin, FounderStatus: Active, Inactive, SuspendedJoinedAt: Join dateExpiresAt: 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 identifierFishingClubId: Organizing clubEventName: Event nameDescription: Event descriptionEventDate: Event dateLocation: Event locationEventType: Meeting, Tournament, Social, etc.IsPublic: Whether event is publicMaxParticipants: 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();
Related Documentation
- Events System - See
FishingLog.Infrastructure/Entities/Events/FishingEvent.csfor general event system - Social Features - User groups and circles