Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Ujikom Safa 2023

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 27

RANCANGAN SAFA MARET 2023

Nama : Safa Zahra Raudya


Kelas : XII RPL 1
NIS : 12008330
Use Case
Activity Diagram
ERD

Kamus data
table_user
no field tipe_data keterangan
1 id bigint(20) primary key
2 email varchar(225)
3 password varchar(225)
admin,custome
4 role enum r

table_kategori
no field tipe_data keterangan
1 id bigint(20) primary key
2 name varchar(225)

table_destinasi
no field tipe_data keterangan
1 id bigint(20) primary key
kategori_i
2 d bigint(20) foreign_id
3 user_id bigint(20) foreign_id
4 name varchar(225)
5 foto varchar(225)
keteranga
6 n varchar(225)
7 alamat varchar(225)
8 linklokasi varchar(225)
Class Diagram
Mockup
Scirpt
route
Route::get('/', 'UserController@home')->name('home');
Route::get('/detail{destinasi}', 'UserController@detail')->name('detail');

Route::get('/login', 'UserController@login')->name('login');
Route::post('/postlogin', 'UserController@postlogin')->name('postlogin');

Route::get('/registrasi', 'UserController@registrasi')->name('registrasi');
Route::post('/postregistrasi', 'UserController@postregistrasi')-
>name('postregistrasi');

Route::get('/destinasi', 'UserController@destinasi')->name('destinasi');
Route::get('/tambahdestinasi', 'UserController@tambahdestinasi')-
>name('tambahdestinasi');
Route::post('/posttambahdestinasi', 'UserController@posttambahdestinasi')-
>name('posttambahdestinasi');

Route::get('/editdestinasi{destinasi}', 'UserController@editdestinasi')-
>name('editdestinasi');
Route::post('/posteditdestinasi{destinasi}',
'UserController@posteditdestinasi')->name('posteditdestinasi');
Route::get('/hapusdestinasi{destinasi}', 'UserController@hapusdestinasi')-
>name('hapusdestinasi');

Route::get('/logout', 'UserController@logout')->name('logout');
Fungsi
public function home()
{
$data = destinasi::all();
return view('home', compact('data'));
}

public function detail(destinasi $destinasi)


{
return view('detail', compact('destinasi'));
}

public function login()


{
return view('login');
}

public function postlogin(request $request)


{
$cek = $request->validate([
'email'=>'required',
'password'=>'required'
]);

if (Auth::attempt($cek)) {
return redirect()->route('destinasi');
}
}

public function registrasi()


{
return view('registrasi');
}

public function postregistrasi(request $request)


{
$request->validate([
'name'=>'required',
'email'=>'required',
'password'=>'required',
'role'=>'customer'
]);
User::create([
'name'=>$request->name,
'email'=>$request->email,
'password'=>bcrypt($request->password),
]);

return redirect()->route('login');
}

//khusus admin
public function destinasi()
{
$data = destinasi::all();
return view('admin.destinasi', compact('data'));
}

public function tambahdestinasi()


{
$data = kategori::all();
return view('admin.tambahdestinasi', compact('data'));
}

public function posttambahdestinasi(request $request)


{
$request->validate([
'name'=>'required',
'foto'=>'required|file|image',
'keterangan'=>'required',
'alamat'=>'required',
'linklokasi'=>'required',
'kategori_id'=>'required',
]);
$user=Auth::user();
destinasi::create([
'name'=>$request->name,
'foto'=>$request->foto->store('img'),
'keterangan'=>$request->keterangan,
'alamat'=>$request->alamat,
'linklokasi'=>$request->linklokasi,
'kategori_id'=>$request->kategori_id,
'user_id'=>$user->id
]);

return redirect()->route('destinasi');
}

public function editdestinasi(destinasi $destinasi)


{
$data = kategori::all();
return view('admin.editdestinasi', compact('data', 'destinasi'));
}

public function posteditdestinasi(request $request, destinasi $destinasi)


{
$data = $request->validate([
'name'=>'required',
'foto'=>'required|file|image',
'keterangan'=>'required',
'alamat'=>'required',
'linklokasi'=>'required',
'kategori_id'=>'required',
]);

if ($request->hasFile('foto')) {
$data['foto']=$request->foto->store('img');
}

else {
unset($data['foto']);
}

$destinasi->update($data);
return redirect()->route('destinasi');
}

public function hapusdestinasi(destinasi $destinasi)


{
$data = public_path($destinasi->foto);
unlink($data);
$destinasi->delete();
return redirect()->route('destinasi');
}

public function logout()


