import React, { useState, useEffect } from 'react'; import './UserEditView.css'; const MyAccountAdminView = () => { const [formData, setFormData] = useState({ firstName: '', lastName: '', middleName: '', suffix: '', maidenName: '', nickname: '', gender: '', techAlumChapter: '', classYear: '', gradYear: '', gradSemester: '', degrees: [{ subject: '', degreeType: '', degreeYear: '', degreeDescription: '', degreeDepartment: '', degreeCollege: '' }], addresses: [{ address1: '', address2: '', city: '', state: '', country: '', zipCode: '', preferredAddress: false }], contacts: [{ contactNumber: '', contactType: '', preferredContact: false }], involvements: ['', ''], }); const techAlumChapters = ['Chapter A', 'Chapter B', 'Chapter C']; const degreeTypes = ['AS', 'BS', 'MS', 'PhD']; const genders = ['male', 'female', 'other']; const contactTypes = ['phone', 'email']; useEffect(() => { const savedData = JSON.parse(localStorage.getItem('myAccountData')); if (savedData) { setFormData({ ...formData, ...savedData, degrees: savedData.degrees || formData.degrees, addresses: savedData.addresses || formData.addresses, contacts: savedData.contacts || formData.contacts, involvements: savedData.involvements || formData.involvements, }); } }, []); const handleChange = (e) => { const { name, value } = e.target; setFormData({ ...formData, [name]: value }); }; const handleDegreeChange = (index, e) => { const updatedDegrees = [...formData.degrees]; updatedDegrees[index][e.target.name] = e.target.value; setFormData({ ...formData, degrees: updatedDegrees }); }; const handleAddDegree = () => { setFormData({ ...formData, degrees: [...formData.degrees, { subject: '', degreeType: '', degreeYear: '', degreeDescription: '', degreeDepartment: '', degreeCollege: '' }] }); }; const handleDeleteDegree = (index) => { const updatedDegrees = formData.degrees.filter((_, i) => i !== index); setFormData({ ...formData, degrees: updatedDegrees }); }; const handleAddressChange = (index, e) => { const updatedAddresses = [...formData.addresses]; updatedAddresses[index][e.target.name] = e.target.value; setFormData({ ...formData, addresses: updatedAddresses }); }; const handleAddAddress = () => { setFormData({ ...formData, addresses: [...formData.addresses, { address1: '', address2: '', city: '', state: '', country: '', zipCode: '', preferredAddress: false }] }); }; const handleDeleteAddress = (index) => { const updatedAddresses = formData.addresses.filter((_, i) => i !== index); setFormData({ ...formData, addresses: updatedAddresses }); }; const handleContactChange = (index, e) => { const updatedContacts = [...formData.contacts]; updatedContacts[index][e.target.name] = e.target.value; setFormData({ ...formData, contacts: updatedContacts }); }; const handleAddContact = () => { setFormData({ ...formData, contacts: [...formData.contacts, { contactNumber: '', contactType: '', preferredContact: false }] }); }; const handleDeleteContact = (index) => { const updatedContacts = formData.contacts.filter((_, i) => i !== index); setFormData({ ...formData, contacts: updatedContacts }); }; const handleSave = () => { localStorage.setItem('myAccountData', JSON.stringify(formData)); alert('Your information has been saved!'); }; const handleClear = () => { setFormData({ firstName: '', lastName: '', middleName: '', suffix: '', maidenName: '', nickname: '', gender: '', techAlumChapter: '', classYear: '', gradYear: '', gradSemester: '', degrees: [{ subject: '', degreeType: '', degreeYear: '', degreeDescription: '', degreeDepartment: '', degreeCollege: '' }], addresses: [{ address1: '', address2: '', city: '', state: '', country: '', zipCode: '', preferredAddress: false }], contacts: [{ contactNumber: '', contactType: '', preferredContact: false }], involvements: ['', ''], }); }; return ( <div className="my-account-container"> <h1>My Account Information</h1> <form className="account-form"> <h2>Personal Information</h2> <label>First Name</label> <input name="firstName" placeholder="First Name" value={formData.firstName} onChange={handleChange} required /> <label>Last Name</label> <input name="lastName" placeholder="Last Name" value={formData.lastName} onChange={handleChange} required /> <label>Middle Name</label> <input name="middleName" placeholder="Middle Name" value={formData.middleName} onChange={handleChange} /> <label>Maiden Name</label> <input name="maidenName" placeholder="Maiden Name" value={formData.maidenName} onChange={handleChange} /> <label>Suffix</label> <input name="suffix" placeholder="Suffix" value={formData.suffix} onChange={handleChange} /> <label>Nickname</label> <input name="nickname" placeholder="Nickname" value={formData.nickname} onChange={handleChange} /> <label>Gender</label> <select name="gender" value={formData.gender} onChange={handleChange} required> <option value="">Select Gender</option> {genders.map(gender => <option key={gender} value={gender}>{gender}</option>)} </select> <label>Tech Alumni Chapter</label> <select name="techAlumChapter" value={formData.techAlumChapter} onChange={handleChange}> <option value="">Select Chapter</option> {techAlumChapters.map(chapter => <option key={chapter} value={chapter}>{chapter}</option>)} </select> <label>Class Year</label> <input name="classYear" placeholder="Class Year" value={formData.classYear} onChange={handleChange} required type="number" /> <label>Grad Year</label> <input name="gradYear" placeholder="Grad Year" value={formData.gradYear} onChange={handleChange} required type="number" /> <label>Grad Semester</label> <input name="gradSemester" placeholder="Grad Semester" value={formData.gradSemester} onChange={handleChange} maxLength="6" /> <h2>Degrees</h2> {formData.degrees.map((degree, index) => ( <div key={index} className="form-section"> <label>Subject</label> <input name="subject" placeholder="Subject" value={degree.subject} onChange={(e) => handleDegreeChange(index, e)} required /> <label>Degree Type</label> <select name="degreeType" value={degree.degreeType} onChange={(e) => handleDegreeChange(index, e)} required > <option value="">Select Degree Type</option> {degreeTypes.map(type => ( <option key={type} value={type}>{type}</option> ))} </select> <label>Degree Year</label> <input name="degreeYear" type="number" min="1900" max={new Date().getFullYear()} placeholder="Degree Year/Expected Graduation" value={degree.degreeYear} onChange={(e) => handleDegreeChange(index, e)} required /> <label>Degree Description</label> <input name="degreeDescription" placeholder="Degree Description" value={degree.degreeDescription} onChange={(e) => handleDegreeChange(index, e)} maxLength="255" /> <label>Degree Department</label> <input name="degreeDepartment" placeholder="Degree Department" value={degree.degreeDepartment} onChange={(e) => handleDegreeChange(index, e)} /> <label>Degree College</label> <input name="degreeCollege" placeholder="Degree College" value={degree.degreeCollege} onChange={(e) => handleDegreeChange(index, e)} /> <button type="button" onClick={() => handleDeleteDegree(index)}>Delete Degree</button> </div> ))} <button type="button" onClick={handleAddDegree}>Add Degree</button> {/* Add similar sections for addresses and contacts */} {/* Example of addresses: */} <h2>Addresses</h2> {formData.addresses.map((address, index) => ( <div key={index} className="form-section"> <label>Address Line 1</label> <input name="address1" placeholder="Address Line 1" value={address.address1} onChange={(e) => handleAddressChange(index, e)} required /> {/* More address fields here */} <button type="button" onClick={() => handleDeleteAddress(index)}>Delete Address</button> </div> ))} <button type="button" onClick={handleAddAddress}>Add Address</button> {/* Contacts and Involvements sections here, with similar structures */} <button type="button" onClick={handleSave}>Save User Information</button> <button type="button" onClick={handleClear}>Clear</button> </form> </div> ); }; export default MyAccountAdminView;