'edit populates'
4 files changed, +55 -5
+1-1Client/src/views/admin/meeting/View.js
| @@ -294,7 +294,7 @@ const View = () => { | ||
| 294 | 294 | )} |
| 295 | 295 | {/* Delete model */} |
| 296 | 296 | <CommonDeleteModel isOpen={deleteMany} onClose={() => setDeleteMany(false)} type="Meetings" handleDeleteData={handleDeleteMeeting} ids={params.id} /> |
| 297 | - <AddMeeting isOpen={edit} fetchData={fetchData} onClose={() => setEdit(false)} userAction={'edit'} id={params.id} /> | |
| 297 | + <AddMeeting isOpen={edit} fetchData={fetchData} onClose={() => setEdit(false)} userAction={'edit'} id={params.id} init={data} /> | |
| 298 | 298 | </> |
| 299 | 299 | ); |
| 300 | 300 | }; |
+37-2Client/src/views/admin/meeting/components/Addmeeting.js
| @@ -10,6 +10,7 @@ import { LiaMousePointerSolid } from 'react-icons/lia'; | ||
| 10 | 10 | import { useSelector } from 'react-redux'; |
| 11 | 11 | import { toast } from 'react-toastify'; |
| 12 | 12 | import { MeetingSchema } from 'schema'; |
| 13 | +import { putApi } from 'services/api'; | |
| 13 | 14 | import { getApi, postApi } from 'services/api'; |
| 14 | 15 | |
| 15 | 16 | const AddMeeting = (props) => { |
| @@ -41,12 +42,25 @@ const AddMeeting = (props) => { | ||
| 41 | 42 | initialValues: initialValues, |
| 42 | 43 | validationSchema: MeetingSchema, |
| 43 | 44 | onSubmit: (values, { resetForm }) => { |
| 44 | - AddData(); | |
| 45 | + console.log('saving'); | |
| 46 | + if (props.id) { | |
| 47 | + editData(); | |
| 48 | + } else { | |
| 49 | + AddData(); | |
| 50 | + } | |
| 45 | 51 | }, |
| 46 | 52 | }); |
| 47 | 53 | |
| 48 | 54 | const { errors, touched, values, handleBlur, handleChange, handleSubmit, setFieldValue } = formik; |
| 49 | 55 | |
| 56 | + useEffect(() => { | |
| 57 | + values.agenda = props.init?.agenda || ''; | |
| 58 | + values.location = props.init?.location || ''; | |
| 59 | + values.dateTime = props.init?.dateTime || ''; | |
| 60 | + values.notes = props.init?.notes || ''; | |
| 61 | + values.related = props.init?.related; | |
| 62 | + }, [props.init]); | |
| 63 | + | |
| 50 | 64 | const AddData = async () => { |
| 51 | 65 | try { |
| 52 | 66 | setIsLoding(true); |
| @@ -67,6 +81,27 @@ const AddMeeting = (props) => { | ||
| 67 | 81 | } |
| 68 | 82 | }; |
| 69 | 83 | |
| 84 | + const editData = async () => { | |
| 85 | + try { | |
| 86 | + setIsLoding(true); | |
| 87 | + let response = await putApi('api/meeting/edit', { | |
| 88 | + ...values, | |
| 89 | + _id: props.id, | |
| 90 | + }); | |
| 91 | + if (response.status === 200) { | |
| 92 | + props.onClose(); | |
| 93 | + formik.resetForm(); | |
| 94 | + props.setAction((pre) => !pre); | |
| 95 | + toast.success(`Updated the meeting 😄`); | |
| 96 | + } | |
| 97 | + } catch (e) { | |
| 98 | + console.log(e); | |
| 99 | + toast.error('Failed to update meeting 😞'); | |
| 100 | + } finally { | |
| 101 | + setIsLoding(false); | |
| 102 | + } | |
| 103 | + }; | |
| 104 | + | |
| 70 | 105 | const fetchAllData = async () => {}; |
| 71 | 106 | |
| 72 | 107 | useEffect(() => {}, [props.id, values.related]); |
| @@ -85,7 +120,7 @@ const AddMeeting = (props) => { | ||
| 85 | 120 | <Modal onClose={onClose} isOpen={isOpen} isCentered> |
| 86 | 121 | <ModalOverlay /> |
| 87 | 122 | <ModalContent height={'580px'}> |
| 88 | - <ModalHeader>Add Meeting </ModalHeader> | |
| 123 | + <ModalHeader>{props.init ? 'Edit' : 'Add'} Meeting </ModalHeader> | |
| 89 | 124 | <ModalCloseButton /> |
| 90 | 125 | <ModalBody overflowY={'auto'} height={'400px'}> |
| 91 | 126 | {/* Contact Model */} |
+1-1server/controllers/meeting/_routes.js
| @@ -8,7 +8,7 @@ router.get("/", auth, meeting.index); | ||
| 8 | 8 | router.post("/add", auth, meeting.add); |
| 9 | 9 | // router.post("/addMany", auth, meeting.addMany); |
| 10 | 10 | router.get("/view/:id", auth, meeting.view); |
| 11 | -// router.put("/edit/:id", auth, meeting.edit); | |
| 11 | +router.put("/edit/:id", auth, meeting.edit); | |
| 12 | 12 | // router.put("/changeStatus/:id", auth, meeting.changeStatus); |
| 13 | 13 | router.delete("/delete/:id", auth, meeting.deleteData); |
| 14 | 14 | router.post("/deleteMany", auth, meeting.deleteMany); |
+16-1server/controllers/meeting/meeting.js
| @@ -93,4 +93,19 @@ const deleteMany = async (req, res) => { | ||
| 93 | 93 | } |
| 94 | 94 | }; |
| 95 | 95 | |
| 96 | -module.exports = { add, index, view, deleteData, deleteMany }; | |
| 96 | +const edit = async (req, res) => { | |
| 97 | + try { | |
| 98 | + let result = await MeetingHistory.findOneAndUpdate( | |
| 99 | + { _id: req.params.id }, | |
| 100 | + { $set: req.body }, | |
| 101 | + { new: true } | |
| 102 | + ); | |
| 103 | + | |
| 104 | + res.status(200).json(result); | |
| 105 | + } catch (err) { | |
| 106 | + console.error("Failed to create task:", err); | |
| 107 | + res.status(400).json({ error: "Failed to create task : ", err }); | |
| 108 | + } | |
| 109 | +}; | |
| 110 | + | |
| 111 | +module.exports = { add, index, view, deleteData, deleteMany, edit }; |