Commit 0c0d515a authored by naufal krishna parahita's avatar naufal krishna parahita
Browse files

Merge branch 'main' into naufal

No related merge requests found
Showing with 252 additions and 273 deletions
+252 -273
......@@ -4,8 +4,9 @@
namespace App\Http\Controllers\CRUD;
use Illuminate\Http\Request;
use App\Models\Alat;
use Illuminate\Support\Facades\Storage;
use App\Models\Alat;
use App\Models\JenisAlat;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Validator;
......@@ -26,6 +27,7 @@ class AlatController extends Controller
'kondisi' => 'required',
'id_jenis_alat' => 'required',
'id_ruang' => 'required',
'tahun' => 'required',
]);
if ($validator->fails()) {
......@@ -37,8 +39,16 @@ class AlatController extends Controller
'kondisi' => $request->kondisi,
'id_jenis_alat' => $request->id_jenis_alat,
'id_ruang' => $request->id_ruang,
'tahun' => $request->tahun,
]);
$jenisAlat = JenisAlat::find($request->id_jenis_alat);
if ($request->kondisi == 'rusak') {
if ($jenisAlat->stok > 0) {
$jenisAlat->decrement('stok');
}
}
return response()->json(['message' => 'Alat berhasil ditambahkan']);
}
......@@ -63,6 +73,7 @@ class AlatController extends Controller
'kondisi' => 'required',
'id_jenis_alat' => 'required',
'id_ruang' => 'required',
'tahun' => 'required',
]);
if ($validator->fails()) {
......@@ -74,10 +85,18 @@ class AlatController extends Controller
'kondisi' => $request->kondisi,
'id_jenis_alat' => $request->id_jenis_alat,
'id_ruang' => $request->id_ruang,
'tahun' => $request->tahun,
];
$db_alat->update($data);
$jenisAlat = JenisAlat::find($request->id_jenis_alat);
if ($request->kondisi == 'rusak') {
if ($jenisAlat->stok > 0) {
$jenisAlat->decrement('stok');
}
}
return response()->json(['message' => 'Alat berhasil diupdate'], 200);
}
......
fe-sarpras/src/assets/img/billing.jpg

67.6 KB

