@@ -9,7 +9,12 @@ import {
99 updateDoc ,
1010 addDoc
1111} from 'firebase/firestore'
12- import { ref , uploadBytes , getDownloadURL } from 'firebase/storage'
12+ import {
13+ ref ,
14+ uploadBytes ,
15+ getDownloadURL ,
16+ deleteObject
17+ } from 'firebase/storage'
1318import { db , storage } from '@/app/services/initializeFirebase.js'
1419import styles from '@/app/styles/PlayerManagement.module.css'
1520import Image from 'next/image'
@@ -369,6 +374,53 @@ export default function PlayerManagement() {
369374 }
370375 }
371376
377+ const handleDeleteScoutingReport = async ( ) => {
378+ if ( ! selectedTeam || ! selectedReport ) return
379+
380+ try {
381+ setLoading ( true )
382+
383+ // Delete PDF from Firebase Storage
384+ if ( selectedReport . pdfUrl ) {
385+ const pdfRef = ref ( storage , selectedReport . pdfUrl )
386+ await deleteObject ( pdfRef )
387+ }
388+
389+ // Remove report from team's scoutingReports array, matching by pdfUrl to handle duplicate names
390+ const teamRef = doc ( db , 'teams' , selectedTeam )
391+ const teamSnapshot = await getDocs (
392+ query ( collection ( db , 'teams' ) , where ( '__name__' , '==' , selectedTeam ) )
393+ )
394+
395+ if ( teamSnapshot . empty ) {
396+ setMessage ( 'Selected team not found.' )
397+ setLoading ( false )
398+ return
399+ }
400+
401+ const teamData = teamSnapshot . docs [ 0 ] . data ( )
402+ const updatedReports = ( teamData . scoutingReports || [ ] ) . filter (
403+ ( report ) => report . pdfUrl !== selectedReport . pdfUrl
404+ )
405+
406+ await updateDoc ( teamRef , {
407+ scoutingReports : updatedReports
408+ } )
409+
410+ setMessage (
411+ `Scouting report for ${ selectedReport . firstName } ${ selectedReport . lastName } deleted successfully!`
412+ )
413+ setSelectedReport ( null )
414+ setShowPdfViewer ( false )
415+ fetchPlayers ( selectedTeam )
416+ } catch ( err ) {
417+ console . error ( 'Error deleting scouting report:' , err )
418+ setMessage ( 'Failed to delete scouting report. ' + err . message )
419+ } finally {
420+ setLoading ( false )
421+ }
422+ }
423+
372424 const handleAddPlayer = async ( ) => {
373425 if ( ! selectedTeam ) {
374426 setMessage ( 'Please select a team first.' )
@@ -1610,6 +1662,13 @@ export default function PlayerManagement() {
16101662 >
16111663 View Scouting Report
16121664 </ button >
1665+ < button
1666+ className = { styles . deleteButton }
1667+ onClick = { handleDeleteScoutingReport }
1668+ disabled = { loading }
1669+ >
1670+ { loading ? 'Deleting...' : 'Delete Report' }
1671+ </ button >
16131672 </ div >
16141673 ) }
16151674
0 commit comments