diff --git a/src/Bundle/ChillCalendarBundle/Controller/CalendarRangeAPIController.php b/src/Bundle/ChillCalendarBundle/Controller/CalendarRangeAPIController.php index 8f1ae2ef6..4ab7add45 100644 --- a/src/Bundle/ChillCalendarBundle/Controller/CalendarRangeAPIController.php +++ b/src/Bundle/ChillCalendarBundle/Controller/CalendarRangeAPIController.php @@ -50,11 +50,11 @@ class CalendarRangeAPIController extends ApiController } if($request->query->has('start') && !$request->query->has('end')) { - $startDate = $request->query->get('start'); - $sql = $sql . ' AND c.startDate > :startDate + INTERVAL "1 DAY"'; - dump($sql); + $copyDate = $request->query->get('start'); + + $sql = $sql . ' AND DATE_DIFF(c.startDate, :copyDate) = 0'; $query = $em ->createQuery($sql) - ->setParameter('startDate', $startDate) + ->setParameter('copyDate', $copyDate) ->setParameter('user', $user); } } else { diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App.vue b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App.vue index f99218141..2f21078bf 100644 --- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App.vue +++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App.vue @@ -310,21 +310,20 @@ export default { toggleWeekends: function() { this.calendarOptions.weekends = !this.calendarOptions.weekends; }, + replaceDate(from, to) { + + const fromDate = new Date(from) + const toDate = new Date(to); + + let newDate = fromDate.setDate(toDate.getDate()); + newDate = new Date(newDate).setMonth(toDate.getMonth()); + newDate = new Date(newDate).setFullYear(toDate.getFullYear()); + + newDate = `${new Date(newDate).toISOString().split('.')[0]}+0000`; + + return newDate; + }, onDateSelect(payload) { - // let events = this.calendarEvents.new.events; - // events.push({ - // start: payload.startStr, - // end: payload.endStr - // }); - // this.calendarEvents.new = { - // events: events, - // borderColor: "#3788d8", - // backgroundColor: '#fffadf', - // textColor: '#444444', - // }; - this.disableCopyDayButton = false; - this.lastNewDate = new Date(payload.startStr); - this.updateEventsSource(); postCalendarRange({ user: { type: 'user', @@ -339,17 +338,6 @@ export default { }).then((_r) => { this.resetCalendar(); }) - payload.event.setProp('textColor', '#444444'); - - patchCalendarRange(payload.event.extendedProps.calendarRangeId, - { - startDate: { - datetime: `${payload.event.start.toISOString().split('.')[0]}+0000`, //should be like "2021-08-20T15:00:00+0200", - }, - endDate: { - datetime: `${payload.event.end.toISOString().split('.')[0]}+0000`, // TODO check if OK with time zone - }, - }).then((_r) => this.resetCalendar()); }, onEventClick(payload) { if (payload.event.extendedProps.myCalendar) { @@ -371,38 +359,49 @@ export default { deleteCalendarRange(payload.extendedProps.calendarRangeId).then(() => { this.resetCalendar(); }) - // console.log(this.myCalendarClickedEvent) - this.openModal(); } }, - // onClickSave(payload) { - // this.flag.loading = true; - // Promise.all(this.$store.state.newCalendarRanges.map(cr => { - // postCalendarRange({ - // user: { - // type: 'user', - // id: window.userId, - // }, - // startDate: { - // datetime: `${cr.start.toISOString().split('.')[0]}+0000`, //should be like "2021-08-20T15:00:00+0200", - isSameDay(date1, date2) { - return date1.getFullYear() === date2.getFullYear() && - date1.getMonth() === date2.getMonth() && - date1.getDate() === date2.getDate(); - }, - isFriday(date) { - return date.getDay() === 5 + onEventDropOrResize(payload) { + patchCalendarRange(payload.event.extendedProps.calendarRangeId, + { + startDate: { + datetime: `${payload.event.start.toISOString().split('.')[0]}+0000`, //should be like "2021-08-20T15:00:00+0200", + }, + endDate: { + datetime: `${payload.event.end.toISOString().split('.')[0]}+0000`, // TODO check if OK with time zone + }, + }).then((_r) => this.resetCalendar()); }, + // isSameDay(date1, date2) { + // return date1.getFullYear() === date2.getFullYear() && + // date1.getMonth() === date2.getMonth() && + // date1.getDate() === date2.getDate(); + // }, + // isFriday(date) { + // return date.getDay() === 5 + // }, copyDay() { - const fromDate = new Date(this.copyFrom).toISOString(); - const toDate = new Date(this.copyTo).toISOString(); - - fetchCalendarRangesByUser(this.userId, fromDate) + const dateToFetch = new Date(this.copyFrom).toISOString(); + fetchCalendarRangesByUser(this.userId, dateToFetch) .then((ranges) => { - console.log(ranges.results); - // ranges.results.foreach() + ranges.results.forEach((range) => { + postCalendarRange({ + user: { + type: 'user', + id: range.user.id, + }, + startDate: { + datetime: this.replaceDate(range.startDate.datetime, this.copyTo), //should be like "2021-08-20T15:00:00+0200", + }, + endDate: { + datetime: this.replaceDate(range.endDate.datetime, this.copyTo), + }, + }) + .then((_r) => this.resetCalendar()); + }) }) + // if (this.calendarEvents.new.events.length > 0) { // // Create the copied events // let increment = !this.calendarOptions.weekends && this.isFriday(this.lastNewDate) ? 24*60*60*1000*3 : 24*60*60*1000; diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/_api/api.js b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/_api/api.js index 852750f29..cc101f9cd 100644 --- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/_api/api.js +++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/_api/api.js @@ -17,6 +17,8 @@ const fetchCalendarRangesByUser = (userId, startDate = null, endDate = null) => if (null !== startDate && null !== endDate) { url = `/api/1.0/calendar/calendar-range-available.json?user=${userId}&start=${startDate}&end=${endDate}`; + } else if (null !== startDate) { + url = `/api/1.0/calendar/calendar-range-available.json?user=${userId}&start=${startDate}`; } else { url = `/api/1.0/calendar/calendar-range-available.json?user=${userId}`; }