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, ]); } }