Selesai bagian data soal

This commit is contained in:
Mahayoga 2026-03-12 14:47:13 +07:00
parent d229bb8bd3
commit b7990bca24
3 changed files with 307 additions and 16 deletions

View File

@ -39,7 +39,20 @@ public function create()
*/ */
public function store(Request $request) public function store(Request $request)
{ {
// DataSoalModel::create([
'pertanyaan' => $request->pertanyaan,
'jawaban_a' => $request->jawaban_a,
'jawaban_b' => $request->jawaban_b,
'jawaban_c' => $request->jawaban_c,
'jawaban_d' => $request->jawaban_d,
'jawaban_e' => $request->jawaban_e,
'jawaban_benar' => $request->jawaban_benar,
]);
return response()->json([
'status' => true,
'msg' => 'Data berhasil ditambahkan'
]);
} }
/** /**
@ -47,7 +60,11 @@ public function store(Request $request)
*/ */
public function show(string $id) public function show(string $id)
{ {
// $data = DataSoalModel::where('id_soal', $id)->get();
return response()->json([
'status' => true,
'data' => $data[0]
]);
} }
/** /**
@ -55,7 +72,11 @@ public function show(string $id)
*/ */
public function edit(string $id) public function edit(string $id)
{ {
// $data = DataSoalModel::where('id_soal', $id)->get();
return response()->json([
'status' => true,
'data' => $data[0]
]);
} }
/** /**
@ -63,7 +84,20 @@ public function edit(string $id)
*/ */
public function update(Request $request, string $id) public function update(Request $request, string $id)
{ {
// $data = DataSoalModel::where('id_soal', $id)->update([
'pertanyaan' => $request->pertanyaan,
'jawaban_a' => $request->jawaban_a,
'jawaban_b' => $request->jawaban_b,
'jawaban_c' => $request->jawaban_c,
'jawaban_d' => $request->jawaban_d,
'jawaban_e' => $request->jawaban_e,
'jawaban_benar' => $request->jawaban_benar,
]);
return response()->json([
'status' => true,
'msg' => 'Data berhasil di edit'
]);
} }
/** /**
@ -71,6 +105,11 @@ public function update(Request $request, string $id)
*/ */
public function destroy(string $id) public function destroy(string $id)
{ {
// $data = DataSoalModel::where('id_soal', $id)->delete();
return response()->json([
'status' => true,
'msg' => 'Data berhasil di hapus'
]);
} }
} }

View File

@ -33,8 +33,8 @@ protected static function boot()
{ {
parent::boot(); parent::boot();
static::creating(function ($model) { static::creating(function ($model) {
if (empty($model->id_lowongan_pekerjaan)) { if (empty($model->id_soal)) {
$model->id_lowongan_pekerjaan = Str::uuid(); $model->id_soal = Str::uuid();
} }
}); });
} }

View File

