import React, { useState, useEffect } from 'react' import { FaUsers, FaArrowLeft, FaSave, FaTimes, FaPlus, FaTrash, FaMapMarkerAlt, } from 'react-icons/fa' import { useNavigate, useParams } from 'react-router-dom' import { CrmTerritory } from '../../../types/crm' import mockSalesTeams from '../../../mocks/mockSalesTeams' import { mockEmployees } from '../../../mocks/mockEmployees' import { Team, TeamMember, TeamRoleEnum } from '../../../types/common' import { Container } from '@/components/shared' import { ROUTES_ENUM } from '@/routes/route.constant' import { getTeamRoleText } from '@/utils/erp' const SalesTeamEdit: React.FC = () => { const navigate = useNavigate() const { id } = useParams<{ id: string }>() const [formData, setFormData] = useState({ teamCode: '', name: '', description: '', managerId: '', isActive: true, }) const [members, setMembers] = useState[]>([]) const [territories, setTerritories] = useState[]>([]) const [errors, setErrors] = useState>({}) const [loading, setLoading] = useState(true) // Load team data on component mount useEffect(() => { const team = mockSalesTeams.find((t) => t.id === id) if (team) { setFormData({ teamCode: team.code, name: team.name, description: team.description || '', managerId: team.managerId, isActive: team.isActive, }) setMembers(team.members || []) setTerritories(team.territories || []) } setLoading(false) }, [id]) const handleInputChange = (field: string, value: string | boolean) => { setFormData((prev) => ({ ...prev, [field]: value })) if (errors[field]) { setErrors((prev) => ({ ...prev, [field]: '' })) } } const addMember = () => { setMembers((prev) => [ ...prev, { employeeId: '', role: TeamRoleEnum.Member, isActive: true, }, ]) } const removeMember = (index: number) => { setMembers((prev) => prev.filter((_, i) => i !== index)) } const updateMember = (index: number, field: string, value: string | TeamRoleEnum | boolean) => { setMembers((prev) => prev.map((member, i) => (i === index ? { ...member, [field]: value } : member)), ) } const addTerritory = () => { setTerritories((prev) => [ ...prev, { territoryCode: '', name: '', description: '', region: '', countries: [], cities: [], isActive: true, }, ]) } const removeTerritory = (index: number) => { setTerritories((prev) => prev.filter((_, i) => i !== index)) } const updateTerritory = (index: number, field: string, value: string | string[] | boolean) => { setTerritories((prev) => prev.map((territory, i) => (i === index ? { ...territory, [field]: value } : territory)), ) } const validateForm = () => { const newErrors: Record = {} if (!formData.teamCode.trim()) { newErrors.teamCode = 'Takım kodu zorunludur' } if (!formData.name.trim()) { newErrors.name = 'Takım adı zorunludur' } if (!formData.managerId.trim()) { newErrors.managerId = 'Takım lideri seçimi zorunludur' } setErrors(newErrors) return Object.keys(newErrors).length === 0 } const handleSave = () => { if (!validateForm()) return const updatedTeam: Partial = { id, ...formData, members: members.map((member, index) => ({ ...member, id: member.id || `member-updated-${index}`, teamId: id || '', joinDate: member.joinDate || new Date(), })) as TeamMember[], territories: territories.map((territory, index) => ({ ...territory, id: territory.id || `territory-updated-${index}`, assignedTeamId: id || '', })) as CrmTerritory[], lastModificationTime: new Date(), } console.log('Updating sales team:', updatedTeam) alert('Satış ekibi başarıyla güncellendi!') navigate(ROUTES_ENUM.protected.crm.salesTeams) } const handleCancel = () => { if (confirm('Değişiklikler kaydedilmedi. Çıkmak istediğinizden emin misiniz?')) { navigate(ROUTES_ENUM.protected.crm.salesTeams) } } if (loading) { return (

Yükleniyor...

) } const team = mockSalesTeams.find((t) => t.id === id) if (!team) { return (

Satış ekibi bulunamadı

Aradığınız satış ekibi mevcut değil veya silinmiş olabilir.

) } return (
{/* Header */}

Satış Ekibi Düzenle

{team.name} ekibini düzenleyin

{/* Form */}
{/* Basic Information */}

Temel Bilgiler

handleInputChange('teamCode', e.target.value)} className={`w-full px-3 py-1.5 text-sm border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent ${ errors.teamCode ? 'border-red-500' : 'border-gray-300' }`} placeholder="ST-001" /> {errors.teamCode && (

{errors.teamCode}

)}
{errors.managerId && (

{errors.managerId}

)}
handleInputChange('name', e.target.value)} className={`w-full px-3 py-1.5 text-sm border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent ${ errors.name ? 'border-red-500' : 'border-gray-300' }`} placeholder="Kurumsal Satış Ekibi" /> {errors.name &&

{errors.name}

}