import React, { useState, useEffect } from "react"; import { FaPlus, FaEdit, FaSave, FaTimesCircle, FaAward, FaPalette, FaInfoCircle, } from "react-icons/fa"; import { HrBadge, BadgeCategoryEnum, BadgeRarityEnum } from "../../../types/hr"; import { iconOptions } from "../../../utils/erp"; interface BadgeEditModalProps { isOpen: boolean; onClose: () => void; badge?: HrBadge | null; onSubmit: (badgeData: HrBadge) => void; mode: "create" | "edit"; } const BadgeEditModal: React.FC = ({ isOpen, onClose, badge, onSubmit, mode, }) => { const [formData, setFormData] = useState({ id: "", code: "", name: "", description: "", icon: "⭐", color: "#FFD700", backgroundColor: "#FFF8DC", category: BadgeCategoryEnum.Performance, criteria: "", points: 10, rarity: BadgeRarityEnum.Common, isActive: true, creationTime: new Date(), lastModificationTime: new Date(), }); const generateBadgeCode = () => { const timestamp = Date.now().toString().slice(-6); return `BADGE-${timestamp}`; }; useEffect(() => { if (mode === "edit" && badge) { setFormData({ id: badge.id, code: badge.code, name: badge.name, description: badge.description, icon: badge.icon, color: badge.color, backgroundColor: badge.backgroundColor, category: badge.category, criteria: badge.criteria, points: badge.points, rarity: badge.rarity, isActive: badge.isActive, creationTime: badge.creationTime, lastModificationTime: badge.lastModificationTime, }); } else { // Reset form for create mode setFormData({ id: "", code: generateBadgeCode(), name: "", description: "", icon: "⭐", color: "#FFD700", backgroundColor: "#FFF8DC", category: BadgeCategoryEnum.Performance, criteria: "", points: 10, rarity: BadgeRarityEnum.Common, isActive: true, creationTime: new Date(), lastModificationTime: new Date(), }); } }, [mode, badge, isOpen]); const handleInputChange = ( e: React.ChangeEvent< HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement > ) => { const { name, value, type } = e.target; if (type === "checkbox") { const checked = (e.target as HTMLInputElement).checked; setFormData((prev) => ({ ...prev, [name]: checked, })); } else if (name === "points") { setFormData((prev) => ({ ...prev, [name]: parseInt(value) || 0, })); } else { setFormData((prev) => ({ ...prev, [name]: value, })); } }; const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); onSubmit(formData); onClose(); }; return ( isOpen && (
{/* Header */}
{mode === "edit" ? ( ) : ( )}

{mode === "edit" ? "Rozet Düzenle" : "Yeni Rozet Oluştur"}

{mode === "edit" ? "Mevcut rozet bilgilerini güncelleyin" : "Yeni bir başarı rozeti tanımlayın"}

{/* Form */}
{/* Sol Kolon */}

Temel Bilgiler