Boat Mounting Systems Documentation
Overview
The boat mounting system allows users to track track/rail systems installed on their boats and how equipment is mounted to these tracks. This includes T-Track, Unistrut, rail systems, and other mounting solutions.
Core Entity
BoatMountingTrack
Represents a mounting track/rail system installed on a boat.
Track Types:
TTrack: T-Track mounting systemUnistrut: Unistrut mounting systemRailSystem: Rail mounting systemTrackSystem: Generic track system (Traxstech, Cisco, etc.)MountingTrack: Generic mounting trackRodHolderTrack: Track specifically for rod holdersAccessoryTrack: Track for accessories
Properties:
- Location:
PositionX,PositionY,PositionZ(3D position on boat) - Orientation:
RotationX,RotationY,RotationZ(Euler angles) - Placement:
PlacementLocation(e.g., "Port Side", "Starboard Side", "Stern") - Specifications:
LengthFt,TrackSize,Material,SlotCount - Brand/Model:
Brand,Model,BrandId
Equipment Types Added
Rod Holders
RodHolder: Generic rod holderBankRodHolder: Rod holder for bank/shore fishingBoatRodHolder: Rod holder for boat mountingRodHolderTrack: Track system for rod holders
Bank Fishing Equipment
BankFishingLight: Light for bank/shore fishingBankFishingBell: Bell for rod holder alertsBankFishingStand: Stand for bank fishingBankFishingChair: Chair for bank fishingBankFishingUmbrella: Umbrella for shadeBankFishingCart: Cart for hauling gear to bank
Bells
Bell: Generic bell for tip-ups/rod holders (bite alarm)RodHolderBell: Bell specifically for rod holdersTipUpBell: Bell for tip-ups
Mounting Systems
TTrack: T-Track mounting systemUnistrut: Unistrut mounting systemRailSystem: Rail mounting systemTrackSystem: Generic track systemMountingTrack: Generic mounting trackAccessoryTrack: Track for accessories
BoatEquipmentPlacement Enhancements
Added track mounting support to BoatEquipmentPlacement:
public int? MountingTrackId { get; set; } // Track this equipment is mounted to
public BoatMountingTrack? MountingTrack { get; set; }
public int? TrackPosition { get; set; } // Position/slot on the track (1-based)
public string? TrackMountType { get; set; } // e.g., "T-Bolt", "Slider", "Adapter"
Usage Examples
Installing a Track System
var track = new BoatMountingTrack
{
BoatId = boatId,
TrackType = BoatEquipmentType.TTrack,
Name = "Port Side T-Track",
Brand = "Traxstech",
Model = "TT-48",
LengthFt = 4.0f,
TrackSize = "1.5 inch",
Material = "Aluminum",
SlotCount = 8,
PositionX = -3.5f, // Port side (negative)
PositionY = 1.0f, // On gunnel
PositionZ = 0.0f, // Center
PlacementLocation = "Port Side",
Orientation = "Horizontal",
InstalledAt = DateTime.UtcNow,
IsPermanent = true,
MaxCapacity = 8
};
context.BoatMountingTracks.Add(track);
context.SaveChanges();
Mounting Equipment to a Track
var rodHolderPlacement = new BoatEquipmentPlacement
{
BoatId = boatId,
BoatEquipmentId = rodHolderEquipmentId,
PositionX = -3.5f,
PositionY = 1.0f,
PositionZ = 1.0f, // Forward on track
MountingTrackId = trackId,
TrackPosition = 2, // Second slot on track
TrackMountType = "T-Bolt",
MountingType = "Track Mount",
IsPermanent = false // Can be moved along track
};
context.BoatEquipmentPlacements.Add(rodHolderPlacement);
context.SaveChanges();
Bank Fishing Setup
// Create bank fishing equipment
var bankRodHolder = new BoatEquipment
{
UserId = userId,
EquipmentType = BoatEquipmentType.BankRodHolder,
Name = "Bank Rod Holder",
BrandId = brandId,
Make = "BankPro",
Model = "BH-200"
};
var bankBell = new BoatEquipment
{
UserId = userId,
EquipmentType = BoatEquipmentType.BankFishingBell,
Name = "Rod Holder Bell",
Make = "StrikeAlert",
Model = "SB-100"
};
var bankLight = new BoatEquipment
{
UserId = userId,
EquipmentType = BoatEquipmentType.BankFishingLight,
Name = "LED Bank Light",
Make = "NightPro",
Model = "NL-500",
PowerWatts = 50.0f
};
context.BoatEquipment.AddRange(bankRodHolder, bankBell, bankLight);
context.SaveChanges();
Querying Track-Mounted Equipment
// Get all equipment mounted on a specific track
var trackEquipment = context.BoatEquipmentPlacements
.Where(bep => bep.MountingTrackId == trackId)
.Include(bep => bep.BoatEquipment)
.OrderBy(bep => bep.TrackPosition)
.ToList();
// Get all tracks on a boat
var boatTracks = context.BoatMountingTracks
.Where(bmt => bmt.BoatId == boatId)
.Include(bmt => bmt.EquipmentPlacements)
.ThenInclude(bep => bep.BoatEquipment)
.ToList();
// Find available track positions
var track = context.BoatMountingTracks.FirstOrDefault(bmt => bmt.Id == trackId);
var usedPositions = context.BoatEquipmentPlacements
.Where(bep => bep.MountingTrackId == trackId && bep.TrackPosition.HasValue)
.Select(bep => bep.TrackPosition.Value)
.ToList();
var availablePositions = Enumerable.Range(1, track.MaxCapacity)
.Where(pos => !usedPositions.Contains(pos))
.ToList();
3D Visualization
Track Models
- T-Track models (4ft, 6ft)
- Unistrut track models
- Rail system models
- Generic mounting track models
Bank Fishing Models
- Bank rod holders
- Bank fishing lights
- Bank fishing bells
- Bank fishing stands
- Bank fishing chairs
- Bank fishing carts
Rod Holder Models
- Standard rod holders
- Bank rod holders
- Boat rod holders
Benefits
- Track Management: Track all mounting systems on boats
- Equipment Organization: Know exactly where equipment is mounted
- Repositioning: Easy to move equipment along tracks
- Capacity Planning: Track how many slots are available
- Bank Fishing Support: Complete support for bank/shore fishing
- Bite Alerts: Bell systems for tip-ups and rod holders
Future Enhancements
- Track Templates: Pre-configured track layouts
- Equipment Compatibility: Check if equipment fits on track
- Visual Track Editor: Drag-and-drop equipment on tracks
- Track Marketplace: Share track configurations
- Installation Guides: Step-by-step track installation guides