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"; 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("/admin/crm/sales-teams"); }; const handleCancel = () => { if ( confirm("Değişiklikler kaydedilmedi. Çıkmak istediğinizden emin misiniz?") ) { navigate("/admin/crm/sales-teams"); } }; 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}

)}