Pembahasan Soal LKS Web Technologies Module-Server

  • Diposting oleh:
  • Diposting pada:
  • Kategori:
    LKSLKS
  • Sistem:
    Tidak diketahui
  • Harga:
    USD 0
  • Dilihat:
    1437

 

Membuat Model gameversion

Setelah kita Import database, Tutorial mengerjakan soal LKS Web Technologi berikutnya adalah membuat model gameversion, buka terminal visual studio code lalu ketikkan kode di bawah ini lalu tekan enter.

php arttisan make:model gameversion

Kemudian pergi ke app/Models/gameversion.php dan ubah seperti kode di bawah ini.


namespace App\Models;

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

class gameversion extends Model
{
    use HasFactory;

    protected $table = 'game_versions';


    protected $guarded = [];
}

Membuat Model games

Sekarang kita akan membuat model games, buka terminal visual studio code lalu ketikkan kode di bawah ini lalu tekan enter.

php artisan make:model games

Kemudian pergi ke app/Models/games.php dan ubah seperti kode di bawah ini.


namespace App\Models;

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

class games extends Model
{
    use HasFactory;

    protected $table = 'games';
    protected $guarded = [];

    public function game_version(){
        return $this->hasMany(gameversion::class, 'game_id');
    }
}

Fungsi game_version bertujuan untuk membuat reslasi antara model games dan gameversion.

Membuat Model score

Sekarang kita akan membuat model games, buka terminal visual studio code lalu ketikkan kode di bawah ini lalu tekan enter.

php artisan make:model score

Kemudian pergi ke app/Models/score.php dan ubah seperti kode dibawah ini.


namespace App\Models;

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

class score extends Model
{
    use HasFactory;

    protected $table = 'scores';

    protected $guarded = [];
}

Membuat Controller Games

Pertama, buatlah controller dengan nama gamesController terlebih dahulu. Buka terminal dan ketikkan kode di bawah ini.

php artisan make:controller gamesController

Kemudian masuk ke app/Http/Controllers/gamesController.php

 

Membuat Fungsi Create

Sekarang, kita akan membuat fungsi create untuk tabel games. Saya sudah menyiapkan kodenya. Anda bisa menyalin kode di bawah ini.


public function create(Request $request)
    {
        try {
            $request->validate([
                'title' => 'required|unique:games,title',
                'description' => 'required'
            ]);
            $user = $request->user();

            $slug = explode(' ', $request->title);

            $games = new games();
            $games->title = $request->title;
            $games->description = $request->description;
            $games->slug = strtolower(join('-', $slug));
            $games->created_by = $user->id;
            $games->save();

            return response()->json(['status' => 'success', 'slug' => $games->slug], 200);

        } catch (\Throwable $th) {
            return response()->json(['status' => 'error', 'message' => $th->getMessage()], 422);
        }
    }

Untuk membuat kolom slug, kita ambil dari kolom title, tetapi ganti spasi dengan simbol Dash ().

Kemudian masuk kedalam routes/api.php lalu ketikkan kode dibawah untuk membuat routing api nya.

Route::post('/v1/games',[gamesController::class, 'create']);

Tambahkan routing di atas ke dalam middleware yang telah kita buat sebelumnya.

lks web technology

Membuat Fungsi Index

Sekarang, kita akan membuat fungsi index untuk tabel games. Saya sudah menyiapkan kodenya. Anda bisa menyalin kode di bawah ini.


public function index(Request $request)
    {
        try {
            $size = $request->input('size', 10);
            $page = $request->input('page', 0);
            $sortby = $request->input('sortBy', 'title');
            $sortdir = $request->input('sortDir', 'asc');

            $data = games::get();

            $temp = $data->forPage($page + 1, $size);

            $content = [];

            foreach ($temp as $key => $value) {
                $user = society::where('id', $value->created_by)->first();
                $gamever = gameversion::where('game_id', $value->id)->get();
                $value->author = $user->username;

                if ($gamever->count() > 1) {
                    $temp = $gamever->last();
                    $value->thumbnail = $temp->storage_path . 'thumbnail.png';
                    $value->uploadTimestamp = $temp->created_at;
                } else {
                    $value->author = $user->username;
                    $value->thumbnail = $gamever->count() == 1 ? $gamever[0]->storage_path . 'thumbnail.png' : null;
                    $value->uploadTimestamp = $gamever->count() == 1 ? $gamever[0]->created_at : null;
                }
                $content[] = $value->makeHidden(['created_at', 'updated_at', 'deleted_at', 'created_by']);
            }

            return response()->json([
                'page' => $page,
                'size' => $size,
                'totalElements' => $data->count(),
                'content' => $content

            ]);
        } catch (\Throwable $th) {
            return response()->json(['status' => 'error', 'message' => $th->getMessage()], 422);
        }
    }

