diff --git a/components/publisher/PublisherShiftsModal.js b/components/publisher/PublisherShiftsModal.js index f00a4e4..167ed55 100644 --- a/components/publisher/PublisherShiftsModal.js +++ b/components/publisher/PublisherShiftsModal.js @@ -70,6 +70,61 @@ const PublisherShiftsModal = ({ publisher, _shifts, onClose, date, onAssignmentC }; }, [onClose]); // Include onClose in the dependency array + function getColorForShift(shift) { + const assignedCount = shift.assignedCount || 0; // Assuming each shift has an assignedCount property + switch (assignedCount) { + case 0: return 'bg-blue-300'; + case 1: return 'bg-green-300'; + case 2: return 'bg-yellow-300'; + case 3: return 'bg-orange-300'; + case 4: return 'bg-red-200'; + default: return 'bg-gray-300'; + } + } + + //ToDo: DRY - move to common + const addAssignment = async (publisher, shiftId) => { + try { + console.log(`calendar.idx: new assignment for publisher ${publisher.id} - ${publisher.firstName} ${publisher.lastName}`); + const newAssignment = { + publisher: { connect: { id: publisher.id } }, + shift: { connect: { id: shiftId } }, + isConfirmed: true + }; + const { data } = await axiosInstance.post("/api/data/assignments", newAssignment); + + // Update the 'publisher' property of the returned data with the full publisher object + data.publisher = publisher; + data.shift = shifts.find(shift => shift.id === shiftId); + publisher.assignments = [...publisher.assignments, data]; + // handleAssignmentChange(publisher.id, 'add'); + + setAssignments(prevAssignments => [...prevAssignments, data]); + if (onAssignmentChange) { onAssignmentChange(publisher.id, 'add'); } + } catch (error) { + console.error("Error adding assignment:", error); + } + }; + const removeAssignment = async (publisher, shiftId) => { + try { + const assignment = publisher.assignments.find(ass => ass.shift.id === shiftId); + console.log(`calendar.idx: remove assignment for shift ${shiftId}`); + const { data } = await axiosInstance.delete(`/api/data/assignments/${assignment.id}`); + //remove from local assignments: + publisher.assignments = publisher.assignments.filter(a => a.id !== assignment.id) + // Update local state + setAssignments(prevAssignments => prevAssignments.filter(a => a.id !== assignment.id)); + + // + // handleAssignmentChange(publisher.id, 'remove') + if (onAssignmentChange) { + onAssignmentChange(publisher.id, 'remove') + } + } catch (error) { + console.error("Error removing assignment:", error); + } + } + return (
@@ -98,24 +153,23 @@ const PublisherShiftsModal = ({ publisher, _shifts, onClose, date, onAssignmentC > {common.getTimeRange(shift.startTime, shift.endTime)} {shift.id} - {!assignmentExists && shift.isAvailable && ( - - )} - {assignmentExists && ( - )}
); - } - )} + })}
))} @@ -140,62 +194,10 @@ const PublisherShiftsModal = ({ publisher, _shifts, onClose, date, onAssignmentC ); + + } -function getColorForShift(shift) { - const assignedCount = shift.assignedCount || 0; // Assuming each shift has an assignedCount property - switch (assignedCount) { - case 0: return 'bg-blue-300'; - case 1: return 'bg-green-300'; - case 2: return 'bg-yellow-300'; - case 3: return 'bg-orange-300'; - case 4: return 'bg-red-200'; - default: return 'bg-gray-300'; - } -} - -//ToDo: DRY - move to common -const addAssignment = async (publisher, shiftId) => { - try { - console.log(`calendar.idx: new assignment for publisher ${publisher.id} - ${publisher.firstName} ${publisher.lastName}`); - const newAssignment = { - publisher: { connect: { id: publisher.id } }, - shift: { connect: { id: shiftId } }, - isConfirmed: true - }; - const { data } = await axiosInstance.post("/api/data/assignments", newAssignment); - - // Update the 'publisher' property of the returned data with the full publisher object - data.publisher = publisher; - data.shift = shifts.find(shift => shift.id === shiftId); - publisher.assignments = [...publisher.assignments, data]; - // handleAssignmentChange(publisher.id, 'add'); - - setAssignments(prevAssignments => [...prevAssignments, data]); - if (onAssignmentChange) { onAssignmentChange(publisher.id, 'add'); } - } catch (error) { - console.error("Error adding assignment:", error); - } -}; -const removeAssignment = async (publisher, shiftId) => { - try { - const assignment = publisher.assignments.find(ass => ass.shift.id === shiftId); - console.log(`calendar.idx: remove assignment for shift ${shiftId}`); - const { data } = await axiosInstance.delete(`/api/data/assignments/${assignment.id}`); - //remove from local assignments: - publisher.assignments = publisher.assignments.filter(a => a.id !== assignment.id) - // Update local state - setAssignments(prevAssignments => prevAssignments.filter(a => a.id !== assignment.id)); - - // - // handleAssignmentChange(publisher.id, 'remove') - if (onAssignmentChange) { - onAssignmentChange(publisher.id, 'remove') - } - } catch (error) { - console.error("Error removing assignment:", error); - } -} export default PublisherShiftsModal; \ No newline at end of file