@ -58,6 +58,59 @@
</div> </div>
<!-- [ Main Content ] end --> <!-- [ Main Content ] end -->
<!-- Info Modal -->
<div class="modal fade" id="infoModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5" id="exampleModalLabel">Info Data</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-12 my-1">
<label for="info_pertanyaan" class="form-label">Pertanyaan</label>
<input disabled type="text" class="form-control" id="info_pertanyaan" name="info_pertanyaan">
</div>
<div class="col-md-12 my-1">
<label for="info_jawaban_a" class="form-label">Jawaban A</label>
<input disabled type="text" class="form-control" id="info_jawaban_a" name="info_jawaban_a">
</div>
<div class="col-md-12 my-1">
<label for="info_jawaban_b" class="form-label">Jawaban B</label>
<input disabled type="text" class="form-control" id="info_jawaban_b" name="info_jawaban_b">
</div>
<div class="col-md-12 my-1">
<label for="info_jawaban_c" class="form-label">Jawaban C</label>
<input disabled type="text" class="form-control" id="info_jawaban_c" name="info_jawaban_c">
</div>
<div class="col-md-12 my-1">
<label for="info_jawaban_d" class="form-label">Jawaban D</label>
<input disabled type="text" class="form-control" id="info_jawaban_d" name="info_jawaban_d">
</div>
<div class="col-md-12 my-1">
<label for="info_jawaban_e" class="form-label">Jawaban E</label>
<input disabled type="text" class="form-control" id="info_jawaban_e" name="info_jawaban_e">
</div>
<div class="col-md-6 my-1">
<label for="info_jawaban_benar" class="form-label">Jawaban Benar</label>
<select disabled class="form-select" name="info_jawaban_benar" id="info_jawaban_benar">
<option value="a">A</option>
<option value="b">B</option>
<option value="c">C</option>
<option value="d">D</option>
<option value="e">E</option>
</select>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Tutup</button>
</div>
</div>
</div>
</div>
<!-- Modal Add --> <!-- Modal Add -->
<div class="modal fade" id="addModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true"> <div class="modal fade" id="addModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog"> <div class="modal-dialog">
@ -106,16 +159,91 @@
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Batal</button> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Batal</button>
<button type="button" class="btn btn-primary" onclick="simpanAddData()">Simpan</button>
</div>
</div>
</div>
</div>
<!-- Edit Modal -->
<div class="modal fade" id="editModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5" id="exampleModalLabel">Edit Data</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-12 my-1">
<label for="edit_pertanyaan" class="form-label">Pertanyaan</label>
<input type="text" class="form-control" id="edit_pertanyaan" name="edit_pertanyaan">
</div>
<div class="col-md-12 my-1">
<label for="edit_jawaban_a" class="form-label">Jawaban A</label>
<input type="text" class="form-control" id="edit_jawaban_a" name="edit_jawaban_a">
</div>
<div class="col-md-12 my-1">
<label for="edit_jawaban_b" class="form-label">Jawaban B</label>
<input type="text" class="form-control" id="edit_jawaban_b" name="edit_jawaban_b">
</div>
<div class="col-md-12 my-1">
<label for="edit_jawaban_c" class="form-label">Jawaban C</label>
<input type="text" class="form-control" id="edit_jawaban_c" name="edit_jawaban_c">
</div>
<div class="col-md-12 my-1">
<label for="edit_jawaban_d" class="form-label">Jawaban D</label>
<input type="text" class="form-control" id="edit_jawaban_d" name="edit_jawaban_d">
</div>
<div class="col-md-12 my-1">
<label for="edit_jawaban_e" class="form-label">Jawaban E</label>
<input type="text" class="form-control" id="edit_jawaban_e" name="edit_jawaban_e">
</div>
<div class="col-md-6 my-1">
<label for="edit_jawaban_benar" class="form-label">Jawaban Benar</label>
<select class="form-select" name="edit_jawaban_benar" id="edit_jawaban_benar">
<option value="a">A</option>
<option value="b">B</option>
<option value="c">C</option>
<option value="d">D</option>
<option value="e">E</option>
</select>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Tutup</button>
<button type="button" class="btn btn-primary" onclick="simpanEditData()">Simpan</button> <button type="button" class="btn btn-primary" onclick="simpanEditData()">Simpan</button>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- Modal Delete -->
<div class="modal fade" id="deleteModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5" id="exampleModalLabel">Hapus Data</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
Apakah anda akan menghapus data soal "<span id="delete_soal" class="fw-bold"></span>" ini?
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Batal</button>
<button type="button" class="btn btn-danger" onclick="hapusData()">Hapus</button>
</div>
</div>
</div>
</div>
@endsection @endsection
@section('script') @section('script')
<script> <script>
let table = null; let table = null;
let idEdit = null;
let idHapus = null;
$(document).ready(function() { $(document).ready(function() {
table = new DataTable("#table-data", { table = new DataTable("#table-data", {
ajax: { ajax: {
@ -136,10 +264,13 @@
render: function(data, type, row, meta) { render: function(data, type, row, meta) {
return ` return `
<div class="btn-group"> <div class="btn-group">
<button type="button" class="btn btn-info btn-sm rounded-circle mx-1" data-bs-toggle="modal" data-bs-target="#editModal" onclick="getDataEdit(this)" data-id="${data.id}"> <button type="button" class="btn btn-primary btn-sm rounded-circle mx-1" data-bs-toggle="modal" data-bs-target="#infoModal" onclick="getDataInfo(this)" data-id="${data.id_soal}">
<i class="ti ti-file-info"></i>
</button>
<button type="button" class="btn btn-info btn-sm rounded-circle mx-1" data-bs-toggle="modal" data-bs-target="#editModal" onclick="getDataEdit(this)" data-id="${data.id_soal}">
<i class="ti ti-edit"></i> <i class="ti ti-edit"></i>
</button> </button>
<button class="btn btn-sm btn-danger delete-btn rounded-circle mx-1" data-bs-toggle="modal" data-bs-target="#deleteModal" onclick="getDataHapus(this)" data-id="${data.id}"> <button class="btn btn-sm btn-danger delete-btn rounded-circle mx-1" data-bs-toggle="modal" data-bs-target="#deleteModal" onclick="getDataHapus(this)" data-id="${data.id_soal}">
<i class="ti ti-trash"></i> <i class="ti ti-trash"></i>
</button> </button>
</div> </div>
@ -154,17 +285,138 @@ function fetchRowData() {
table.ajax.reload(null, false); table.ajax.reload(null, false);
} }
function getDataEdit(btn) { function simpanAddData() {
idEdit = btn.getAttribute('data-id'); let urlStore = '{{ route('soal.store') }}';
let urlEdit = '{{ route('users.edit', ['__ID__']) }}';
$.get(urlEdit.replace('__ID__', idEdit), function(data, status) { $.post(urlStore, {
'_token': document.getElementById('_token').getAttribute('value'),
'pertanyaan': $('#pertanyaan').val(),
'jawaban_a': $('#jawaban_a').val(),
'jawaban_b': $('#jawaban_b').val(),
'jawaban_c': $('#jawaban_c').val(),
'jawaban_d': $('#jawaban_d').val(),
'jawaban_e': $('#jawaban_e').val(),
'jawaban_benar': $('#jawaban_benar').val(),
}, function(data, status) {
$('#addModal').modal('hide');
Swal.fire({
title: "Info",
text: "Data berhasil ditambahkan!",
icon: "success"
});
fetchRowData();
});
}
function getDataInfo(btn) {
let idShow = btn.getAttribute('data-id');
let urlShow = '{{ route('soal.show', ['__ID__']) }}';
$.get(urlShow.replace('__ID__', idShow), function(data, status) {
if(data.status) { if(data.status) {
$('#edit_nama_user').val(data.data.name); $('#info_pertanyaan').attr('disabled', '');
$('#edit_email').val(data.data.email); $('#info_jawaban_a').attr('disabled', '');
$('#edit_role').val(data.data.role); $('#info_jawaban_b').attr('disabled', '');
$('#info_jawaban_c').attr('disabled', '');
$('#info_jawaban_d').attr('disabled', '');
$('#info_jawaban_e').attr('disabled', '');
$('#info_jawaban_benar').attr('disabled', '');
$('#info_pertanyaan').val(data.data.pertanyaan);
$('#info_jawaban_a').val(data.data.jawaban_a);
$('#info_jawaban_b').val(data.data.jawaban_b);
$('#info_jawaban_c').val(data.data.jawaban_c);
$('#info_jawaban_d').val(data.data.jawaban_d);
$('#info_jawaban_e').val(data.data.jawaban_e);
$('#info_jawaban_benar').val(data.data.jawaban_benar);
$('#info_pertanyaan').attr('disabled', 'disabled');
$('#info_jawaban_a').attr('disabled', 'disabled');
$('#info_jawaban_b').attr('disabled', 'disabled');
$('#info_jawaban_c').attr('disabled', 'disabled');
$('#info_jawaban_d').attr('disabled', 'disabled');
$('#info_jawaban_e').attr('disabled', 'disabled');
$('#info_jawaban_benar').attr('disabled', 'disabled');
} }
}); });
} }
function getDataEdit(btn) {
idEdit = btn.getAttribute('data-id');
let urlEdit = '{{ route('soal.edit', ['__ID__']) }}';
$.get(urlEdit.replace('__ID__', idEdit), function(data, status) {
if(data.status) {
$('#edit_pertanyaan').val(data.data.pertanyaan);
$('#edit_jawaban_a').val(data.data.jawaban_a);
$('#edit_jawaban_b').val(data.data.jawaban_b);
$('#edit_jawaban_c').val(data.data.jawaban_c);
$('#edit_jawaban_d').val(data.data.jawaban_d);
$('#edit_jawaban_e').val(data.data.jawaban_e);
$('#edit_jawaban_benar').val(data.data.jawaban_benar);
}
});
}
function simpanEditData() {
if(idEdit != null) {
let urlUpdate = '{{ route('soal.update', ['__ID__']) }}';
$.post(urlUpdate.replace('__ID__', idEdit), {
'_token': document.getElementById('_token').getAttribute('value'),
'_method': 'PUT',
'pertanyaan': $('#edit_pertanyaan').val(),
'jawaban_a': $('#edit_jawaban_a').val(),
'jawaban_b': $('#edit_jawaban_b').val(),
'jawaban_c': $('#edit_jawaban_c').val(),
'jawaban_d': $('#edit_jawaban_d').val(),
'jawaban_e': $('#edit_jawaban_e').val(),
'jawaban_benar': $('#edit_jawaban_benar').val(),
}, function(data, status) {
if(data.status) {
$('#editModal').modal('hide');
Swal.fire({
title: "Info",
text: "Data berhasil di edit!",
icon: "success"
});
fetchRowData();
idEdit = null;
}
});
}
}
function getDataHapus(btn) {
idHapus = btn.getAttribute('data-id');
let urlShow = '{{ route('soal.show', ['__ID__']) }}';
$.get(urlShow.replace('__ID__', idHapus), function(data, status) {
if(data.status) {
$('#delete_soal').html(data.data.pertanyaan);
}
});
}
function hapusData() {
if(idHapus != null) {
let urlDestroy = '{{ route('soal.destroy', ['__ID__']) }}';
$.post(urlDestroy.replace('__ID__', idHapus), {
'_token': document.getElementById('_token').getAttribute('value'),
'_method': 'DELETE'
}, function(data, status) {
if(data.status) {
$('#deleteModal').modal('hide');
Swal.fire({
title: "Info",
text: "Data berhasil dihapus!",
icon: "success"
});
fetchRowData();
idHapus = null;
}
});
}
}
</script> </script>
@endsection @endsection