Dalam kode tersebut, kami menggunakan fungsi forPage() untuk melakukan paginasi. Kami menetapkan 10 data sebagai paginasi default.

Kemudian masuk kedalam routes/api.php lalu ketikkan kode dibawah untuk membuat routing api nya.

Route::get('v1/games',[gamesController::class, 'index']);

Tambahkan routing di atas ke dalam middleware yang telah kita buat sebelumnya.

Mari kita test, jika berhasil maka akan seperti ini yaa!.

lks web technology

Membuat Fungsi Show

Sekarang, kita akan membuat fungsi show untuk tabel games. Saya sudah menyiapkan kodenya. Anda bisa menyalin kode di bawah ini.


public function show($slug)
    {
        try {
            $data = games::where('slug', $slug)->with('game_version')->first();
            $author = society::where('id', $data->created_by)->first();

            $thumbpath = null;
            $score = null;
            $path = null;
            foreach ($data->game_version as $key => $value) {
                $temp = public_path($value->storage_path . 'thumbnail.png');

                if (file_exists($temp)) {
                    $thumbpath = $temp;
                }
                $score = score::where('game_version_id',$value->id)->count();
                $path = $value->storage_path;
            }

            $data['thumbnail'] = $thumbpath;
            $data['author'] = $author->username;
            $data['uploadTimestamp'] = $data->updated_at;
            $data['game_path'] = $path;
            $data['scoreCount'] = $score;

            return response()->json($data->makeHidden(['created_at', 'deleted_at', 'updated_at', 'created_by', 'game_version']), 200);
        } catch (\Throwable $th) {
            return response()->json(['status' => 'error', 'message' => $th->getMessage()], 422);
        }
    }

Dalam fungsi show, saya menambahkan parameter $slug yang terambil dari parameter URL. Ketika mengambil data thumbnail, kami menggunakan file_exists() untuk memeriksa apakah ada file bernama thumbnail.png di direktori tersebut. Jika tidak ada, maka isi data thumbnail adalah null.

Kemudian masuk kedalam routes/api.php lalu ketikkan kode dibawah untuk membuat routing api nya.

Route::get('/v1/games/{slug}',[gamesController::class,'show']);

Tambahkan routing di atas ke dalam middleware yang telah kita buat sebelumnya.

Mari kita test, jika berhasil maka akan seperti ini yaa!.

lks web technology

Membuat Fungsi Update

Sekarang, kita akan membuat fungsi update untuk tabel games. Saya sudah menyiapkan kodenya. Anda bisa menyalin kode di bawah ini.


public function update($slug, Request $request)
    {
        try {
            $games = games::where('slug', $slug)->first();

            if (!$games) {
                return response()->json(['status'=>'invalid','message'=>'not found'],422);
            }

            $games->update([
                'title' => $request->title ? $request->title : $games->title,
                'description' => $request->description ? $request->description : $games->title,
            ]);

            return response()->json(['status' => 'success'], 200);
        } catch (\Throwable $th) {
            return response()->json(['status' => 'error', 'message' => $th->getMessage()], 422);
        }
    }

Kemudian masuk kedalam routes/api.php lalu ketikkan kode dibawah untuk membuat routing api nya.

Route::put('/v1/games/{slug}',[gamesController::class,'update']);

Tambahkan routing di atas ke dalam middleware yang telah kita buat sebelumnya.

Mari kita test, jika berhasil maka akan seperti ini yaa!.

lks web technology

Rating

0

( 0 Votes )
Silahkan Rating!
Pembahasan Soal LKS Web Technologies Module-Server

No votes so far! Be the first to rate this post.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *