muller-reporting-sys/TEAM_MANAGER_VALIDATION.md
2025-11-12 22:21:35 +03:00

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

  1. app/admin/teams/create/page.tsx

    • Added manager validation
    • Added error state
    • Enhanced dropdown with team info
  2. 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

  1. 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

  1. Select manager without team → Success
  2. Select manager with team → Error shown
  3. Change selection after error → Error clears
  4. Submit with valid manager → Team created

Edit Team

  1. Keep same manager → Success (no validation)
  2. Change to unassigned manager → Success
  3. Change to manager with team → Error shown
  4. Change back to original → Success

Dropdown Display

  1. Managers without teams show normally
  2. Managers with teams show assignment info
  3. 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!