import React, { useState } from 'react' import { FaUsers, FaArrowLeft, FaSave, FaTimes, FaPlus, FaTrash, FaMapMarkerAlt, } from 'react-icons/fa' import { useNavigate } from 'react-router-dom' import { CrmTerritory } from '../../../types/crm' import { mockEmployees } from '../../../mocks/mockEmployees' import { Team, TeamMember, TeamRoleEnum } from '../../../types/common' import { Container } from '@/components/shared' const SalesTeamCreate: React.FC = () => { const navigate = useNavigate() const [formData, setFormData] = useState({ teamCode: '', name: '', description: '', managerId: '', isActive: true, }) const [members, setMembers] = useState[]>([]) const [territories, setTerritories] = useState[]>([]) const [errors, setErrors] = useState>({}) 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 newTeam: Partial = { ...formData, members: members.map((member, index) => ({ ...member, id: `member-new-${index}`, teamId: 'new-team', joinDate: new Date(), })) as TeamMember[], territories: territories.map((territory, index) => ({ ...territory, id: `territory-new-${index}`, assignedTeamId: 'new-team', })) as CrmTerritory[], targets: [], creationTime: new Date(), lastModificationTime: new Date(), } console.log('Creating new sales team:', newTeam) alert('Satış ekibi başarıyla oluşturuldu!') navigate('/admin/crm/sales-teams') } const handleCancel = () => { if (confirm('Değişiklikler kaydedilmedi. Çıkmak istediğinizden emin misiniz?')) { navigate('/admin/crm/sales-teams') } } return (
{/* Header */}

Yeni Satış Ekibi

Yeni satış ekibi oluşturun ve ekip üyelerini atayın

{/* 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}

}