Visual Branding
Visual Branding
Insert/Create:
$messages = [
];
$validated = $request->validate([
], $messages);
try {
$user = User::firstOrCreate(
);
Siswa::create([
]);
session()->flash('accountInfo', [
]);
});
Di code ini terdapat validation terhadap semua column agar tiap column terisi dan tidak null, setelah
melakukan pengecekan diinsert ke database siswa dan user akan dikembalikan ke halaman master
siswa.
Update:
$siswa = Siswa::findOrFail($id);
$siswa->update($request->all());
Delete:
$siswa = Siswa::findOrFail($id);
Read:
<thead>
<tr>
<th>Student ID</th>
<th>First Name</th>
<th>Last Name</th>
<th>DOB</th>
<th>Grade</th>
<th>Gender</th>
<th>Home Phone</th>
<th>Enrol Date</th>
<th>Subject</th>
<th>Current Level</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
@foreach($siswa as $student)
<tr>
<td>
</button>
@csrf
@method('DELETE')
</a>
</a>
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
</div>
<div class="modal-body">
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
Dilakukan passing variable di function index pada SiswaController terlebih dahulu, agar data column
dalam table siswa dapat ditampilkan dalam bentuk tabel dalam halaman MasterSiswa. Selain itu, ada
action button itu delete dan update serta modal view untuk detail lebih lanjut.
CRUD Course:
return view('admin.InsertCourse');
$request->validate([
'course' => 'required|string|max:255',
]);
Course::create($request->all());
Di code ini diinsert ke database course dan user akan dikembalikan ke halaman master siswa.
Update:
$request->validate([
]);
$course = Course::findOrFail($idcourse);
$course->update($request->all());
Delete:
public function destroy($idcourse)
$course = Course::findOrFail($idcourse);
$course->delete();
<tbody>
@foreach($courses as $course)
<tr>
<td>
@csrf
@method('DELETE')
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
Dilakukan passing variable ke MasterCourse, lalu data tabel ditampilkan dalam bentuk table dalam
halaman MasterCourse
Code Chart:
const subjectData = {
labels: @json($subjectCounts->pluck('Subject')),
datasets: [{
data: @json($subjectCounts->pluck('count')),
}]
};
type: 'pie',
data: subjectData,
});
Menggunakan chart api, data diambil dari tabel siswa lalu ditampilkan dalam bentuk pie chart.
Calendar code:
$(document).ready(function () {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
});
header: {
center: 'title',
right: 'month,agendaWeek,agendaDay',
},
$('#eventDate').val(date.format('YYYY-MM-DD'));
$('#addEventModal').modal('show');
},
$.ajax({
url: `/events/${event.id}`,
type: 'DELETE',
success: function () {
calendar.fullCalendar('removeEvents', event.id);
alert('Event deleted!');
},
error: function () {
});
},
});
$('#eventForm').on('submit', function (event) {
event.preventDefault();
$.ajax({
url: '/events',
type: 'POST',
calendar.fullCalendar('renderEvent', {
id: data.id,
title: data.title,
start: data.event_date,
description: data.description,
color: '#007bff',
});
$('#addEventModal').modal('hide');
$('#eventForm')[0].reset();
},
error: function () {
});
});
});
Menggunakan fullcalendar api, bentuknya sebagai calendar academic dan bisa tambah dan delete
event sesuai tanggal. Event di simpan dalam database.
Import Excel:
$request->validate([
]);
$file = $request->file('file');
try {
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($file->getRealPath());
$importedCount = 0;
try {
if (Siswa::where('StudentID', $row['A'])->exists()) {
\Log::info("Skipping duplicate StudentID on row $key: " . $row['A']);
Siswa::create([
]);
$importedCount++;
}
\Log::info("Total records imported: $importedCount");
Khusus untuk master siswa , dapat menerima extension xlsx, csv, xls dan data diimport ke tabel
siswa. Data diambil dari cell-cell yang ada di excel. Ada pengecekan bila terjadi error(primary key
kembar).
Export Excel:
public function exportExcel()
try {
if ($siswa->isEmpty()) {
$sheet = $spreadsheet->getActiveSheet();
$headers = [
];
$column = 'A'; // Start from column A
$column++;
$sheet->setCellValue("A{$row}", $item->StudentID);
$sheet->setCellValue("B{$row}", $item->FirstName);
$sheet->setCellValue("C{$row}", $item->LastName);
$sheet->setCellValue("D{$row}", $item->DOB);
$sheet->setCellValue("E{$row}", $item->Grade);
$sheet->setCellValue("F{$row}", $item->Gender);
$sheet->setCellValue("G{$row}", $item->Email);
$sheet->setCellValue("H{$row}", $item->SchoolName);
$sheet->setCellValue("I{$row}", $item->StreetName);
$sheet->setCellValue("J{$row}", $item->House);
$sheet->setCellValue("K{$row}", $item->City);
$sheet->setCellValue("L{$row}", $item->Province);
$sheet->setCellValue("M{$row}", $item->PostalCode);
$sheet->setCellValue("N{$row}", $item->HomePhone);
$sheet->setCellValue("O{$row}", $item->EnrolDate);
$sheet->setCellValue("P{$row}", $item->Subject);
$sheet->setCellValue("Q{$row}", $item->CurrentLevel);
$row++;
$tempFilePath = storage_path("app/exports/{$filename}");
if (!file_exists(dirname($tempFilePath))) {
$writer->save($tempFilePath);
return response()->download($tempFilePath)->deleteFileAfterSend(true);
return response()->json(['message' => 'An error occurred while exporting data.'], 500);
Khusus untuk master siswa , data diexport dari table siswa ke dalam bentuk csv.
$query = Siswa::query();
if ($request->filled('search')) {
$search = $request->search;
});
// Filter by gender
if ($request->filled('gender')) {
$query->where('Gender', $request->gender);
// Filter by grade
if ($request->filled('grade')) {
$query->where('Grade', $request->grade);
$siswa = $query->paginate($perPage)->appends($request->except('page'));
Breadcrumbs:
<script>
let currentFieldset = 0;
function showFieldset(index) {
fieldsets.forEach((fieldset, i) => {
});
breadcrumbItems.forEach((item, i) => {
});
function nextFieldset() {
currentFieldset++;
showFieldset(currentFieldset);
function prevFieldset() {
if (currentFieldset > 0) {
currentFieldset--;
showFieldset(currentFieldset);
</script>