Skip to main content

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 logging
  • UsageCount: Track how often setup is used
  • Links to FishingSession for 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 gear
  • Notes: 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 setup
  • TipUpId: Link to tip-up equipment (stored as BoatEquipment)
  • LineId, LureId: Optional line and lure
  • Notes: 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 auger
  • TipUp: Tip-up device
  • IceShelter, IceShanty, IceHouse, IceTent: Various shelter types
  • BuddyHeater, IceHeater: Portable heaters
  • IceBucket: Bucket for sitting/storage
  • IceChair: Ice fishing chair
  • IceSled: Sled for hauling gear
  • IceFishingRod: Ice fishing rod (specialized rod type)
  • Flasher: Flasher/fishfinder for ice fishing
  • UnderwaterCamera: Underwater camera
  • IceFishingElectronics: 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 rod
  • TipUp: Tip-up device
  • IceAuger: Ice auger
  • IceShelter: Ice shelter/shanty
  • IceBucket: Ice bucket
  • IceChair: Ice fishing chair
  • IceSled: Ice sled
  • BuddyHeater: Portable heater
  • Flasher: Flasher/fishfinder
  • UnderwaterCamera: Underwater camera
  • IceHole: 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

  1. Comprehensive Ice Fishing Support: All major ice fishing equipment types
  2. Setup Management: Similar to boat setups, but for ice fishing
  3. Hole Tracking: Track drilled holes, catches, and productivity
  4. 3D Visualization: 3D models for all ice fishing equipment
  5. Session Integration: Seamlessly integrated with existing FishingSession system
  6. Quick Logging: Default setups for quick ice fishing log entries

Future Enhancements

  1. Ice Thickness Tracking: Historical ice thickness data by location
  2. Hole Patterns: Visualize hole patterns on ice
  3. Temperature Tracking: Track air/water temperature trends
  4. Species-Specific Setups: Pre-configured setups for different species
  5. Ice Fishing Maps: Maps showing productive ice fishing locations
  6. Safety Features: Ice thickness warnings, safety checklists