@@ -391,22 +414,18 @@ const LeaveManagement = () => {
           pl={200}
           style={{
             display: 'flex',
-            // alignItems: 'end',
             justifyContent: 'end',
           }}
         >
           
-            {/* 
-              
-             */}
+            }
+            >
+              Export Excel
+            
           
         
       
diff --git a/FRONTEND/src/pages/Profile/Profile.tsx b/FRONTEND/src/pages/Profile/Profile.tsx
index 92a78b8..14c6210 100644
--- a/FRONTEND/src/pages/Profile/Profile.tsx
+++ b/FRONTEND/src/pages/Profile/Profile.tsx
@@ -1,26 +1,34 @@
 import {
+  deleteFile,
+  getAllFilesInProfiles,
   getProfilesData,
   listUserTechnical,
+  updateProfileFolder,
   updateProfilesData,
   updateUserTechnical,
 } from '@/api/Admin'
 import { changePassword } from '@/api/Auth'
+import DataTableAll from '@/components/DataTable/DataTable'
 import PasswordRequirementInput from '@/components/PasswordRequirementInput/PasswordRequirementInput'
 import ProjectInvolvement from '@/components/ProjectInvolvement/ProjectInvolvement'
 import { logout } from '@/rtk/dispatches/auth'
+import { Xdelete } from '@/rtk/helpers/CRUD'
 import { get, post, postImage } from '@/rtk/helpers/apiService'
 import { requirementsPassword } from '@/rtk/helpers/variables'
 import { useAppDispatch, useAppSelector } from '@/rtk/hooks'
-import { getUser } from '@/rtk/localStorage'
+import { getAccessToken, getUser } from '@/rtk/localStorage'
 import { success } from '@/rtk/slices/auth'
 import {
   Avatar,
   Box,
   Button,
+  FileInput,
   Flex,
+  Group,
   Loader,
   Modal,
   PasswordInput,
+  Stack,
   Text,
   TextInput,
   Title,
@@ -28,18 +36,25 @@ import {
 import { notifications } from '@mantine/notifications'
 import {
   IconExchange,
+  IconFolder,
   IconPasswordUser,
   IconUserCode,
   IconUserCog,
 } from '@tabler/icons-react'
+import axios from 'axios'
+import moment from 'moment'
 import { useCallback, useEffect, useState } from 'react'
 import { useNavigate } from 'react-router-dom'
 import classes from './Profile.module.css'
-import DataTableAll from '@/components/DataTable/DataTable'
-import moment from 'moment'
 
 const isCompactMenu = false
 
+type TFileProfile = {
+  label: string
+  type: string
+  value: string
+  children?: TFileProfile[]
+}
 const Profile = () => {
   const user = useAppSelector((state) => state.authentication.user)
   const userData = getUser()
@@ -122,12 +137,102 @@ const Profile = () => {
     return []
   }
 
+  const [cv, setCv] = useState
()
+  const [idCard, setIdCard] = useState()
+  const [transcript, setTranscript] = useState()
+  const [universityDiploma, setUniversityDiploma] = useState()
+  const [otherFiles, setOtherFiles] = useState([{ file: null, type: '' }])
+  const [data, setData] = useState([])
+  const [openedProfile, setOpenedProfile] = useState(false)
+  const handleOtherFileChange = (
+    index: number,
+    field: string,
+    value: File | string,
+  ) => {
+    const updatedFiles: any = [...otherFiles]
+    updatedFiles[index][field] = value
+    setOtherFiles(updatedFiles)
+  }
+
+  const addOtherFileInput = () => {
+    setOtherFiles([...otherFiles, { file: null, type: '' }])
+  }
+
+  const handleSubmit = async (e: any) => {
+    e.preventDefault()
+    const formData = new FormData()
+
+    // Append each selected file to FormData
+    for (let i = 0; i < otherFiles.length; i++) {
+      if (otherFiles[i].file !== null && otherFiles[i].type !== '') {
+        formData.append(
+          'files[]',
+          handleChangeFileName(otherFiles[i].file!, `__${otherFiles[i].type}`)!,
+        )
+      }
+    }
+
+    if (cv) {
+      formData.append('files[]', cv)
+    }
+
+    if (idCard) {
+      formData.append('files[]', idCard)
+    }
+
+    if (transcript) {
+      formData.append('files[]', transcript)
+    }
+
+    if (universityDiploma) {
+      formData.append('files[]', universityDiploma)
+    }
+
+    const token = await getAccessToken()
+    try {
+      const response = await axios.post(updateProfileFolder, formData, {
+        headers: {
+          'Content-Type': 'multipart/form-data',
+          Authorization: `Bearer ${token}`,
+        },
+      })
+      
+      if(response.status === 200){
+        getAllFile()
+        setOtherFiles([])
+      }
+    } catch (error) {
+      console.error('Error uploading files', error)
+    }
+  }
+
+  const getAllFile = async () => {
+    try {
+      const res = await get(getAllFilesInProfiles, {
+        root_folder: '/storage/profiles/' + JSON.parse(getUser())?.user?.name,
+      })
+      if (res.status === true) {
+        setData(res.data)
+      }
+    } catch (error) {
+      console.log(error)
+    }
+  }
+
+  const removeFile = async (url: string) => {
+    try {
+      await Xdelete(deleteFile, {file_url: url}, getAllFile)
+    } catch (error) {
+      console.log(error)
+    }
+  }
   useEffect(() => {
     const fetchData = async () => {
       const result = await getListProfilesData()
       setDataProfile(result ?? [])
     }
     fetchData()
+    getAllFile()
   }, [])
 
   const handleChangePassword = async () => {
@@ -201,6 +306,24 @@ const Profile = () => {
     dispatch(logout(navigate))
   }, [dispatch, navigate])
 
+  const handleChangeFileName = (e: File, newName: string) => {
+    const originalFile = e // Get the original file
+    const extend = originalFile.name.split('.')[1]
+    if (originalFile) {
+      const newFileName = `${newName}.${extend}` // Create new file name
+      const newFile = new File([originalFile], newFileName, {
+        type: originalFile.type,
+      }) // Create new file object
+
+      return newFile // Save the new file object for further processing
+    }
+  }
+
+  const checkFileExist = (nameField: string) => {
+    const file = data.find((f) => f.label.includes(nameField))
+    return file
+  }
+
   return (
     
       
@@ -329,6 +452,15 @@ const Profile = () => {
                   Your Technical
                 
               )}
+
+              
             
           
 
@@ -437,6 +569,173 @@ const Profile = () => {
             
           
         
+
+        
 {
+            setOpenedProfile(false)
+          }}
+        >
+          
+            
+          
+        
       
     
   )
diff --git a/FRONTEND/src/pages/TicketsManagement/TicketsManagement.tsx b/FRONTEND/src/pages/TicketsManagement/TicketsManagement.tsx
index 7f72d98..e5584dd 100755
--- a/FRONTEND/src/pages/TicketsManagement/TicketsManagement.tsx
+++ b/FRONTEND/src/pages/TicketsManagement/TicketsManagement.tsx
@@ -509,7 +509,7 @@ const TicketsManagement = () => {