edit pelatih
This commit is contained in:
parent
b73d74ebee
commit
723a179871
|
|
@ -3,6 +3,7 @@
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Models\Anggota;
|
use App\Models\Anggota;
|
||||||
|
use App\Models\Kolat;
|
||||||
use App\Models\Role;
|
use App\Models\Role;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Storage;
|
use Illuminate\Support\Facades\Storage;
|
||||||
|
|
@ -74,8 +75,11 @@ public function store(Request $request)
|
||||||
// Menampilkan form edit data kepelatihan (misal perpanjang SK)
|
// Menampilkan form edit data kepelatihan (misal perpanjang SK)
|
||||||
public function edit($id)
|
public function edit($id)
|
||||||
{
|
{
|
||||||
|
|
||||||
$pelatih = Anggota::findOrFail($id);
|
$pelatih = Anggota::findOrFail($id);
|
||||||
return view('pelatih.editpelatih', compact('pelatih'));
|
$data_kolat = Kolat::all();
|
||||||
|
|
||||||
|
return view('pelatih.editpelatih', compact('pelatih', 'data_kolat'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update(Request $request, $id)
|
public function update(Request $request, $id)
|
||||||
|
|
@ -83,8 +87,11 @@ public function update(Request $request, $id)
|
||||||
$pelatih = Anggota::findOrFail($id);
|
$pelatih = Anggota::findOrFail($id);
|
||||||
|
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'no_sk' => 'required|unique:anggotas,no_sk,' . $id,
|
'nama_lengkap' => 'required|string|max:255',
|
||||||
'tgl_sk' => 'required|date',
|
'email' => 'required|email|unique:users,email,' . $pelatih->user_id, // validasi email user
|
||||||
|
'no_hp' => 'required',
|
||||||
|
'no_sk' => 'required|unique:anggotas,no_sk,' . $id, // pastikan nama tabel benar 'anggota'
|
||||||
|
'tgl_sk' => 'nullable|date', // tambahkan jika di form ada tgl_sk
|
||||||
'foto_sk' => 'nullable|image|max:2048',
|
'foto_sk' => 'nullable|image|max:2048',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,9 @@
|
||||||
|
|
||||||
class Pelatih extends Model
|
class Pelatih extends Model
|
||||||
{
|
{
|
||||||
|
|
||||||
|
protected $table = 'anggota';
|
||||||
|
|
||||||
// Kolom yang boleh diisi massal
|
// Kolom yang boleh diisi massal
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
'anggota_id',
|
'anggota_id',
|
||||||
|
|
@ -23,4 +26,9 @@ public function anggota(): BelongsTo
|
||||||
{
|
{
|
||||||
return $this->belongsTo(Anggota::class, 'anggota_id');
|
return $this->belongsTo(Anggota::class, 'anggota_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// public function kolat(): BelongsTo
|
||||||
|
// {
|
||||||
|
// return $this->belongsTo(Kolat::class, 'kolat_id');
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ class DatabaseSeeder extends Seeder
|
||||||
public function run(): void
|
public function run(): void
|
||||||
{
|
{
|
||||||
$this->call([
|
$this->call([
|
||||||
RoleSeeder::class,
|
// RoleSeeder::class,
|
||||||
KolatSeeder::class,
|
KolatSeeder::class,
|
||||||
UserSeeder::class,
|
UserSeeder::class,
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,8 @@ class KolatSeeder extends Seeder
|
||||||
public function run(): void
|
public function run(): void
|
||||||
{
|
{
|
||||||
DB::table('kolat')->insert([
|
DB::table('kolat')->insert([
|
||||||
'id' => 1, // Kita paksa ID 1 biar nyambung sama UserSeeder tadi
|
'id' => 2, // Kita paksa ID 1 biar nyambung sama UserSeeder tadi
|
||||||
'nama_kolat' => 'Kolat Polije',
|
'nama_kolat' => 'Kolat Unej',
|
||||||
'created_at' => now(),
|
'created_at' => now(),
|
||||||
'updated_at' => now(),
|
'updated_at' => now(),
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,6 @@
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<label class="form-label fw-bold">No. WhatsApp</label>
|
<label class="form-label fw-bold">No. WhatsApp</label>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<span class="input-group-text bg-light">+62</span>
|
|
||||||
<input type="number" name="no_hp" class="form-control" value="{{ old('no_hp', $anggota->no_hp) }}" required>
|
<input type="number" name="no_hp" class="form-control" value="{{ old('no_hp', $anggota->no_hp) }}" required>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,15 @@ class="text-muted text-decoration-none small">Daftar Pelatih</a></li>
|
||||||
</ol>
|
</ol>
|
||||||
</nav>
|
</nav>
|
||||||
<h3 class="fw-bold text-dark">Form Edit Data Pelatih</h3>
|
<h3 class="fw-bold text-dark">Form Edit Data Pelatih</h3>
|
||||||
|
@if ($errors->any())
|
||||||
|
<div class="alert alert-danger shadow-sm" style="border-radius: 12px;">
|
||||||
|
<ul class="mb-0">
|
||||||
|
@foreach ($errors->all() as $error)
|
||||||
|
<li>{{ $error }}</li>
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
<p class="text-muted small">Perbarui profil pribadi dan legalitas SK pelatih <strong>{{ $pelatih->nama_lengkap }}</strong>.</p>
|
<p class="text-muted small">Perbarui profil pribadi dan legalitas SK pelatih <strong>{{ $pelatih->nama_lengkap }}</strong>.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -154,10 +154,10 @@
|
||||||
<!-- Avatar Inisial -->
|
<!-- Avatar Inisial -->
|
||||||
<div class="rounded-circle bg-primary text-white d-flex align-items-center justify-content-center me-3 shadow-sm"
|
<div class="rounded-circle bg-primary text-white d-flex align-items-center justify-content-center me-3 shadow-sm"
|
||||||
style="width: 40px; height: 40px; font-size: 14px; font-weight: bold; background: linear-gradient(45deg, #0d6efd, #0099bc);">
|
style="width: 40px; height: 40px; font-size: 14px; font-weight: bold; background: linear-gradient(45deg, #0d6efd, #0099bc);">
|
||||||
{{ strtoupper(substr($spp->anggota->nama, 0, 1)) }}
|
{{ strtoupper(substr($spp->anggota->nama_lengkap, 0, 1)) }}
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div class="fw-bold text-dark" style="font-size: 0.95rem;">{{ $spp->anggota->nama }}</div>
|
<div class="fw-bold text-dark" style="font-size: 0.95rem;">{{ $spp->anggota->nama_lengkap }}</div>
|
||||||
<span class="badge bg-light text-muted border fw-normal" style="font-size: 0.75rem;">
|
<span class="badge bg-light text-muted border fw-normal" style="font-size: 0.75rem;">
|
||||||
ID: {{ $spp->anggota_id }}
|
ID: {{ $spp->anggota_id }}
|
||||||
</span>
|
</span>
|
||||||
|
|
|
||||||
|
|
@ -94,6 +94,30 @@
|
||||||
|
|
||||||
// Rute untuk Presensi
|
// Rute untuk Presensi
|
||||||
Route::prefix('presensi')->name('presensi.')->group(function () {
|
Route::prefix('presensi')->name('presensi.')->group(function () {
|
||||||
|
Route::get('/', [PresensiController::class, 'index'])->name('index');
|
||||||
|
|
||||||
|
// Halaman daftar kehadiran anggota pada jadwal tertentu (tampil QR Code & List)
|
||||||
|
Route::get('/kehadiran/{jadwal_id}', [PresensiController::class, 'kehadiran'])->name('kehadiran');
|
||||||
|
|
||||||
|
// Proses konfirmasi/verifikasi pelatih klik tombol "Sah"
|
||||||
|
Route::post('/konfirmasi/{presensi_id}', [PresensiController::class, 'konfirmasi'])->name('konfirmasi');
|
||||||
|
|
||||||
|
// Proses tambah presensi manual (Kasus Lupa HP)
|
||||||
|
Route::post('/tambah-manual', [PresensiController::class, 'storeManual'])->name('storeManual');
|
||||||
|
|
||||||
|
// --- AKTOR: ANGGOTA ---
|
||||||
|
// Halaman daftar jadwal hari ini di sisi anggota (Tampil tombol "Scan Absen")
|
||||||
|
Route::get('/anggota', [PresensiController::class, 'indexAnggota'])->name('anggota.index');
|
||||||
|
|
||||||
|
Route::get('/riwayat', [PresensiController::class, 'riwayatAnggota'])->name('anggota.riwayat');
|
||||||
|
|
||||||
|
// Halaman Kamera Scanner (Tempat anggota men-scan QR Code pelatih)
|
||||||
|
Route::get('/scan/{jadwal_id}', [PresensiController::class, 'scan'])->name('anggota.scan');
|
||||||
|
|
||||||
|
// Proses penyimpanan absen mandiri setelah sukses scan
|
||||||
|
Route::post('/store-mandiri', [PresensiController::class, 'storeMandiri'])->name('storeMandiri');
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
//Penialaian
|
//Penialaian
|
||||||
|
|
||||||
|
|
@ -124,30 +148,6 @@
|
||||||
|
|
||||||
// --- AKTOR: PENGURUS / PELATIH ---
|
// --- AKTOR: PENGURUS / PELATIH ---
|
||||||
// Halaman utama rekap jadwal (untuk pilih jadwal mana yang mau dicek)
|
// Halaman utama rekap jadwal (untuk pilih jadwal mana yang mau dicek)
|
||||||
Route::get('/', [PresensiController::class, 'index'])->name('index');
|
|
||||||
|
|
||||||
// Halaman daftar kehadiran anggota pada jadwal tertentu (tampil QR Code & List)
|
|
||||||
Route::get('/kehadiran/{jadwal_id}', [PresensiController::class, 'kehadiran'])->name('kehadiran');
|
|
||||||
|
|
||||||
// Proses konfirmasi/verifikasi pelatih klik tombol "Sah"
|
|
||||||
Route::post('/konfirmasi/{presensi_id}', [PresensiController::class, 'konfirmasi'])->name('konfirmasi');
|
|
||||||
|
|
||||||
// Proses tambah presensi manual (Kasus Lupa HP)
|
|
||||||
Route::post('/tambah-manual', [PresensiController::class, 'storeManual'])->name('storeManual');
|
|
||||||
|
|
||||||
// --- AKTOR: ANGGOTA ---
|
|
||||||
// Halaman daftar jadwal hari ini di sisi anggota (Tampil tombol "Scan Absen")
|
|
||||||
Route::get('/anggota', [PresensiController::class, 'indexAnggota'])->name('anggota.index');
|
|
||||||
|
|
||||||
Route::get('/riwayat', [PresensiController::class, 'riwayatAnggota'])->name('anggota.riwayat');
|
|
||||||
|
|
||||||
// Halaman Kamera Scanner (Tempat anggota men-scan QR Code pelatih)
|
|
||||||
Route::get('/scan/{jadwal_id}', [PresensiController::class, 'scan'])->name('anggota.scan');
|
|
||||||
|
|
||||||
// Proses penyimpanan absen mandiri setelah sukses scan
|
|
||||||
Route::post('/store-mandiri', [PresensiController::class, 'storeMandiri'])->name('storeMandiri');
|
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue