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 && (
-
);
- }
- )}
+ })}
))}
@@ -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