......@@ -3,76 +3,107 @@
<SidebarAdmintes />
<div id="content-wrapper" class="service_section layout_padding">
<Navbar />
<div class="container mt-5">
<div class="row">
<div class="col-md-12">
<div class="card border-0 rounded shadow">
<div class="card-body">
<h4>TAMBAH ALAT</h4>
<hr />
<form @submit.prevent="store">
<div class="form-group">
<label for="no_inventaris" class="font-weight-bold">No Inventaris</label>
<input
type="text"
class="form-control"
v-model="post.no_inventaris"
placeholder="Masukkan nomor inventaris alat"
/>
<div v-if="validation.no_inventaris" class="mt-2 alert alert-danger">
{{ validation.no_inventaris[0] }}
</div>
</div>
<div class="form-group">
<label for="kondisi" class="font-weight-bold">Kondisi</label>
<input
type="text"
class="form-control"
v-model="post.kondisi"
placeholder="Masukkan kondisi alat"
/>
<div v-if="validation.kondisi" class="mt-2 alert alert-danger">
{{ validation.kondisi[0] }}
</div>
</div>
<div class="form-group">
<label for="id_jenis_alat" class="font-weight-bold">ID Jenis Alat</label>
<select class="form-control" v-model="post.id_jenis_alat">
<option v-for="jalat in jalat" :key="jalat.id_jenis_alat" :value="jalat.id_jenis_alat">{{ jalat.nama_alat }}</option>
</select>
<div v-if="validation.id_jenis_alat" class="mt-2 alert alert-danger">
{{ validation.id_jenis_alat[0] }}
</div>
<div class="container mt-5">
<div class="row">
<div class="col-md-12">
<div class="card border-0 rounded shadow">
<div class="card-body">
<h4>TAMBAH ALAT</h4>
<hr />
<form @submit.prevent="store">
<div class="form-group">
<label for="no_inventaris" class="font-weight-bold">No Inventaris</label>
<input
type="text"
class="form-control"
v-model="post.no_inventaris"
placeholder="Masukkan nomor inventaris alat"
/>
<div v-if="validation.no_inventaris" class="mt-2 alert alert-danger">
{{ validation.no_inventaris[0] }}
</div>
</div>
<div class="form-group">
<label for="kondisi" class="font-weight-bold">Kondisi</label>
<div class="form-check">
<input
class="form-check-input"
type="radio"
name="kondisi"
id="bagus"
value="bagus"
v-model="post.kondisi"
/>
<label class="form-check-label" for="bagus">Bagus</label>
</div>
<div class="form-check">
<input
class="form-check-input"
type="radio"
name="kondisi"
id="rusak"
value="rusak"
v-model="post.kondisi"
/>
<label class="form-check-label" for="rusak">Rusak</label>
</div>
<div v-if="validation.kondisi" class="mt-2 alert alert-danger">
{{ validation.kondisi[0] }}
</div>
</div>
<div class="form-group">
<label for="id_jenis_alat" class="font-weight-bold">ID Jenis Alat</label>
<select class="form-control" v-model="post.id_jenis_alat">
<option v-for="jalat in jalat" :key="jalat.id_jenis_alat" :value="jalat.id_jenis_alat">{{ jalat.nama_alat }}</option>
</select>
<div v-if="validation.id_jenis_alat" class="mt-2 alert alert-danger">
{{ validation.id_jenis_alat[0] }}
</div>
</div>
<div class="form-group">
<label for="id_ruang" class="font-weight-bold">ID ruang</label>
<select class="form-control" v-model="post.id_ruang">
<option v-for="ruang in ruang" :key="ruang.id_ruang" :value="ruang.id_ruang">{{ ruang.nama_ruang }}</option>
</select>
<div v-if="validation.id_ruang" class="mt-2 alert alert-danger">
{{ validation.id_ruang[0] }}
</div>
</div>
<div class="form-group">
<label for="tahun" class="font-weight-bold">Tahun</label>
<input
type="number"
class="form-control"
v-model="post.tahun"
placeholder="Masukkan tahun alat"
/>
<div v-if="validation.tahun" class="mt-2 alert alert-danger">
{{ validation.tahun[0] }}
</div>
</div>
<button type="submit" class="btn btn-primary">SIMPAN</button>
<router-link :to="{ name: 'allAlat' }" class="btn btn-secondary"
>CANCEL</router-link
>
</form>
</div>
<div class="form-group">
<label for="id_ruang" class="font-weight-bold">ID ruang</label>
<select class="form-control" v-model="post.id_ruang">
<option v-for="ruang in ruang" :key="ruang.id_ruang" :value="ruang.id_ruang">{{ ruang.nama_ruang }}</option>
</select>
<div v-if="validation.id_ruang" class="mt-2 alert alert-danger">
{{ validation.id_ruang[0] }}
</div>
</div>
<button type="submit" class="btn btn-primary">SIMPAN</button>
<router-link :to="{ name: 'allAlat' }" class="btn btn-secondary"
>CANCEL</router-link
>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<Footer />
</div>
</div>
......@@ -98,6 +129,7 @@ export default {
kondisi: "",
id_jenis_alat: "",
id_ruang: "",
tahun: "",
});
const jalat = ref([]);
......@@ -138,6 +170,7 @@ export default {
formData.append('kondisi', post.kondisi);
formData.append('id_jenis_alat', post.id_jenis_alat);
formData.append('id_ruang', post.id_ruang);
formData.append('tahun', post.tahun);
axios
.post('/api/alat/add_alat', formData, {
......@@ -169,4 +202,4 @@ export default {
body {
background: lightgray;
}
</style>
</style>
\ No newline at end of file
......@@ -8,31 +8,33 @@
Tambah Alat
</router-link>
<table class="table table-bordered table-hover">
<thead class="thead-dark">
<tr>
<th scope="col">No</th>
<th scope="col">No Inventaris</th>
<th scope="col">Kondisi</th>
<th scope="col">ID Jenis Alat</th>
<th scope="col">ID Ruang</th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody>
<tr v-for="(alat, index) in ListAlat" :key="alat.id_alat">
<td>{{ index + 1 }}</td>
<td>{{ alat.no_inventaris }}</td>
<td>{{ alat.kondisi }}</td>
<td>{{ alat.id_jenis_alat }}</td>
<td>{{ alat.id_ruang }}</td>
<td>
<button @click="updateAlat(alat.id_alat)" class="btn btn-info">Update</button>
<button @click="deleteAlat(alat.id_alat)" class="btn btn-danger">Delete</button>
</td>
</tr>
</tbody>
</table>
<table class="table table-bordered table-hover">
<thead class="thead-dark">
<tr>
<th scope="col">No</th>
<th scope="col">No Inventaris</th>
<th scope="col">Kondisi</th>
<th scope="col">ID Jenis Alat</th>
<th scope="col">ID Ruang</th>
<th scope="col">Tahun</th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody>
<tr v-for="(alat, index) in ListAlat" :key="alat.id_alat">
<td>{{ index + 1 }}</td>
<td>{{ alat.no_inventaris }}</td>
<td>{{ alat.kondisi }}</td>
<td>{{ alat.id_jenis_alat }}</td>
<td>{{ alat.id_ruang }}</td>
<td>{{ alat.tahun }}</td>
<td>
<button @click="updateAlat(alat.id_alat)" class="btn btn-info">Update</button>
<button @click="deleteAlat(alat.id_alat)" class="btn btn-danger">Delete</button>
</td>
</tr>
</tbody>
</table>
</div>
<Footer />
</div>
......@@ -51,83 +53,70 @@ export default {
Navbar,
},
data() {
return {
ListAlat: [],
};
},
mounted() {
this.fetchAlat();
},
methods: {
async fetchAlat() {
try {
const response = await this.$axios.get('/api/alat');
this.ListAlat = response.data;
} catch (error) {
console.error('Error fetching alat:', error);
}
return {
ListAlat: [],
};
},
updateAlat(id_alat) {
this.$router.push({ name: 'updateAlat', params: { id: id_alat } });
mounted() {
this.fetchAlat();
},
async deleteAlat(id_alat) {
const isConfirmed = window.confirm("Are you sure you want to delete this alat?");
if (isConfirmed) {
methods: {
async fetchAlat() {
try {
await this.$axios.delete(`/api/alat/${id_alat}`);
this.fetchAlat();
const response = await this.$axios.get('/api/alat');
this.ListAlat = response.data;
} catch (error) {
console.error('Error deleting alat:', error);
console.error('Error fetching alat:', error);
}
},
updateAlat(id_alat) {
this.$router.push({ name: 'updateAlat', params: { id: id_alat } });
},
async deleteAlat(id_alat) {
const isConfirmed = window.confirm("Are you sure you want to delete this alat?");
if (isConfirmed) {
try {
await this.$axios.delete(`/api/alat/${id_alat}`);
this.fetchAlat();
} catch (error) {
console.error('Error deleting alat:', error);
}
}
}
},
},
},
};
</script>
<style scoped>
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap');
body {
font-family: 'Roboto', sans-serif;
margin: 0;
padding: 0;
background-color: #f8f9fa;
}
.main-container {
display: flex;
}
.content {
flex-grow: 1;
padding: 20px;
margin-left: 5px;
transition: margin-left 0.3s ease-in-out;
}
.container {
padding: 10px;
}
.btn-success {
background-color: #28a745;
border-color: #28a745;
}
.btn-success:hover {
background-color: #218838;
border-color: #1e7e34;
}
.table th,
.table td {
text-align: center;
vertical-align: middle;
}
.btn-info,
.btn-danger {
width: 80px;
}
</style>
};
</script>
<style scoped>
.product-image {
max-width: 100px;
max-height: 75px;
object-fit: cover;
}
.container {
padding: 30px;
}
.btn-success {
background-color: #28a745;
border-color: #28a745;
}
.btn-success:hover {
background-color: #218838;
border-color: #1e7e34;
}
.table th,
.table td {
text-align: center;
vertical-align: middle;
}
.btn-info,
.btn-danger {
width: 80px;
}
</style>
\ No newline at end of file
......@@ -27,13 +27,29 @@
</div>
<div class="form-group">
<label for="kondisi" class="font-weight-bold">Kondisi Alat</label>
<input
type="text"
class="form-control"
v-model="alat.kondisi"
placeholder="Masukkan Kondisi Alat"
/>
<label for="kondisi" class="font-weight-bold">Kondisi</label>
<div class="form-check">
<input
class="form-check-input"
type="radio"
name="kondisi"
id="bagus"
value="bagus"
v-model="alat.kondisi"
/>
<label class="form-check-label" for="bagus">Bagus</label>
</div>
<div class="form-check">
<input
class="form-check-input"
type="radio"
name="kondisi"
id="rusak"
value="rusak"
v-model="alat.kondisi"
/>
<label class="form-check-label" for="rusak">Rusak</label>
</div>
<div v-if="validation.kondisi" class="mt-2 alert alert-danger">
{{ validation.kondisi[0] }}
......@@ -62,6 +78,20 @@
</div>
</div>
<div class="form-group">
<label for="tahun" class="font-weight-bold">Tahun</label>
<input
type="number"
class="form-control"
v-model="alat.tahun"
placeholder="Masukkan tahun alat"
/>
<div v-if="validation.tahun" class="mt-2 alert alert-danger">
{{ validation.tahun[0] }}
</div>
</div>
<button type="submit" class="btn btn-primary">UPDATE</button>
<router-link :to="{ name: 'allAlat' }" class="btn btn-secondary"
>CANCEL</router-link
......@@ -95,8 +125,9 @@ export default {
const alat = reactive({
no_inventaris: "",
kondisi: "",
stok: "",
foto_alat: null,
id_jenis_alat: "",
id_ruang: "",
tahun: "",
});
const jalat = ref([]);
......@@ -138,6 +169,7 @@ export default {
alat.kondisi = response.data.kondisi;
alat.id_jenis_alat = response.data.id_jenis_alat;
alat.id_ruang = response.data.id_ruang;
alat.tahun = response.data.tahun;
})
.catch((error) => {
console.log(error);
......@@ -150,6 +182,7 @@ function updateAlat() {
formData.append("kondisi", alat.kondisi);
formData.append("id_jenis_alat", alat.id_jenis_alat);
formData.append("id_ruang", alat.id_ruang);
formData.append("tahun", alat.tahun);
axios
.post(`/api/alat/update/${route.params.id}`, formData, {
......
......@@ -56,46 +56,6 @@
<span class="badge badge-danger badge-counter">3+</span>
</a>
<!-- Dropdown - Alerts -->
<div class="dropdown-list dropdown-menu dropdown-menu-right shadow animated--grow-in"
aria-labelledby="alertsDropdown">
<h6 class="dropdown-header">
Alerts Center
</h6>
<a class="dropdown-item d-flex align-items-center" href="#">
<div class="mr-3">
<div class="icon-circle bg-primary">
<i class="fas fa-file-alt text-white"></i>
</div>
</div>
<div>
<div class="small text-gray-500">December 12, 2019</div>
<span class="font-weight-bold">A new monthly report is ready to download!</span>
</div>
</a>
<a class="dropdown-item d-flex align-items-center" href="#">
<div class="mr-3">
<div class="icon-circle bg-success">
<i class="fas fa-donate text-white"></i>
</div>
</div>
<div>
<div class="small text-gray-500">December 7, 2019</div>
$290.29 has been deposited into your account!
</div>
</a>
<a class="dropdown-item d-flex align-items-center" href="#">
<div class="mr-3">
<div class="icon-circle bg-warning">
<i class="fas fa-exclamation-triangle text-white"></i>
</div>
</div>
<div>
<div class="small text-gray-500">December 2, 2019</div>
Spending Alert: We've noticed unusually high spending for your account.
</div>
</a>
<a class="dropdown-item text-center small text-gray-500" href="#">Show All Alerts</a>
</div>
</li>
<!-- Nav Item - Messages -->
......@@ -107,61 +67,6 @@
<span class="badge badge-danger badge-counter">7</span>
</a>
<!-- Dropdown - Messages -->
<div class="dropdown-list dropdown-menu dropdown-menu-right shadow animated--grow-in"
aria-labelledby="messagesDropdown">
<h6 class="dropdown-header">
Message Center
</h6>
<a class="dropdown-item d-flex align-items-center" href="#">
<div class="dropdown-list-image mr-3">
<img class="rounded-circle" src="img/undraw_profile_1.svg"
alt="...">
<div class="status-indicator bg-success"></div>
</div>
<div class="font-weight-bold">
<div class="text-truncate">Hi there! I am wondering if you can help me with a
problem I've been having.</div>
<div class="small text-gray-500">Emily Fowler · 58m</div>
</div>
</a>
<a class="dropdown-item d-flex align-items-center" href="#">
<div class="dropdown-list-image mr-3">
<img class="rounded-circle" src="img/undraw_profile_2.svg"
alt="...">
<div class="status-indicator"></div>
</div>
<div>
<div class="text-truncate">I have the photos that you ordered last month, how
would you like them sent to you?</div>
<div class="small text-gray-500">Jae Chun · 1d</div>
</div>
</a>
<a class="dropdown-item d-flex align-items-center" href="#">
<div class="dropdown-list-image mr-3">
<img class="rounded-circle" src="img/undraw_profile_3.svg"
alt="...">
<div class="status-indicator bg-warning"></div>
</div>
<div>
<div class="text-truncate">Last month's report looks great, I am very happy with
the progress so far, keep up the good work!</div>
<div class="small text-gray-500">Morgan Alvarez · 2d</div>
</div>
</a>
<a class="dropdown-item d-flex align-items-center" href="#">
<div class="dropdown-list-image mr-3">
<img class="rounded-circle" src="https://source.unsplash.com/Mv9hjnEUHR4/60x60"
alt="...">
<div class="status-indicator bg-success"></div>
</div>
<div>
<div class="text-truncate">Am I a good boy? The reason I ask is because someone
told me that people say this to all dogs, even if they aren't good...</div>
<div class="small text-gray-500">Chicken the Dog · 2w</div>
</div>
</a>
<a class="dropdown-item text-center small text-gray-500" href="#">Read More Messages</a>
</div>
</li>
<div class="topbar-divider d-none d-sm-block"></div>
......@@ -170,9 +75,9 @@
<li class="nav-item dropdown no-arrow">
<a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="mr-2 d-none d-lg-inline text-gray-600 small">Douglas McGee</span>
<span class="mr-2 d-none d-lg-inline text-gray-600 small">Ini Nama Profil</span>
<img class="img-profile rounded-circle"
src="img/undraw_profile.svg">
src="require('@/assets/img/billing.jpg')">
</a>
<!-- Dropdown - User Information -->
<div class="dropdown-menu dropdown-menu-right shadow animated--grow-in"
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment