5.1 KiB
5.1 KiB
Team Manager Validation - Complete ✅
Overview
Added validation to ensure each shift manager can only be assigned to one team at a time.
Features Implemented
1. Manager Availability Check ✅
Create Team Page:
- Validates that selected manager doesn't already have a team
- Shows error message if manager is already assigned
- Displays team assignments in dropdown options
- Prevents form submission if validation fails
Edit Team Page:
- Validates only if manager is being changed
- Allows keeping the same manager (no validation needed)
- Shows error message if new manager is already assigned
- Displays team assignments in dropdown options
Implementation Details
New API Endpoint
GET /api/admin/managers-with-teams
- Returns all active managers with their team assignments
- Includes team data for validation
- Used by both create and edit forms
Validation Logic
Create Team:
// Check if selected manager already has a team
const selectedManager = managers.find(m => m.id === formData.shiftManagerId)
if (selectedManager && selectedManager.teams && selectedManager.teams.length > 0) {
setError(`This manager is already assigned to: ${selectedManager.teams.map(t => t.name).join(", ")}`)
return
}
Edit Team:
// Only check if manager changed
if (formData.shiftManagerId !== originalManagerId) {
const selectedManager = managers.find(m => m.id === formData.shiftManagerId)
if (selectedManager && selectedManager.teams && selectedManager.teams.length > 0) {
setError(`This manager is already assigned to: ${selectedManager.teams.map(t => t.name).join(", ")}`)
return
}
}
User Experience
Visual Indicators
Dropdown Options:
- Shows manager name and employee number
- Displays existing team assignments inline
- Example: "John Smith (SM001) - Already assigned to: Red Team"
Error Messages:
- Red alert box appears when validation fails
- Clear message indicating which team(s) the manager is assigned to
- Error clears when user changes selection
Form Behavior:
- Submit button disabled during loading
- Error prevents form submission
- User must select a different manager to proceed
Files Modified
Pages
-
✅
app/admin/teams/create/page.tsx- Added manager validation
- Added error state
- Enhanced dropdown with team info
-
✅
app/admin/teams/[id]/page.tsx- Added manager validation (only on change)
- Added error state
- Enhanced dropdown with team info
- Tracks original manager ID
API Routes
- ✅
app/api/admin/managers-with-teams/route.ts(NEW)- Returns managers with team relationships
- Filters active managers only
- Ordered by employee number
Validation Rules
One Manager Per Team
- ✅ Each team must have exactly one shift manager
- ✅ Each shift manager can only manage one team
- ✅ Validation happens before form submission
- ✅ Clear error messages guide the user
Edit Behavior
- ✅ Can keep the same manager (no validation)
- ✅ Can change to unassigned manager (allowed)
- ✅ Cannot change to manager with existing team (blocked)
Testing Scenarios
Create Team
- ✅ Select manager without team → Success
- ✅ Select manager with team → Error shown
- ✅ Change selection after error → Error clears
- ✅ Submit with valid manager → Team created
Edit Team
- ✅ Keep same manager → Success (no validation)
- ✅ Change to unassigned manager → Success
- ✅ Change to manager with team → Error shown
- ✅ Change back to original → Success
Dropdown Display
- ✅ Managers without teams show normally
- ✅ Managers with teams show assignment info
- ✅ Current team's manager doesn't show warning (edit only)
Error Messages
Format
This manager is already assigned to: [Team Name(s)]
Examples
- "This manager is already assigned to: Red Team"
- "This manager is already assigned to: Blue Team, Green Team"
Benefits
Data Integrity
- Prevents duplicate team assignments
- Ensures one-to-one manager-team relationship
- Validates before database operation
User Experience
- Clear visual feedback
- Helpful error messages
- Prevents invalid submissions
- Shows team assignments in dropdown
System Reliability
- Client-side validation (fast feedback)
- Can add server-side validation for extra safety
- Consistent validation logic
Future Enhancements
Possible Additions
- Server-side validation in API route
- Show available managers count
- Filter dropdown to show only available managers
- Bulk team assignment interface
- Manager reassignment workflow
- Team history tracking
Summary
✅ Validation implemented for team manager assignments ✅ One manager per team rule enforced ✅ Clear error messages and visual feedback ✅ Works in both create and edit forms ✅ New API endpoint for manager data with teams
The system now ensures that each shift manager can only be assigned to one team at a time, preventing conflicts and maintaining data integrity!