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"; 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}

)}