Ice Fishing System Documentation
Overview
The ice fishing system provides comprehensive support for ice anglers, including specialized equipment, setups, and hole tracking. This system complements the existing boat fishing system to appeal to all types of anglers.
Core Entities
IceFishingSetup
Similar to GearSetup but specifically for ice fishing. Tracks all ice fishing equipment in a single setup:
Equipment:
- Rods: Multiple ice fishing rods (via
IceFishingSetupRod) - Tip-Ups: Multiple tip-ups (via
IceFishingSetupTipUp) - Auger: Ice auger for drilling holes
- Shelter: Ice shanty/shelter/tent
- Heater: Buddy heater or other portable heater
- Bucket: Bucket for sitting and storage
- Chair: Ice fishing chair
- Sled: Sled for hauling gear
- Fishfinder: Portable fishfinder/flasher
- Camera: Underwater camera
Features:
IsDefault: Mark as default setup for quick loggingUsageCount: Track how often setup is used- Links to
FishingSessionfor session tracking
IceFishingSetupRod
Links a rod to an ice fishing setup with optional reel, line, and lure.
Properties:
Position: Order in setup (0 = first rod)RodId,ReelId,LineId,LureId: Links to gearNotes: Notes about this rod in the setup
IceFishingSetupTipUp
Links a tip-up to an ice fishing setup with optional line and lure.
Properties:
Position: Order in setupTipUpId: Link to tip-up equipment (stored asBoatEquipment)LineId,LureId: Optional line and lureNotes: Notes about this tip-up
IceHole
Represents a drilled ice hole with location, size, and catch tracking.
Properties:
- Location:
Latitude,Longitude,DepthFt,IceThicknessInches - Hole Specs:
HoleDiameterInches(6", 8", 10"),AugerType,AugerId - Setup:
RodId,TipUpId,IceFishingSetupId - Catches:
CatchCount,SpeciesCaught - Status:
IsActive,DrilledAt,ClosedAt
Equipment Types
New BoatEquipmentType Values
Ice fishing equipment is stored as BoatEquipment with these types:
IceAuger: Hand, gas, or electric augerTipUp: Tip-up deviceIceShelter,IceShanty,IceHouse,IceTent: Various shelter typesBuddyHeater,IceHeater: Portable heatersIceBucket: Bucket for sitting/storageIceChair: Ice fishing chairIceSled: Sled for hauling gearIceFishingRod: Ice fishing rod (specialized rod type)Flasher: Flasher/fishfinder for ice fishingUnderwaterCamera: Underwater cameraIceFishingElectronics: Other ice fishing electronics
Fishing Session Integration
FishingSession Enhancements
Added ice fishing support to FishingSession:
public int? IceFishingSetupId { get; set; }
public IceFishingSetup? IceFishingSetup { get; set; }
public bool IsIceFishing { get; set; } = false;
public float? IceThicknessInches { get; set; }
public float? AirTemperatureF { get; set; }
Usage Examples
Creating an Ice Fishing Setup
var iceSetup = new IceFishingSetup
{
UserId = userId,
Name = "Perch Setup",
Description = "My go-to perch ice fishing setup",
IsDefault = true,
// Equipment
AugerId = augerEquipmentId,
ShelterId = shelterEquipmentId,
HeaterId = heaterEquipmentId,
BucketId = bucketEquipmentId,
ChairId = chairEquipmentId,
SledId = sledEquipmentId,
FishfinderId = flasherEquipmentId
};
// Add rods
iceSetup.Rods.Add(new IceFishingSetupRod
{
RodId = iceRodId,
ReelId = iceReelId,
LineId = iceLineId,
LureId = jigId,
Position = 0
});
// Add tip-ups
iceSetup.TipUps.Add(new IceFishingSetupTipUp
{
TipUpId = tipUpEquipmentId,
LineId = tipUpLineId,
LureId = minnowId,
Position = 0
});
context.IceFishingSetups.Add(iceSetup);
context.SaveChanges();
Creating an Ice Fishing Session
var session = new FishingSession
{
UserId = userId,
Name = "Morning Perch Trip",
StartTime = DateTime.UtcNow,
StartLatitude = 45.0,
StartLongitude = -87.0,
LocationName = "Lake Michigan - Green Bay",
// Ice fishing specific
IsIceFishing = true,
IceFishingSetupId = iceSetupId,
IceThicknessInches = 8.0f,
AirTemperatureF = 25.0f,
FishingMethod = FishingMethod.IceFishing
};
context.FishingSessions.Add(session);
context.SaveChanges();
Drilling and Tracking Ice Holes
var iceHole = new IceHole
{
FishingSessionId = sessionId,
Latitude = 45.001,
Longitude = -87.001,
DepthFt = 15.0f,
IceThicknessInches = 8.0f,
// Hole specs
HoleDiameterInches = 8.0f, // 8" hole
AugerType = "Gas Auger",
AugerId = augerEquipmentId,
// Setup used
IceFishingSetupId = iceSetupId,
RodId = iceRodId,
// Status
IsActive = true,
DrilledAt = DateTime.UtcNow
};
context.IceHoles.Add(iceHole);
context.SaveChanges();
// Update hole when fish is caught
iceHole.CatchCount = 1;
iceHole.SpeciesCaught = "Yellow Perch";
iceHole.Notes = "Caught on jig with minnow";
// Close hole when done
iceHole.IsActive = false;
iceHole.ClosedAt = DateTime.UtcNow;
Querying Ice Fishing Data
// Get all ice fishing sessions for a user
var iceSessions = context.FishingSessions
.Where(fs => fs.UserId == userId && fs.IsIceFishing)
.Include(fs => fs.IceFishingSetup)
.ThenInclude(ifs => ifs.Rods)
.ThenInclude(ifsr => ifsr.Rod)
.Include(fs => fs.IceFishingSetup)
.ThenInclude(ifs => ifs.TipUps)
.ToList();
// Get all holes for a session
var holes = context.IceHoles
.Where(ih => ih.FishingSessionId == sessionId)
.OrderBy(ih => ih.DrilledAt)
.ToList();
// Find most productive hole
var bestHole = context.IceHoles
.Where(ih => ih.FishingSessionId == sessionId)
.OrderByDescending(ih => ih.CatchCount)
.FirstOrDefault();
3D Models
Ice Fishing Model Types
Added to ModelType enum:
IceRod: Ice fishing rodTipUp: Tip-up deviceIceAuger: Ice augerIceShelter: Ice shelter/shantyIceBucket: Ice bucketIceChair: Ice fishing chairIceSled: Ice sledBuddyHeater: Portable heaterFlasher: Flasher/fishfinderUnderwaterCamera: Underwater cameraIceHole: Ice hole visualization
Seeded Models
The ThreeJsModelSeeder includes generic 3D models for:
- Ice fishing rods (24-36 inch typical length)
- Tip-ups
- Ice augers (6", 8", 10" blade diameters)
- Ice shelters (6x6x6 typical size)
- Ice buckets (5-gallon standard)
- Ice chairs
- Buddy heaters
- Ice sleds
- Flashers
- Ice holes (8" standard diameter)
Rod Types
Ice fishing rods should be added to the RodType lookup table with values like:
- "Ice Fishing Rod"
- "Ice Jigging Rod"
- "Tip-Up Rod"
- "Ice Spinning Rod"
- "Ice Fly Rod"
These can be added via the dynamic lookup system.
Benefits
- Comprehensive Ice Fishing Support: All major ice fishing equipment types
- Setup Management: Similar to boat setups, but for ice fishing
- Hole Tracking: Track drilled holes, catches, and productivity
- 3D Visualization: 3D models for all ice fishing equipment
- Session Integration: Seamlessly integrated with existing
FishingSessionsystem - Quick Logging: Default setups for quick ice fishing log entries
Future Enhancements
- Ice Thickness Tracking: Historical ice thickness data by location
- Hole Patterns: Visualize hole patterns on ice
- Temperature Tracking: Track air/water temperature trends
- Species-Specific Setups: Pre-configured setups for different species
- Ice Fishing Maps: Maps showing productive ice fishing locations
- Safety Features: Ice thickness warnings, safety checklists