Integrasi FullCalendar di NuxtJS dan Laravel API (Part 1)

Bismillahirrahmanirrahim,

Pada tutorial ini, saya akan mencoba untuk mengintegrasikan full-calendar di NuxtJS dan Laravel API.

pada contoh ini, saya akan mengimplementasikan add event, update event dan delete event di full-calendar dengan NuxtJS sebagai Frontend dan Laravel sebagai backend-nya.

Step 1: Install Laravel sebagai API

kita perlu menjalankan perintah untuk membuat laravel project.

composer create-project --prefer-dist laravel/laravel laravelFullCalender

Step 2: Koneksi ke Database

Langkah selanjutnya, kita set database untuk aplikasi kita, buka file .env pada project, dan set koneksi database disini.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_fullcalendar
DB_USERNAME=USERNAME_DATABASE_ANDA
DB_PASSWORD=PASSWORD_DATABASE_ANDA

Step 3: Membuat Migration

php artisan make:migration create_events_table 

sekarang buka file migration pada folder database/migrations/ kemudian tambahkan kode berikut.

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateEventsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('events', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->date('start_date');
            $table->date('end_date');
            $table->time('start_time');
            $table->time('end_time');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('events');
    }
}

kemudian jalankan migration

php artisan migrate

Step 4: Membuat Model

untuk membuat Model di laravel anda bisa menggunakan artisan command berikut:

php artisan make:model Event

perintah diatas akan membuat sebuah file baru pada folder App/Models dengan nama Event.php

buka model Event.php kemudian update menjadi seperti berikut:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Event extends Model
{
    use HasFactory;

    protected $fillable = [
        'title','start_date','end_date','start_time','end_time'
    ];
}

Step 5: Membuat Dummy data Event

Sekarang saya akan membuat sebuah data dummy untuk tabel Events, jadi kita akan menambahkan data dummy melalui seeder, jalankan perintah berikut:

php artisan make:seeder EventSeeder

setelah menjalankan perintah diatas, buka file pada folder database/seeds/EventSeeder.php dan tambahkan code berikut:

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use App\Models\Event;

class EventSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $data = [
        	['title'=>'Demo Event-1', 'start_date'=>'2022-07-11', 'end_date'=>'2022-07-12','start_time'=>'09:00','end_time'=>'10:00'],
        	['title'=>'Demo Event-2', 'start_date'=>'2022-07-11', 'end_date'=>'2022-07-13','start_time'=>'08:00','end_time'=>'11:00'],
        	['title'=>'Demo Event-3', 'start_date'=>'2022-07-14', 'end_date'=>'2022-07-14','start_time'=>'13:00','end_time'=>'14:00'],
        	['title'=>'Demo Event-3', 'start_date'=>'2022-07-17', 'end_date'=>'2022-07-17','start_time'=>'11:00','end_time'=>'15:00'],
        ];
        foreach ($data as $key => $value) {
        	Event::create($value);
        }
    }
}

jalankan seeder diatas dengan perintah berikut:

php artisan db:seed --class=EventSeeder

Step 6: Membuat Controller

php artisan make:controller EventController

Setelah menjalankan perintah diatas, kamu bisa cek file EventController.php pada folder app/Http/Controllers, kemudian buka file tersebut.

Baca Juga  Sub select di Laravel

Step 7: Menampilkan list event

pada file EventController.php kita buat function baru untuk menampilkan list event, tambahkan baris kode berikut:

public function index(Request $request){
        $data = Event::all();
  
        return response()->json($data, 200);
    }

Step 8: Menyimpan, mengupdate dan menghapus event

langkah selanjutnya kita akan membuat operasi untuk menyimpan data event, mengedit dan menghapus event. masih pada file EventController.php tambahkan beris berikut:

public function store(Request $request)
    {
        switch($request->type)
        {
            case 'add':
                    $event = Event::create([
                        'title' => $request->title,
                        'start_date' => date('Y-m-d', strtotime($request->start_date)),
                        'end_date' => date('Y-m-d', strtotime($request->end_date)),
                        'start_time' => date('H:i:s', strtotime($request->start_time)),
                        'end_time' => date('H:i:s', strtotime($request->end_time)),
                    ]);
    
                    return response()->json($event, 201);
                break;
            case 'edit':
                    $event = Event::find($request->id)->update([
                        'title' => $request->title,
                        'start_date' => date('Y-m-d', strtotime($request->start_date)),
                        'end_date' => date('Y-m-d', strtotime($request->end_date)),
                        'start_time' => date('H:i:s', strtotime($request->start_time)),
                        'end_time' => date('H:i:s', strtotime($request->end_time)),
                    ]);
    
                    return response()->json($event,201);
                break;
            case 'delete':
                    $event = Event::find($request->id)->delete();
    
                    return response()->json(
                        array(
                            'success'=>true,
                            'message'=>'Event berhasil dihapus'
                        )
                    );
                break;
        }
    }

secara kesulurhan, file EventController.php akan menjadi seperti berikut:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Event;

class EventController extends Controller
{
    public function index(Request $request){
        $data = Event::all();
  
        return response()->json($data, 200);
    }

    public function store(Request $request)
    {
        switch($request->type)
        {
            case 'add':
                    $event = Event::create([
                        'title' => $request->title,
                        'start_date' => date('Y-m-d', strtotime($request->start_date)),
                        'end_date' => date('Y-m-d', strtotime($request->end_date)),
                        'start_time' => date('H:i:s', strtotime($request->start_time)),
                        'end_time' => date('H:i:s', strtotime($request->end_time)),
                    ]);
    
                    return response()->json($event, 201);
                break;
            case 'edit':
                    $event = Event::find($request->id)->update([
                        'title' => $request->title,
                        'start_date' => date('Y-m-d', strtotime($request->start_date)),
                        'end_date' => date('Y-m-d', strtotime($request->end_date)),
                        'start_time' => date('H:i:s', strtotime($request->start_time)),
                        'end_time' => date('H:i:s', strtotime($request->end_time)),
                    ]);
    
                    return response()->json($event,201);
                break;
            case 'delete':
                    $event = Event::find($request->id)->delete();
    
                    return response()->json(
                        array(
                            'success'=>true,
                            'message'=>'Event berhasil dihapus'
                        )
                    );
                break;
        }
    }
}

Step 7: Update Route api.php

langkah selanjutnya adalah menyiapkan route untuk pemanggilan api nya, sekarang buka file api.php dari folder routes, kemudian tambahkan baris berikut:

Route::get('event',[App\Http\Controllers\EventController::class,'index']);
Route::post('store-event',[App\Http\Controllers\EventController::class,'store']);

kemudian jalankan server

php artisan server

dan endpoint api event dengan menggunakan postman. jika sukses akan maka hasilnya akan seperti ini.

Baca Juga  Laravel - Export CSV tanpa menggunakan Package

setelah selesai dengan API, langkah selanjutnya kita akan masuk di Frontend.

setelah ini kita akan install NuxtJS.

Share your love