edit pelatih
This commit is contained in:
parent
b73d74ebee
commit
723a179871
|
|
@ -3,6 +3,7 @@
|
|||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Anggota;
|
||||
use App\Models\Kolat;
|
||||
use App\Models\Role;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
|
@ -74,19 +75,25 @@ public function store(Request $request)
|
|||
// Menampilkan form edit data kepelatihan (misal perpanjang SK)
|
||||
public function edit($id)
|
||||
{
|
||||
$pelatih = Anggota::findOrFail($id);
|
||||
return view('pelatih.editpelatih', compact('pelatih'));
|
||||
}
|
||||
|
||||
$pelatih = Anggota::findOrFail($id);
|
||||
$data_kolat = Kolat::all();
|
||||
|
||||
return view('pelatih.editpelatih', compact('pelatih', 'data_kolat'));
|
||||
}
|
||||
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
$pelatih = Anggota::findOrFail($id);
|
||||
|
||||
$request->validate([
|
||||
'no_sk' => 'required|unique:anggotas,no_sk,' . $id,
|
||||
'tgl_sk' => 'required|date',
|
||||
'foto_sk' => 'nullable|image|max:2048',
|
||||
]);
|
||||
$request->validate([
|
||||
'nama_lengkap' => 'required|string|max:255',
|
||||
'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',
|
||||
]);
|
||||
|
||||
$data = $request->all();
|
||||
|
||||
|
|
|
|||
|
|
@ -8,6 +8,9 @@
|
|||
|
||||
class Pelatih extends Model
|
||||
{
|
||||
|
||||
protected $table = 'anggota';
|
||||
|
||||
// Kolom yang boleh diisi massal
|
||||
protected $fillable = [
|
||||
'anggota_id',
|
||||
|
|
@ -23,4 +26,9 @@ public function anggota(): BelongsTo
|
|||
{
|
||||
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
|
||||
{
|
||||
$this->call([
|
||||
RoleSeeder::class,
|
||||
// RoleSeeder::class,
|
||||
KolatSeeder::class,
|
||||
UserSeeder::class,
|
||||
]);
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ class KolatSeeder extends Seeder
|
|||
public function run(): void
|
||||
{
|
||||
DB::table('kolat')->insert([
|
||||
'id' => 1, // Kita paksa ID 1 biar nyambung sama UserSeeder tadi
|
||||
'nama_kolat' => 'Kolat Polije',
|
||||
'id' => 2, // Kita paksa ID 1 biar nyambung sama UserSeeder tadi
|
||||
'nama_kolat' => 'Kolat Unej',
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
|
|
|
|||
|
|
@ -60,7 +60,6 @@
|
|||
<div class="col-md-6">
|
||||
<label class="form-label fw-bold">No. WhatsApp</label>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -11,6 +11,15 @@ class="text-muted text-decoration-none small">Daftar Pelatih</a></li>
|
|||
</ol>
|
||||
</nav>
|
||||
<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>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -154,10 +154,10 @@
|
|||
<!-- Avatar Inisial -->
|
||||
<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);">
|
||||
{{ strtoupper(substr($spp->anggota->nama, 0, 1)) }}
|
||||
{{ strtoupper(substr($spp->anggota->nama_lengkap, 0, 1)) }}
|
||||
</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;">
|
||||
ID: {{ $spp->anggota_id }}
|
||||
</span>
|
||||
|
|
|
|||
|
|
@ -94,6 +94,30 @@
|
|||
|
||||
// Rute untuk Presensi
|
||||
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
|
||||
|
||||
|
|
@ -124,30 +148,6 @@
|
|||
|
||||
// --- AKTOR: PENGURUS / PELATIH ---
|
||||
// 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