Skip to content

Commit 7743a9e

Browse files
delete scouting report button
1 parent 9b52b41 commit 7743a9e

2 files changed

Lines changed: 82 additions & 1 deletion

File tree

app/player-management/page.js

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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'
1318
import { db, storage } from '@/app/services/initializeFirebase.js'
1419
import styles from '@/app/styles/PlayerManagement.module.css'
1520
import 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

app/styles/PlayerManagement.module.css

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,28 @@
397397
cursor: not-allowed;
398398
}
399399

400+
.deleteButton {
401+
background-color: #e74c3c;
402+
color: white;
403+
border: none;
404+
padding: 8px 16px;
405+
border-radius: 4px;
406+
cursor: pointer;
407+
margin-top: 10px;
408+
width: 100%;
409+
font-size: 14px;
410+
transition: background-color 0.3s ease;
411+
}
412+
413+
.deleteButton:hover {
414+
background-color: #c0392b;
415+
}
416+
417+
.deleteButton:disabled {
418+
background-color: #ccc;
419+
cursor: not-allowed;
420+
}
421+
400422
/* PDF Viewer Overlay */
401423
.pdfOverlay {
402424
position: fixed;

0 commit comments

Comments
 (0)