swimmingArt/public/js/coach.js

77 lines
2.1 KiB
JavaScript

document.getElementById('rutinaForm').addEventListener('submit', async function (e) {
e.preventDefault();
const title = document.getElementById('title').value.trim();
const duration = parseInt(document.getElementById('duration').value.trim());
const language = document.getElementById('language').value;
const nombreCompetencia = document.getElementById('nombreCompetencia').value.trim();
const tipoCompetencia = document.getElementById('tipoCompetencia').value;
const modalidad = document.getElementById('modalidad').value;
const musicFile = document.getElementById('music').files[0];
if (!title || isNaN(duration) || !language || !nombreCompetencia || !tipoCompetencia || !modalidad) {
alert("Completa todos los campos.");
return;
}
let musicUrl = "";
if (musicFile) {
const formData = new FormData();
formData.append('music', musicFile);
try {
const uploadRes = await fetch('/routines/upload/music', {
method: 'POST',
body: formData
});
const uploadData = await uploadRes.json();
if (!uploadRes.ok) {
throw new Error(uploadData.error || 'Error al subir archivo');
}
musicUrl = uploadData.url;
} catch (err) {
console.error('❌ Error al subir música:', err);
alert('Error al subir el archivo de música. Intenta de nuevo.');
return;
}
}
const routine = {
title,
duration,
language,
nombreCompetencia,
tipoCompetencia,
modalidad,
participantes: [],
createdBy: "coach-id-ejemplo",
musicUrl,
elements: [],
formaciones: []
};
try {
const res = await fetch('/routines', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(routine)
});
const data = await res.json();
if (res.ok) {
alert("Rutina guardada correctamente.");
window.location.href = "equipoDisponibles.html";
} else {
alert("Error al guardar la rutina: " + (data.message || "Error desconocido"));
}
} catch (err) {
console.error(err);
alert("Error al guardar la rutina.");
}
});