diff --git a/src/pages/calendar/TheCalendar.vue b/src/pages/calendar/TheCalendar.vue index 198af2b..0856765 100644 --- a/src/pages/calendar/TheCalendar.vue +++ b/src/pages/calendar/TheCalendar.vue @@ -31,7 +31,6 @@ :selected-event-data="selectedEvent" :event-types="eventTypes" @clear-selected-event-data="clearSelectedEvent" - @update-events="fetchEventsData" @close-change-form="setChangeFormState" ) base-modal( @@ -71,7 +70,7 @@ export default { showModal: false, timeInformation: { dayStartTime: "08:00", - dayEndTime: "20:00", + dayEndTime: "24:00", }, eventsData: [], employeesData: [], @@ -126,6 +125,7 @@ export default { }, closeFormCreateEvent() { this.isOpenForm = false; + this.fetchEventsData(); }, setChangeFormState() { this.changeFormWasClosed = true; @@ -153,6 +153,7 @@ export default { if (this.showModal === false) { this.setChangeFormState(); this.clearSelectedEvent(); + this.fetchEventsData(); } }, }, diff --git a/src/pages/calendar/components/CalendarDeleteModal.vue b/src/pages/calendar/components/CalendarDeleteModal.vue index d76f756..76981f1 100644 --- a/src/pages/calendar/components/CalendarDeleteModal.vue +++ b/src/pages/calendar/components/CalendarDeleteModal.vue @@ -38,8 +38,8 @@ export default { closeModal: Function, }, methods: { - deleteEvent() { - fetchWrapper.del(`registry/event/${this.ownerEvent.id}/delete/`); + async deleteEvent() { + await fetchWrapper.del(`registry/event/${this.ownerEvent.id}/delete/`); this.closeModal(); }, }, diff --git a/src/pages/calendar/components/CalendarFormAddEvent.vue b/src/pages/calendar/components/CalendarFormAddEvent.vue index e4e5879..25b337c 100644 --- a/src/pages/calendar/components/CalendarFormAddEvent.vue +++ b/src/pages/calendar/components/CalendarFormAddEvent.vue @@ -79,6 +79,7 @@ export default { BaseInputTime, BaseCustomSelect, }, + emits: ["clear-selected-event-data", "close-change-form"], props: { closeForm: Function, ownersData: { @@ -194,7 +195,11 @@ export default { this.eventDate === start.format("YYYY-MM-DD") && this.startTime === start.format("HH:mm") && this.endTime === end.format("HH:mm") && - this.kind.label === this.selectedEventData.kind + this.kind.label === this.selectedEventData.kind && + this.employees.employee.id === + this.personId(this.selectedEventData.employees, "employee") && + this.members.person.id === + this.personId(this.selectedEventData.members, "person") ) { return true; } @@ -287,7 +292,7 @@ export default { trimMemberName(lastName, firsName, patronymic) { return `${lastName} ${firsName} ${patronymic}`; }, - sendEventData() { + async sendEventData() { this.eventData = { start: this.mergeDate(this.eventDate, this.startTime), end: this.mergeDate(this.eventDate, this.endTime), @@ -297,11 +302,11 @@ export default { ], members: [this.findPerson(this.membersData, this.members, "person")], }; - this.postCreateEvent(this.eventData); + await this.postCreateEvent(this.eventData); this.clearForm(); this.eventData = {}; }, - updateEventData() { + async updateEventData() { this.eventData = { start: this.mergeDate(this.eventDate, this.startTime), end: this.mergeDate(this.eventDate, this.endTime), @@ -311,7 +316,7 @@ export default { ], members: [this.findPerson(this.membersData, this.members, "person")], }; - this.postUpdateEvent(this.id, this.eventData); + await this.postUpdateEvent(this.id, this.eventData); this.clearForm(); this.eventData = {}; }, @@ -338,15 +343,29 @@ export default { if (object.id) returnedData.id = object.id; return returnedData; }, - postCreateEvent(event) { - fetchWrapper - .post("registry/event/create/", event) - .then(this.$emit("update-events")); + async postCreateEvent(event) { + await fetchWrapper.post("registry/event/create/", event); }, - postUpdateEvent(id, event) { - fetchWrapper - .post(`registry/event/${id}/update/`, event) - .then(this.$emit("update-events")); + async postUpdateEvent(id, event) { + await fetchWrapper.post(`registry/event/${id}/update/`, event); + }, + personId(object, field) { + if (object) { + let foundPerson = {}; + if (field === "employee") { + foundPerson = object.find(({ role }) => role === this.EMPLOYEE_TYPE); + } + if (field === "person") { + if (object.length > 1) { + foundPerson = object.find(({ role }) => role === this.MEMBER_TYPE); + } + foundPerson = object[0]; + } + let { + [field]: { id }, + } = foundPerson; + return id; + } }, }, watch: { diff --git a/src/shared/fetchWrapper.js b/src/shared/fetchWrapper.js index 073c009..1e62fdc 100644 --- a/src/shared/fetchWrapper.js +++ b/src/shared/fetchWrapper.js @@ -13,7 +13,6 @@ function handleRequest(method, url, headers, attempts, body) { }) .then((res) => { if (res._bodyText) return res.json(); - return res.ok; }) .catch((err) => { console.log(err);