Kami melihat semakin banyak kasus penggunaan untuk QuickAdminPanel kami, dan inilah proyek demo baru yang kami buat untuk mengelola jadwal sekolah. Tidak harus sekolah, bisa diterapkan di organisasi mana pun yang memiliki jadwal mingguan.
Bagaimana Tampilannya/Bekerjanya?
Di bagian bawah artikel Anda akan memiliki tautan ke repositori Github, tetapi sementara itu, mari kita lihat fitur-fiturnya.
Dalam sistem ini, kami memiliki tiga peran pengguna:
- Guru
- Siswa
- Administrator
Dan ketika seorang siswa masuk, mereka melihat jadwal mingguannya sendiri.
Selain itu, setiap guru hanya melihat jadwalnya sendiri.
Jadwal ini dikelola oleh administrator. Mereka memasuki pelajaran, menghubungkannya dengan kelas dan guru.

Setiap siswa tergabung dalam satu kelas, artinya jadwal kelas menjadi jadwal setiap siswa di kelas tersebut.
Terakhir, ada fungsi admin untuk melihat jadwal kelas tertentu.

Struktur DB
Berikut struktur database kami:

Tabel di sebelah kiri berasal dari sistem Peran/Izin kami di QuickAdminPanel, dengan tiga peran yang dimasukkan ke dalam database. Dan di sisi kanan, kita mempunyai pelajaran dan kelas, keduanya melekat pada pengguna tetapi dengan arti yang berbeda: pengguna termasuk dalam kelas, dan pelajaran menjadi milik pengguna guru.
Cuplikan Kode Menarik
Saya tidak akan mencantumkan semua kode di sini, karena Anda akan memiliki repositori Github di akhir artikel, tetapi saya akan menyebutkan beberapa hal.
Pertanyaan Fasih: Cakupan Lokal
Kami menampilkan kalender yang sama, tetapi memfilternya bergantung pada parameter – pengguna yang masuk dan kueri permintaan GET.
Daripada melakukan hal itu di Controller, kita membuat Local Scope di app/Pelajaran.php model:
class Lesson extends Model
{
// ...
public function scopeCalendarByRoleOrClassId($query)
{
return $query->when(!request()->input('class_id'), function ($query) {
$query->when(auth()->user()->is_teacher, function ($query) {
$query->where('teacher_id', auth()->user()->id);
})
->when(auth()->user()->is_student, function ($query) {
$query->where('class_id', auth()->user()->class_id ?? '0');
});
})
->when(request()->input('class_id'), function ($query) {
$query->where('class_id', request()->input('class_id'));
});
}
}
Dan kemudian di Pengontrol Kalenderkami memiliki kalimat pendek ini:
$lessons = Lesson::with('class', 'teacher')
->calendarByRoleOrClassId()
->get();
Pengakses yang Fasih
Anda mungkin memperhatikan cek seperti auth()->pengguna()->is_teacher dalam kode di atas. Ini bukan bidang database sebenarnya, melainkan atribut di dalamnya aplikasi/Pengguna.php model:
class User extends Authenticatable
{
// ...
public function getIsAdminAttribute()
{
return $this->roles()->where('id', 1)->exists();
}
public function getIsTeacherAttribute()
{
return $this->roles()->where('id', 3)->exists();
}
public function getIsStudentAttribute()
{
return $this->roles()->where('id', 4)->exists();
}
}
Konstan untuk Hari Kerja
Ini adalah keputusan yang bisa diperdebatkan, karena kami bisa saja menggunakan fungsi Carbon/PHP, kami memutuskan untuk memisahkan hari kerja menjadi hari yang konstan di dalam aplikasi/Pengguna.php:
const WEEK_DAYS = [
'1' => 'Monday',
'2' => 'Tuesday',
'3' => 'Wednesday',
'4' => 'Thursday',
'5' => 'Friday',
'6' => 'Saturday',
'7' => 'Sunday',
];
Dan kemudian, kapan pun kita membutuhkannya sebagai array, kita melakukan ini:
Pengendali:
$weekDays = Lesson::WEEK_DAYS;
return view('admin.calendar', compact('weekDays'));
Bilah:
@foreach($weekDays as $index => $day) ... @endforeach
Tidak Ada Plugin Kalender
Terakhir, Anda akan melihat bahwa kami sebenarnya tidak menggunakan perpustakaan apa pun untuk melihat kalender, seperti FullCalendar.
Pada awalnya, kami ingin menggunakan sesuatu seperti AgendaWeek, namun kemudian menyadari bahwa untuk proyek ini kami tidak terlalu memerlukan kalender apa pun, tabel HTML sederhana saja sudah cukup.
Repositori Akhir
Seperti yang dijanjikan, inilah tautan bagi Anda untuk mengunduh proyek, bermain-main, dan menyesuaikan: LaravelDaily/Laravel-School-Timetable-Calendar
News
Berita
News Flash
Blog
Technology
Sports
Sport
Football
Tips
Finance
Berita Terkini
Berita Terbaru
Berita Kekinian
News
Berita Terkini
Olahraga
Pasang Internet Myrepublic
Jasa Import China
Jasa Import Door to Door
Gaming center adalah sebuah tempat atau fasilitas yang menyediakan berbagai perangkat dan layanan untuk bermain video game, baik di PC, konsol, maupun mesin arcade. Gaming center ini bisa dikunjungi oleh siapa saja yang ingin bermain game secara individu atau bersama teman-teman. Beberapa gaming center juga sering digunakan sebagai lokasi turnamen game atau esports.
Comments are closed, but trackbacks and pingbacks are open.