From b91252cd838396a34913885a7001f5e64c2e7050 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Mon, 20 Aug 2018 09:41:22 +0800 Subject: [PATCH 1/3] Set event end validation as nullable - fix #14 --- app/Http/Controllers/Api/EventsController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Api/EventsController.php b/app/Http/Controllers/Api/EventsController.php index 28e8d69..9307860 100644 --- a/app/Http/Controllers/Api/EventsController.php +++ b/app/Http/Controllers/Api/EventsController.php @@ -153,7 +153,7 @@ class EventsController extends Controller $this->validate($request, [ 'id' => 'required|numeric|exists:user_events,id', 'start' => 'required|date|date_format:Y-m-d H:i:s', - 'end' => 'date|date_format:Y-m-d H:i:s', + 'end' => 'nullable|date|date_format:Y-m-d H:i:s', ]); $event = Event::findOrFail($request->get('id')); From 0f8859241b89162d3c8c03e3a38bc9b9a529424c Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Mon, 20 Aug 2018 10:14:43 +0800 Subject: [PATCH 2/3] Timed events can be set as all-day event --- app/Http/Controllers/Api/EventsController.php | 14 +++++--- resources/views/users/calendar.blade.php | 2 +- tests/Feature/Api/ApiEventsTest.php | 48 +++++++++++++++++++++------ 3 files changed, 49 insertions(+), 15 deletions(-) diff --git a/app/Http/Controllers/Api/EventsController.php b/app/Http/Controllers/Api/EventsController.php index 9307860..4eb5eea 100644 --- a/app/Http/Controllers/Api/EventsController.php +++ b/app/Http/Controllers/Api/EventsController.php @@ -150,10 +150,11 @@ class EventsController extends Controller public function reschedule(Request $request) { - $this->validate($request, [ - 'id' => 'required|numeric|exists:user_events,id', - 'start' => 'required|date|date_format:Y-m-d H:i:s', - 'end' => 'nullable|date|date_format:Y-m-d H:i:s', + $request->validate([ + 'id' => 'required|numeric|exists:user_events,id', + 'start' => 'required|date|date_format:Y-m-d H:i:s', + 'end' => 'nullable|date|date_format:Y-m-d H:i:s', + 'is_allday' => 'required|in:true,false', ]); $event = Event::findOrFail($request->get('id')); @@ -165,6 +166,11 @@ class EventsController extends Controller $event->is_allday = false; } + if ($request->get('is_allday') == 'true') { + $event->end = null; + $event->is_allday = true; + } + $event->save(); $response = [ diff --git a/resources/views/users/calendar.blade.php b/resources/views/users/calendar.blade.php index 2d3af4c..4edd4c0 100644 --- a/resources/views/users/calendar.blade.php +++ b/resources/views/users/calendar.blade.php @@ -300,7 +300,7 @@ $.ajax({ url: "{{ route('api.events.reschedule') }}", method: "PATCH", - data: { id: calEvent.id, start: start, end: end }, + data: { id: calEvent.id, start: start, end: end, is_allday: calEvent.allDay }, success: function(response){ if(response.message != 'event.rescheduled') revertFunc(); diff --git a/tests/Feature/Api/ApiEventsTest.php b/tests/Feature/Api/ApiEventsTest.php index de68bb8..52647e9 100644 --- a/tests/Feature/Api/ApiEventsTest.php +++ b/tests/Feature/Api/ApiEventsTest.php @@ -137,25 +137,53 @@ class ApiEventsTest extends TestCase $event = factory(Event::class)->create(['user_id' => $user->id, 'start' => '2016-11-17 12:00:00']); $this->patchJson(route('api.events.reschedule'), [ - 'id' => $event->id, - 'start' => '2016-11-07 13:00:00', - 'end' => '2016-11-07 15:00:00', + 'id' => $event->id, + 'start' => '2016-11-07 13:00:00', + 'end' => '2016-11-07 15:00:00', + 'is_allday' => 'false', ], [ 'Authorization' => 'Bearer '.$user->api_token, ]); - // $this->dump(); $this->seeStatusCode(200); + $this->seeJson(['message' => trans('event.rescheduled')]); + $this->seeInDatabase('user_events', [ + 'id' => $event->id, + 'user_id' => $user->id, + 'start' => '2016-11-07 13:00:00', + 'end' => '2016-11-07 15:00:00', + 'is_allday' => 0, + ]); + } - $this->seeJson([ - 'message' => trans('event.rescheduled'), + /** @test */ + public function event_can_be_set_as_all_day_event() + { + $user = factory(User::class)->create(); + $event = factory(Event::class)->create([ + 'user_id' => $user->id, + 'start' => '2016-11-17 12:00:00', + 'end' => '2016-11-17 14:00:00', + 'is_allday' => 0, ]); + $this->patchJson(route('api.events.reschedule'), [ + 'id' => $event->id, + 'start' => '2016-11-07 13:00:00', + 'end' => '2016-11-07 15:00:00', + 'is_allday' => 'true', + ], [ + 'Authorization' => 'Bearer '.$user->api_token, + ]); + + $this->seeStatusCode(200); + $this->seeJson(['message' => trans('event.rescheduled')]); $this->seeInDatabase('user_events', [ - 'id' => $event->id, - 'user_id' => $user->id, - 'start' => '2016-11-07 13:00:00', - 'end' => '2016-11-07 15:00:00', + 'id' => $event->id, + 'user_id' => $user->id, + 'start' => '2016-11-07 13:00:00', + 'end' => null, + 'is_allday' => 1, ]); } } From 673372afae41745ed4a760c4c6166fbf44f4de5a Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Mon, 20 Aug 2018 10:57:20 +0800 Subject: [PATCH 3/3] Add notification on calendar actions --- resources/lang/de/event.php | 8 +++++ resources/lang/en/event.php | 8 +++++ resources/lang/id/event.php | 8 +++++ resources/views/users/calendar.blade.php | 51 ++++++++++++++------------------ 4 files changed, 46 insertions(+), 29 deletions(-) create mode 100644 resources/lang/de/event.php create mode 100644 resources/lang/en/event.php create mode 100644 resources/lang/id/event.php diff --git a/resources/lang/de/event.php b/resources/lang/de/event.php new file mode 100644 index 0000000..c2a1eb5 --- /dev/null +++ b/resources/lang/de/event.php @@ -0,0 +1,8 @@ + 'Event created.', + 'updated' => 'Event updated.', + 'deleted' => 'Event deleted.', + 'rescheduled' => 'Event has been rescheduled.', +]; diff --git a/resources/lang/en/event.php b/resources/lang/en/event.php new file mode 100644 index 0000000..c2a1eb5 --- /dev/null +++ b/resources/lang/en/event.php @@ -0,0 +1,8 @@ + 'Event created.', + 'updated' => 'Event updated.', + 'deleted' => 'Event deleted.', + 'rescheduled' => 'Event has been rescheduled.', +]; diff --git a/resources/lang/id/event.php b/resources/lang/id/event.php new file mode 100644 index 0000000..8541e47 --- /dev/null +++ b/resources/lang/id/event.php @@ -0,0 +1,8 @@ + 'Event berhasil diinput.', + 'updated' => 'Event berhasil diupdate.', + 'deleted' => 'Event berhasil dihapus.', + 'rescheduled' => 'Jadwal event berhasil diubah.', +]; diff --git a/resources/views/users/calendar.blade.php b/resources/views/users/calendar.blade.php index 4edd4c0..feb4df2 100644 --- a/resources/views/users/calendar.blade.php +++ b/resources/views/users/calendar.blade.php @@ -17,7 +17,6 @@ -