{
Auth()->logout();
return redirect()->route('home');
}
Home
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="{{ asset('css\bootstrap.min.css') }}">
<title>home</title>
</head>
<body style="background-color: rgb(129, 189, 197)">

@include('template.nav')
<img src="img\bgnav3c.jpg" alt="" class="d-block w-100">
<h1 class="text-center mt-4">DESTINASI SUKABUMI</h1>
@include('template.card')
<script src="{{ asset('js\bootstrap.bundle.min.js') }}"></script>
</body>
</html>
Navbar
<nav class="nav bg-info navbar-expand-lg">
<div class="container-fluid">
<a href="" class="navbar-brand text-white">Destinasi</a>
</div>
<a href="{{ route('home') }}" class="nav-link text-white">Home</a>
<a href="{{ route('login') }}" class="nav-link text-white">Login</a>
</nav>
Card
<div class="container mt-4">
<div class="row">
@foreach ($data as $item)
<div class="col-4">
<div class="card shadow-lg mb-5" style="background-
color:rgb(198, 237, 255);border-radius: 22px">
<div class="card-body">
<img width="50" height="200" style="border-radius:
15px" src="{{ asset($item->foto) }}" alt="" class="card-img-top">
<h3 class="card-title">{{ $item->name }}</h3>
<p class="card-text text-center">{{ $item-
>keterangan }}</p>
<a href="{{ route('detail', $item->id) }}" class="btn
btn-info">lihat detail</a>
</div>
</div>
</div>
@endforeach
</div>
</div>
Login
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="{{ asset('css\bootstrap.min.css') }}">
<title>home</title>
</head>
<body style="background-color: rgb(129, 189, 197)">

@include('template.nav')
<div class="container mt-4">
<h1 class="text-center">LOGIN</h1>
<div class="card col-6 mx-auto shadow-lg" style="background-
color:rgb(198, 237, 255)">
<div class="card-body">
<form action="{{ route('postlogin') }}" class="form-group"
method="POST">
@csrf
<label for="">Username: </label>
<input type="email" name="email" required class="form-
control">
<label for="">Password: </label>
<input type="password" name="password" required
class="form-control">
<button class="btn btn-dark form-control mt-
2">Login</button>
<p class="text-center mt-2">Belum punya akun? <a
href="{{ route('registrasi') }}">Registrasi</a></p>
</form>
</div>
</div>
</div>
<script src="{{ asset('js\bootstrap.bundle.min.js') }}"></script>
</body>
</html>
Registrasi
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="{{ asset('css\bootstrap.min.css') }}">
<title>home</title>
</head>
<body style="background-color: rgb(129, 189, 197)">

@include('template.nav')
<div class="container mt-4">
<h1 class="text-center">REGISTRASI</h1>
<div class="card col-6 mx-auto shadow-lg" style="background-
color:rgb(198, 237, 255)">
<div class="card-body">
<form action="{{ route('postregistrasi') }}" class="form-
group" method="POST">
@csrf
<label for="">Name: </label>
<input type="text" name="name" required class="form-
control">
<label for="">Username: </label>
<input type="email" name="email" required class="form-
control">
<label for="">Password: </label>
<input type="password" name="password" required
class="form-control">
<button class="btn btn-dark form-control mt-
2">Daftar</button>
<p class="text-center mt-2">Sudah punya akun? <a
href="{{ route('login') }}">Login</a></p>
</form>
</div>
</div>
</div>
<script src="{{ asset('js\bootstrap.bundle.min.js') }}"></script>
</body>
</html>
Admin destinasi
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">

<link rel="stylesheet" href="datatable\bootstrap.css">


<link rel="stylesheet" href="datatable\dataTables.bootstrap4.min.css">

<script src="datatable\jquery-3.5.1.js"></script>
<script src="datatable\jquery.dataTables.min.js"></script>
<script src="datatable\dataTables.bootstrap4.min.js"></script>
<title>home</title>
</head>
<body style="background-color: rgb(129, 189, 197)">

