Commit 2bc881fe authored by Reinol Simangunsong's avatar Reinol Simangunsong
Browse files

uhuy

No related merge requests found
Showing with 269 additions and 80 deletions
+269 -80
......@@ -3,6 +3,8 @@
namespace App\Http\Controllers;
use App\Models\Diklat;
use App\Models\Jabatan;
use App\Models\MetodePelatihan;
use Illuminate\Http\Request;
class DiklatController extends Controller
......@@ -29,33 +31,52 @@ public function index(Request $request)
// Show the form for creating a new Diklat
public function create()
{
return view('ekatalog.creatediklat');
$jabatan = Jabatan::all();
$metodePelaksanaan = MetodePelatihan::all();
return view('ekatalog.creatediklat', compact('jabatan','metodePelaksanaan'));
}
// Store a new Diklat in the database
public function store(Request $request)
{
// Validate the form data
// Validasi input form
$request->validate([
'jenis_diklat' => 'required|string|max:255',
'nama_diklat' => 'required|string|max:255',
'rumpun' => 'required|string|max:255',
'kode_jabatan' => 'required|string|max:50',
'kode_jabatan' => 'required|string|exists:jabatan,kode_jabatan', // Memastikan kode jabatan ada di tabel jabatan
'penyelenggara' => 'required|string|max:255',
'tanggal_pelaksanaan' => 'required|date',
'tempat_pelaksanaan' => 'required|string|max:255',
'metode_pelaksanaan' => 'required|string|max:255',
'metode_pelaksanaan' => 'required|exists:metode_pelatihan,kode_pelatihan', // Memastikan metode pelaksanaan ada di tabel metode_pelatihan
'jenis_biaya' => 'required|string|max:255',
'biaya_per_orang' => 'required|numeric',
'link_katalog' => 'nullable|url',
]);
// Create a new Diklat record
// Ambil data jabatan berdasarkan kode_jabatan
$jabatan = Jabatan::where('kode_jabatan', $request->kode_jabatan)->first();
// Jika jabatan tidak ditemukan, redirect dengan pesan error
if (!$jabatan) {
return redirect()->back()->with('error', 'Jabatan dengan kode yang diberikan tidak ditemukan.');
}
// Ambil data metode pelaksanaan berdasarkan kode_pelatihan
$metodePelaksanaan = MetodePelatihan::where('kode_pelatihan', $request->metode_pelaksanaan)->first();
// Jika metode pelaksanaan tidak ditemukan, redirect dengan pesan error
if (!$metodePelaksanaan) {
return redirect()->back()->with('error', 'Metode pelaksanaan yang diberikan tidak ditemukan.');
}
// Simpan data diklat
Diklat::create([
'jenis_diklat' => $request->jenis_diklat,
'nama_diklat' => $request->nama_diklat,
'rumpun' => $request->rumpun,
'kode_jabatan' => $request->kode_jabatan,
'nama_jabatan' => $jabatan->jabatan, // Simpan nama jabatan
'penyelenggara' => $request->penyelenggara,
'tanggal_pelaksanaan' => $request->tanggal_pelaksanaan,
'tempat_pelaksanaan' => $request->tempat_pelaksanaan,
......@@ -64,10 +85,12 @@ public function store(Request $request)
'biaya_per_orang' => $request->biaya_per_orang,
'link_katalog' => $request->link_katalog,
]);
// Redirect to the Diklat list with a success message
// Redirect ke halaman daftar diklat dengan pesan sukses
return redirect()->route('ekatalog.diklat')->with('success', 'Diklat successfully added.');
}
// Show the form for editing a Diklat
public function edit($id)
......
......@@ -2,6 +2,7 @@
namespace App\Http\Controllers;
use App\Models\Jabatan;
use App\Models\Pelatihan;
use App\Models\PelaksanaanPelatihan;
use App\Models\JenisPelatihan;
......@@ -21,13 +22,16 @@ public function index()
$metodePelatihan = MetodePelatihan::all(); // Ganti dengan model yang sesuai
$golongan = Golongan::all(); // Ganti dengan model yang sesuai
$unitKerja = UnitKerja::all(); // Ganti dengan model yang sesuai
$jabatan = Jabatan::all(); // Ganti dengan model yang sesuai
return view('ekatalog.database', compact(
'pelaksanaanPelatihan',
'jenisPelatihan',
'metodePelatihan',
'golongan',
'unitKerja'
'unitKerja',
'jabatan',
));
}
......@@ -83,6 +87,10 @@ public function store(Request $request, $type)
'sub_unitkerja' => 'required|string|max:255',
'unitkerja' => 'required|string|max:255',
'singkatan' => 'required|string|max:255',
],
'jabatan' => [
'kode_jabatan'=> 'required|string|max:255',
'jabatan'=> 'required|string|max:255',
]
];
......@@ -119,6 +127,13 @@ public function store(Request $request, $type)
'pangkat' => $validatedData['pangkat'],
]);
break;
case 'jabatan':
Jabatan::create([
'kode_jabatan' => $validatedData['kode_jabatan'],
'jabatan' => $validatedData['jabatan'],
]);
break;
case 'unitkerja':
UnitKerja::create([
......@@ -141,31 +156,36 @@ public function store(Request $request, $type)
// PelatihanController.php
public function delete($model, $id)
{
// Membuat nama kelas model secara dinamis
$modelClass = 'App\\Models\\' . $model;
try {
// Membuat nama kelas model secara dinamis
$modelClass = 'App\\Models\\' . $model;
// Pastikan model tersebut ada di dalam namespace App\Models
if (!class_exists($modelClass)) {
return redirect()->back()->with('error', 'Model not found');
}
// Pastikan model tersebut ada di dalam namespace App\Models
if (!class_exists($modelClass)) {
return redirect()->back()->with('error', 'Model not found');
}
// Cek apakah model tersebut memiliki kolom primary key yang berbeda (contohnya 'id_pelaksanaanpelatihan')
$primaryKey = 'id'; // Default primary key
if (in_array('id_pelaksanaanpelatihan', (new $modelClass)->getFillable())) {
$primaryKey = 'id_pelaksanaanpelatihan';
}
// Membuat instance dari model untuk mendapatkan informasi tentang primary key
$modelInstance = new $modelClass;
// Mencari item berdasarkan ID dan kolom primary key yang sesuai
$item = $modelClass::where($primaryKey, $id)->first();
// Periksa apakah primary key berbeda dengan default 'id'
$primaryKey = $modelInstance->getKeyName();
if (!$item) {
return redirect()->back()->with('error', 'Item not found');
}
// Mencari item berdasarkan ID dan primary key yang sesuai
$item = $modelClass::where($primaryKey, $id)->first();
if (!$item) {
return redirect()->back()->with('error', 'Item not found');
}
// Hapus item
$item->delete();
// Hapus item
$item->delete();
return redirect()->back()->with('success', 'Item deleted successfully');
return redirect()->back()->with('success', 'Item deleted successfully');
} catch (\Exception $e) {
// Menangkap error dan memberikan feedback
return redirect()->back()->with('error', 'An error occurred: ' . $e->getMessage());
}
}
......@@ -173,4 +193,5 @@ public function delete($model, $id)
}
......@@ -8,6 +8,8 @@ class Golongan extends Model
{
use HasFactory;
protected $table = 'golongan';
protected $primaryKey = 'id_golongan'; // Nama primary key
protected $fillable = [
'kode_golongan',
......
......@@ -8,10 +8,10 @@ class Jabatan extends Model
{
use HasFactory;
protected $table = 'jabatan';
protected $primaryKey = 'id_jabatan'; // Nama primary key
protected $fillable = [
'kode_unitkerja',
'sub_unitkerja',
'unitkerja',
'singkatan',
'kode_jabatan',
'jabatan',
];
}
......@@ -8,7 +8,9 @@ class JenisPelatihan extends Model
{
use HasFactory;
protected $table = 'jenis_pelatihan';
protected $primaryKey = 'id_jenispelatihan'; // Nama primary key
protected $fillable = [
'id_jenispelatihan',
'kode_pelatihan',
'jenis_pelatihan',
];
......
......@@ -8,8 +8,9 @@ class MetodePelatihan extends Model
{
use HasFactory;
protected $table = 'metode_pelatihan';
protected $primaryKey = 'id_metodepelatihan'; // Nama primary key
protected $fillable = [
'id_metodepelatihan',
'kode_pelatihan',
'metode_pelatihan',
];
......
......@@ -8,8 +8,9 @@ class PelaksanaanPelatihan extends Model
{
use HasFactory;
protected $table = 'pelaksanaan_pelatihan';
protected $primaryKey = 'id_pelaksanaanpelatihan'; // Nama primary key
protected $fillable = [
'id_pelaksanaanpelatihan',
'kode_pelaksanaanpelatihan',
'pelaksanaan_pelatihan',
];
......
......@@ -17,6 +17,8 @@ public function up()
$table->string('no_telepon');
$table->string('nomor_surat');
$table->string('no_hp');
$table->string('katalog_pdf');
$table->string('katalog_excel');
$table->string('status_ajuan');
$table->timestamps();
});
......
File added
File added
File added
File added
File added
File added
File added
......@@ -7,6 +7,18 @@
<div class="card shadow-lg">
<div class="card-header" style="background-color: #D1B28B; color: black;">
<h3 class="mb-0 text-center fw-bold">INPUT DRAFT DIKLAT</h3>
@if (session('error'))
<div class="alert alert-danger">
{{ session('error') }}
</div>
@endif
@if (session('success'))
<div class="alert alert-success">
{{ session('success') }}
</div>
@endif
</div>
<div class="card-body" style="background-color: #f8f5f1;">
......@@ -20,38 +32,60 @@
<div class="col-md-6">
<div class="mb-3">
<label for="jenis_diklat" class="form-label">Jenis Diklat</label>
<input type="text" class="form-control" id="jenis_diklat" name="jenis_diklat"
placeholder="Masukkan jenis diklat" required>
<input type="text" class="form-control @error('jenis_diklat') is-invalid @enderror" id="jenis_diklat" name="jenis_diklat"
placeholder="Masukkan jenis diklat" value="{{ old('jenis_diklat') }}" required>
@error('jenis_diklat')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="mb-3">
<label for="nama_diklat" class="form-label">Nama Diklat</label>
<input type="text" class="form-control" id="nama_diklat" name="nama_diklat"
placeholder="Masukkan nama diklat" required>
<input type="text" class="form-control @error('nama_diklat') is-invalid @enderror" id="nama_diklat" name="nama_diklat"
placeholder="Masukkan nama diklat" value="{{ old('nama_diklat') }}" required>
@error('nama_diklat')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="mb-3">
<label for="rumpun" class="form-label">Rumpun</label>
<input type="text" class="form-control" id="rumpun" name="rumpun"
placeholder="Masukkan rumpun" required>
<input type="text" class="form-control @error('rumpun') is-invalid @enderror" id="rumpun" name="rumpun"
placeholder="Masukkan rumpun" value="{{ old('rumpun') }}" required>
@error('rumpun')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="mb-3">
<label for="kode_jabatan" class="form-label">Kode Jabatan</label>
<input type="text" class="form-control" id="kode_jabatan" name="kode_jabatan"
placeholder="Masukkan kode jabatan" required>
<select class="form-select @error('kode_jabatan') is-invalid @enderror" id="kode_jabatan" name="kode_jabatan" required>
<option value="" disabled selected>Pilih Kode Jabatan</option>
@foreach ($jabatan as $item)
<option value="{{ $item->kode_jabatan }}" {{ old('kode_jabatan') == $item->kode_jabatan ? 'selected' : '' }}>{{ $item->kode_jabatan }} - {{ $item->jabatan }}</option>
@endforeach
</select>
@error('kode_jabatan')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="mb-3">
<label for="penyelenggara" class="form-label">Penyelenggara</label>
<input type="text" class="form-control" id="penyelenggara" name="penyelenggara"
placeholder="Masukkan penyelenggara" required>
<input type="text" class="form-control @error('penyelenggara') is-invalid @enderror" id="penyelenggara" name="penyelenggara"
placeholder="Masukkan penyelenggara" value="{{ old('penyelenggara') }}" required>
@error('penyelenggara')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="mb-3">
<label for="tanggal_pelaksanaan" class="form-label">Tanggal Pelaksanaan</label>
<input type="date" class="form-control" id="tanggal_pelaksanaan"
name="tanggal_pelaksanaan" required>
<input type="date" class="form-control @error('tanggal_pelaksanaan') is-invalid @enderror" id="tanggal_pelaksanaan"
name="tanggal_pelaksanaan" value="{{ old('tanggal_pelaksanaan') }}" required>
@error('tanggal_pelaksanaan')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
</div>
......@@ -59,32 +93,51 @@
<div class="col-md-6">
<div class="mb-3">
<label for="tempat_pelaksanaan" class="form-label">Tempat Pelaksanaan</label>
<input type="text" class="form-control" id="tempat_pelaksanaan"
name="tempat_pelaksanaan" placeholder="Masukkan tempat pelaksanaan" required>
<input type="text" class="form-control @error('tempat_pelaksanaan') is-invalid @enderror" id="tempat_pelaksanaan"
name="tempat_pelaksanaan" placeholder="Masukkan tempat pelaksanaan" value="{{ old('tempat_pelaksanaan') }}" required>
@error('tempat_pelaksanaan')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="mb-3">
<label for="metode_pelaksanaan" class="form-label">Metode Pelaksanaan</label>
<input type="text" class="form-control" id="metode_pelaksanaan"
name="metode_pelaksanaan" placeholder="Masukkan metode pelaksanaan" required>
</div>
<select class="form-select @error('metode_pelaksanaan') is-invalid @enderror" id="metode_pelaksanaan" name="metode_pelaksanaan" required>
<option value="" disabled selected>Pilih Metode Pelaksanaan</option>
@foreach ($metodePelaksanaan as $item)
<option value="{{ $item->kode_pelatihan }}" {{ old('metode_pelaksanaan') == $item->kode_pelatihan ? 'selected' : '' }}>{{ $item->metode_pelatihan }}- {{ $item->kode_pelatihan }}</option>
@endforeach
</select>
@error('metode_pelaksanaan')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
<div class="mb-3">
<label for="jenis_biaya" class="form-label">Jenis Biaya</label>
<input type="text" class="form-control" id="jenis_biaya" name="jenis_biaya"
placeholder="Masukkan jenis biaya" required>
<input type="text" class="form-control @error('jenis_biaya') is-invalid @enderror" id="jenis_biaya" name="jenis_biaya"
placeholder="Masukkan jenis biaya" value="{{ old('jenis_biaya') }}" required>
@error('jenis_biaya')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="mb-3">
<label for="biaya_per_orang" class="form-label">Biaya /Orang</label>
<input type="number" class="form-control" id="biaya_per_orang" name="biaya_per_orang"
placeholder="Masukkan biaya per orang" required>
<input type="number" class="form-control @error('biaya_per_orang') is-invalid @enderror" id="biaya_per_orang" name="biaya_per_orang"
placeholder="Masukkan biaya per orang" value="{{ old('biaya_per_orang') }}" required>
@error('biaya_per_orang')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="mb-3">
<label for="link_katalog" class="form-label">Link Katalog</label>
<input type="url" class="form-control" id="link_katalog" name="link_katalog"
placeholder="Masukkan link katalog" required>
<input type="url" class="form-control @error('link_katalog') is-invalid @enderror" id="link_katalog" name="link_katalog"
placeholder="Masukkan link katalog" value="{{ old('link_katalog') }}" required>
@error('link_katalog')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
</div>
</div>
......@@ -108,4 +161,5 @@
<style>
/* Add your CSS styles here */
</style>
@endsection
......@@ -54,11 +54,7 @@
<div class="form-group">
<label for="pelaksanaan_pelatihan">Pelaksanaan</label>
<!-- Dropdown for 'Pelaksanaan' field -->
<select id="pelaksanaan_pelatihan" name="pelaksanaan_pelatihan" class="form-control" required>
<option value="">-- Pilih Pelaksanaan --</option>
<option value="Penyelenggaraan">Penyelenggaraan</option>
<option value="Pengiriman">Pengiriman</option>
<input type="text" id="pelaksanaan_pelatihan" name="pelaksanaan_pelatihan" class="form-control" required>
</select>
</div>
......@@ -89,12 +85,8 @@
<div class="form-group">
<label for="jenis_pelatihan">Jenis Pelatihan</label>
<select id="jenis_pelatihan" name="jenis_pelatihan" class="form-control" required>
<option value="">-- Pilih Jenis Pelatihan --</option>
<option value="Diklat Teknis">Diklat Teknis</option>
<option value="Diklat Kepemimpinan">Diklat Kepemimpinan</option>
<option value="Diklat Dasar">Diklat Dasar</option>
</select>
<input type="text" id="jenis_pelatihan" name="jenis_pelatihan" class="form-control" required>
</input>
</div>
<button type="submit" class="btn btn-success">Save</button>
......@@ -123,12 +115,7 @@
<div class="form-group">
<label for="metode_pelatihan">Metode Pelatihan</label>
<select id="metode_pelatihan" name="metode_pelatihan" class="form-control" required>
<option value="">-- Pilih Metode Pelatihan --</option>
<option value="Blended Learning">Blended Learning</option>
<option value="Klasikal">Klasikal</option>
<option value="E-learning">E-learning</option>
</select>
<input type="text" id="metode_pelatihan" name="metode_pelatihan" class="form-control" required>
</div>
<button type="submit" class="btn btn-success">Save</button>
......@@ -170,6 +157,43 @@
</div>
</div>
<!-- Button to Open Modal for Jabatan -->
<button type="button" class="btn btn-primary" onclick="openModal('jabatan')">
Add New Jabatan
</button>
<!-- The Modal for Unit Kerja -->
<div id="jabatanModal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close" onclick="closeModal('jabatan')">&times;</span>
<h2>Add New Jabatan</h2>
<!-- Form inside the Modal -->
<form id="jabatanForm" action="{{ route('pelatihan.store', ['type' => 'jabatan']) }}" method="POST">
@csrf
<div class="form-group">
<label for="kode_jabatan">Kode Unit Kerja</label>
<input
type="text"
id="kode_jabatan"
name="kode_jabatan"
class="form-control"
required
pattern="^\d{1,11}$"
maxlength="11"
title="Harap masukkan angka dengan panjang maksimal 11 karakter">
</div>
<div class="form-group">
<label for="jabatan">Jabatan</label>
<input type="text" id="jabatan" name="jabatan" class="form-control" required>
</div>
<button type="submit" class="btn btn-success">Save</button>
</form>
</div>
</div>
<!-- Button to Open Modal for Unit Kerja -->
<button type="button" class="btn btn-primary" onclick="openModal('unitkerja')">
Add New Unit Kerja
......@@ -186,7 +210,15 @@
@csrf
<div class="form-group">
<label for="kode_unitkerja">Kode Unit Kerja</label>
<input type="text" id="kode_unitkerja" name="kode_unitkerja" class="form-control" required>
<input
type="text"
id="kode_unitkerja"
name="kode_unitkerja"
class="form-control"
required
pattern="^\d{1,11}$"
maxlength="11"
title="Harap masukkan angka dengan panjang maksimal 11 karakter">
</div>
<div class="form-group">
......@@ -211,7 +243,7 @@
</div>
</div>
<!-- Pelaksanaan Pelatihan -->
<div class="accordion" id="databaseAccordion">
<div class="accordion" id="databaseAccordion">
<!-- Pelaksanaan Pelatihan -->
<div class="accordion-item">
......@@ -398,6 +430,52 @@
</div>
</div>
<!-- Jabatan -->
<div class="accordion-item">
<h2 class="accordion-header" id="headingJabatan">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseJabatan" aria-expanded="false" aria-controls="collapseJabatan">
<i class="bi bi-award-fill"></i> Jabatan
<span class="badge bg-primary ms-2">{{ $jabatan->count() }}</span>
</button>
</h2>
<div id="collapseJabatan" class="accordion-collapse collapse" aria-labelledby="headingJabatan" data-bs-parent="#databaseAccordion">
<div class="accordion-body">
<table class="table table-hover table-bordered shadow-sm">
<thead class="table-danger text-center">
<tr>
<th>#</th>
<th>Kode Jabatan</th>
<th>Jabatan</th>
<th>Action</th>
</tr>
</thead>
<tbody>
@forelse ($jabatan as $index => $item)
<tr>
<td class="text-center">{{ $index + 1 }}</td>
<td>{{ $item->kode_jabatan }}</td>
<td>{{ $item->jabatan }}</td>
<td class="text-center">
<form action="{{ route('deletedata', ['model' => 'Jabatan', 'id' => $item->id_jabatan]) }}" method="POST" onsubmit="return confirm('Are you sure you want to delete this item?')">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-sm btn-outline-danger rounded-pill">
<i class="bi bi-trash"></i> Delete
</button>
</form>
</td>
</tr>
@empty
<tr>
<td colspan="5" class="text-center text-muted">No data found for Jabatan.</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
<!-- Unit Kerja -->
<div class="accordion-item">
<h2 class="accordion-header" id="headingUnitKerja">
......@@ -465,7 +543,7 @@ function closeModal(type) {
// Close modal if clicked outside the modal
window.onclick = function(event) {
var modalTypes = ['pelaksanaan', 'jenis', 'metode', 'golongan', 'unitkerja'];
var modalTypes = ['pelaksanaan', 'jenis', 'metode', 'golongan', 'unitkerja','jabatan'];
modalTypes.forEach(function(type) {
var modal = document.getElementById(type + 'Modal');
if (event.target == modal) {
......@@ -508,8 +586,7 @@ function closeModal(type) {
}
/* Kontainer tabel dengan scrollbar jika konten terlalu panjang */
.table-container {
max-width: 90%; /* Maksimum lebar 100% */
width: 100%;
width: 400px;
overflow-x: auto; /* Menambahkan scroll horizontal jika tabel lebih lebar dari kontainer */
}
......@@ -524,7 +601,13 @@ function closeModal(type) {
display: block; /* Membuat tabel menjadi block agar bisa mengaktifkan scroll */
border-collapse: collapse; /* Memastikan border tabel bersatu */
}
.accordion {
width: 85%;
margin-left: 200px; /* Menambahkan margin kiri untuk menggeser container ke kanan */
}
.accordion-body {
width: 85%;
}
/* Penataan untuk header tabel */
.table th {
background-color: #f0e7d2;
......
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