@include('template.nav')
<div class="container mt-4">
<h1 class="text-center">KELOLA DESTINASI</h1>
<a href="{{ route('tambahdestinasi') }}" class="btn btn-
dark">Tambah</a>
<a href="{{ route('logout') }}" onclick="return confirm('apakah anda
yakin ingin keluar?')" class="btn btn-danger">logout</a>
<div class="card mt-3 mb-5" style="background-color:rgb(198, 237,
255)">
<div class="card-body">
<table class="table-hover table-bordered" id="example">
<thead>
<tr>
<th>No </th>
<th>foto </th>
<th>Name </th>
<th>Keterangan </th>
<th>Alamat </th>
<th>Lokasi </th>
<th>Admin </th>
<th>Aksi </th>
</tr>
</thead>
<tbody>
@foreach ($data as $item)
<tr>
<td> {{ $loop->iteration }} </td>
<td> <img width="100" height="100"
src="{{ asset($item->foto) }}" alt=""> </td>
<td> {{ $item->name }} </td>
<td> {{ $item->keterangan }} </td>
<td> {{ $item->alamat }} </td>
<td> <a href="{{ $item->linklokasi }}"
target="blank_target"> cek lokasi </a></td>
<td> {{ $item->user->name }} </td>
<td>
<a href="{{ route('editdestinasi', $item->id)
}}" class="btn btn-dark mt-2">edit</a>
<a href="{{ route('hapusdestinasi', $item-
>id) }}" onclick="return confirm('apakah anda yakin ingin menghapus?')"
class="btn btn-danger mt-2">hapus</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
<script>
$(document).ready(function(){
$('#example').DataTable();
});
</script>
</body>
</html>
Tambah destinasi
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="{{ asset('css\bootstrap.min.css') }}">
<title>home</title>
</head>
<body style="background-color: rgb(129, 189, 197)">

@include('template.nav')
<div class="container mt-4">
<h1 class="text-center">TAMBAH DESTINASI</h1>
<div class="card shadow-lg" style="background-color:rgb(198, 237,
255)">
<div class="card-body">
<form action="{{ route('posttambahdestinasi') }}"
enctype="multipart/form-data" class="form-group" method="POST">
@csrf
<label for="">Name: </label>
<input type="text" name="name" required class="form-
control">
<label for="">Foto: </label>
<input type="file" name="foto" accept="image/*" required
class="form-control">
<label for="">Keterangan: </label>
<input type="text" name="keterangan" required class="form-
control">
<label for="">Alamat: </label>
<input type="text" name="alamat" required class="form-
control">
<label for="">Link Lokasi: </label>
<input type="text" name="linklokasi" required class="form-
control">
<label for="">Kategori: </label>
<select name="kategori_id" class="form-control">
@foreach ($data as $item)
<option value="{{ $item->id }}">{{ $item-
>name }}</option>
@endforeach
</select>
<button class="btn btn-dark mt-2">Kirim</button>
<a href="{{ route('destinasi') }}" class="btn btn-danger
mt-2">Batal</a>
</form>
</div>
</div>
</div>
<script src="{{ asset('js\bootstrap.bundle.min.js') }}"></script>
</body>
</html>
Edit destinasi
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="{{ asset('css\bootstrap.min.css') }}">
<title>home</title>
</head>
<body style="background-color: rgb(129, 189, 197)">

@include('template.nav')
<div class="container mt-4">
<h1 class="text-center">EDIT DESTINASI</h1>
<div class="card shadow-lg" style="background-color:rgb(198, 237,
255)">
<div class="card-body">
<form action="{{ route('posteditdestinasi', $destinasi-
>id) }}" enctype="multipart/form-data" class="form-group" method="POST">
@csrf
<label for="">Name: </label>
<input type="text" name="name" required class="form-
control" value="{{ $destinasi->name }}">
<label for="">Foto: </label>
<input type="file" name="foto" accept="image/*" required
class="form-control" value="{{ $destinasi->foto }}">
<label for="">Keterangan: </label>
<input type="text" name="keterangan" required class="form-
control" value="{{ $destinasi->keterangan }}">
<label for="">Alamat: </label>
<input type="text" name="alamat" required class="form-
control" value="{{ $destinasi->alamat }}">
<label for="">Link Lokasi: </label>
<input type="text" name="linklokasi" required class="form-
control" value="{{ $destinasi->linklokasi }}">
<label for="">Kategori: </label>
<select name="kategori_id" class="form-control">
@foreach ($data as $item)
<option value="{{ $item->id }}">{{ $item-
>name }}</option>
@endforeach
</select>
<button class="btn btn-dark mt-2">Kirim</button>
<a href="{{ route('destinasi') }}" class="btn btn-danger
mt-2">Batal</a>
</form>
</div>
</div>
</div>
<script src="{{ asset('js\bootstrap.bundle.min.js') }}"></script>
</body>
</html>
Tambahan
Env
DB_DATABASE=ujikomsafa
FILESYSTEM_DRIVER=public
Config(filesystems.php)
'public' => [
'driver' => 'local',
'root' => public_path(),
'url' => env('APP_URL').'/public',
'visibility' => 'public',
Providers(RouteServiceProvider.php)
protected $namespace = 'App\\Http\\Controllers';
Tampilan Webiste
home
Detail

Registrasi
Login

Kelola destinasi
Tambah destinasi

Edit
Hapus destinasi

Logout

You might also like