feat & fix: update api kategori,materi,submateri
This commit is contained in:
parent
c4879d6256
commit
ec4d21af1d
|
@ -12,11 +12,36 @@ class SubMateriControler extends Controller
|
|||
public function getSubMateriByKategori($id_kategori)
|
||||
{
|
||||
try {
|
||||
$subMateri = SubMateri::where('id_kategori', $id_kategori)->get();
|
||||
if ($subMateri->isEmpty()) {
|
||||
// Retrieve the category along with the related sub-materi
|
||||
$kategori = SubMateri::with('kategori')
|
||||
->where('id_kategori', $id_kategori)
|
||||
->get();
|
||||
|
||||
// Check if any sub-materi was found
|
||||
if ($kategori->isEmpty()) {
|
||||
return ResponseFormatter::error(null, 'Sub materi tidak ditemukan', 404);
|
||||
}
|
||||
return ResponseFormatter::success($subMateri, 'Sub materi berdasarkan kategori berhasil diambil');
|
||||
|
||||
// Return the response with the data
|
||||
return ResponseFormatter::success([
|
||||
'id' => $kategori[0]->kategori->id, // Category ID
|
||||
'id_materi' => $kategori[0]->kategori->id_materi, // Materi ID
|
||||
'nama_kategori' => $kategori[0]->kategori->nama_kategori, // Category name
|
||||
'created_at' => $kategori[0]->kategori->created_at, // Category created at
|
||||
'updated_at' => $kategori[0]->kategori->updated_at, // Category updated at
|
||||
'sub_materi' => $kategori->map(function ($subMateri) {
|
||||
return [
|
||||
'id' => $subMateri->id,
|
||||
'id_kategori' => $subMateri->id_kategori,
|
||||
'title' => $subMateri->title,
|
||||
'subtitle' => $subMateri->subtitle,
|
||||
'video_url' => $subMateri->video_url,
|
||||
'intro' => $subMateri->intro,
|
||||
'created_at' => $subMateri->created_at,
|
||||
'updated_at' => $subMateri->updated_at,
|
||||
];
|
||||
})
|
||||
], 'Sub materi berdasarkan kategori berhasil diambil');
|
||||
} catch (\Exception $e) {
|
||||
return ResponseFormatter::error(null, 'Terjadi kesalahan saat mengambil data sub materi', 500);
|
||||
}
|
||||
|
|
|
@ -56,15 +56,15 @@ public function login(Request $request)
|
|||
{
|
||||
try {
|
||||
$request->validate([
|
||||
'no_telp_wali' => 'required|string',
|
||||
'email' => 'required|string',
|
||||
'password' => 'required'
|
||||
]);
|
||||
|
||||
$user = User::where('no_telp_wali', $request->no_telp_wali)->first();
|
||||
$user = User::where('email', $request->email)->first();
|
||||
|
||||
if (!$user || !Hash::check($request->password, $user->password)) {
|
||||
return ResponseFormatter::error([
|
||||
'message' => 'Nomor telepon atau password salah'
|
||||
'message' => 'email atau password salah'
|
||||
], 'Authentication Failed', 401);
|
||||
}
|
||||
|
||||
|
@ -74,6 +74,9 @@ public function login(Request $request)
|
|||
'access_token' => $tokenResult,
|
||||
'token_type' => 'Bearer',
|
||||
// 'user' => $user
|
||||
'user' => [
|
||||
'peran' => $user->peran // Pastikan 'status' ada di sini
|
||||
]
|
||||
], 'Authenticated');
|
||||
} catch (Exception $error) {
|
||||
return ResponseFormatter::error([
|
||||
|
|
|
@ -20,8 +20,8 @@ class Kategori extends Model
|
|||
|
||||
// Relasi dengan sub materi
|
||||
public function subMateri()
|
||||
{
|
||||
return $this->hasMany(SubMateri::class);
|
||||
}
|
||||
{
|
||||
return $this->hasMany(SubMateri::class, 'id_kategori');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ class Materi extends Model
|
|||
protected $fillable = [
|
||||
'title',
|
||||
'subtitle',
|
||||
'description',
|
||||
];
|
||||
|
||||
// Relasi dengan kategori
|
||||
|
|
|
@ -26,4 +26,8 @@ public function latihan()
|
|||
{
|
||||
return $this->hasMany(Latihan::class);
|
||||
}
|
||||
public function kategori()
|
||||
{
|
||||
return $this->belongsTo(Kategori::class, 'id_kategori');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('materi', function (Blueprint $table) {
|
||||
$table->string('description');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('materi', function (Blueprint $table) {
|
||||
$table->string('description');
|
||||
});
|
||||
}
|
||||
};
|
|
@ -14,38 +14,42 @@ class LatihanTableSeeder extends Seeder
|
|||
public function run(): void
|
||||
{
|
||||
Latihan::create([
|
||||
'id_submateri' => 1, // Mengacu pada sub materi "Makhrijul Huruf"
|
||||
'potongan_ayat' => 'بَسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيمِ',
|
||||
'latin_text' => 'Bismillah',
|
||||
'materi_description' => 'Latihan pengucapan huruf',
|
||||
'correct_audio' => 'audio1.mp3',
|
||||
'recorder_audio' => 'user1',
|
||||
]);
|
||||
'id_submateri' => 1, // Mengacu pada sub materi "Makhrijul Huruf"
|
||||
'potongan_ayat' => 'بَسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيمِ',
|
||||
'latin_text' => 'Bismillah',
|
||||
'materi_description' => 'Latihan pengucapan huruf',
|
||||
'correct_audio' => 'audio1.mp3',
|
||||
'recorder_audio' => 'user1',
|
||||
]);
|
||||
|
||||
Latihan::create([
|
||||
'id_submateri' => 2, // Mengacu pada sub materi "Tenggorokan"
|
||||
'potongan_ayat' => 'اَلْحَمْدُ لِلَّهِ رَبِّ الْعَالَمِينَ',
|
||||
'latin_text' => 'Alhamdulillah',
|
||||
'materi_description' => 'Latihan pengucapan huruf',
|
||||
'correct_audio' => 'audio2.mp3',
|
||||
'recorder_audio' => 'user2',
|
||||
]);
|
||||
Latihan::create([
|
||||
'id_submateri' => 3, // Mengacu pada sub materi "Makhrijul Huruf"
|
||||
'potongan_ayat' => 'بَسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيمِ',
|
||||
'latin_text' => 'Bismillah',
|
||||
'materi_description' => 'Latihan pengucapan huruf',
|
||||
'correct_audio' => 'audio1.mp3',
|
||||
'recorder_audio' => 'user1',
|
||||
]);
|
||||
// Data kedua
|
||||
Latihan::create([
|
||||
'id_submateri' => 1, // Mengacu pada sub materi "Makhrijul Huruf"
|
||||
'potongan_ayat' => 'الْحَمْدُ لِلَّهِ رَبِّ الْعَالَمِينَ',
|
||||
'latin_text' => 'Alhamdulillah Rabbil Alamin',
|
||||
'materi_description' => 'Latihan pengucapan huruf dengan panjang',
|
||||
'correct_audio' => 'audio2.mp3',
|
||||
'recorder_audio' => 'user2',
|
||||
]);
|
||||
|
||||
Latihan::create([
|
||||
'id_submateri' => 4, // Mengacu pada sub materi "Tenggorokan"
|
||||
'potongan_ayat' => 'اَلْحَمْدُ لِلَّهِ رَبِّ الْعَالَمِينَ',
|
||||
'latin_text' => 'Alhamdulillah',
|
||||
'materi_description' => 'Latihan pengucapan huruf',
|
||||
'correct_audio' => 'audio2.mp3',
|
||||
'recorder_audio' => 'user2',
|
||||
]);
|
||||
// Data ketiga
|
||||
Latihan::create([
|
||||
'id_submateri' => 1, // Mengacu pada sub materi "Makhrijul Huruf"
|
||||
'potongan_ayat' => 'الرَّحْمَنِ الرَّحِيمِ',
|
||||
'latin_text' => 'Ar-Rahman Ar-Rahim',
|
||||
'materi_description' => 'Latihan pengucapan huruf dengan tajwid',
|
||||
'correct_audio' => 'audio3.mp3',
|
||||
'recorder_audio' => 'user3',
|
||||
]);
|
||||
|
||||
// Data keempat
|
||||
Latihan::create([
|
||||
'id_submateri' => 1, // Mengacu pada sub materi "Makhrijul Huruf"
|
||||
'potongan_ayat' => 'مَالِكِ يَوْمِ الدِّينِ',
|
||||
'latin_text' => 'Maliki Yawmiddin',
|
||||
'materi_description' => 'Latihan pengucapan huruf yang benar',
|
||||
'correct_audio' => 'audio4.mp3',
|
||||
'recorder_audio' => 'user4',
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,35 +14,20 @@ class SubMateriTableSeeder extends Seeder
|
|||
public function run(): void
|
||||
{
|
||||
SubMateri::create([
|
||||
'id_kategori' => 1, // Mengacu pada kategori "Rongga Mulut"
|
||||
'title' => 'Mad',
|
||||
'subtitle' => 'rongga mulut',
|
||||
'id_kategori' => 2, // Mengacu pada kategori "Rongga Mulut"
|
||||
'title' => 'ain & ha',
|
||||
'subtitle' => 'tengah tenggorokan',
|
||||
'video_url' => 'https://youtu.be/qF_HuLMI-B4?si=IJWIzHu-vQXBaKgD',
|
||||
'intro' => 'Pengenalan rongga mulut',
|
||||
]);
|
||||
|
||||
SubMateri::create([
|
||||
'id_kategori' => 2, // Mengacu pada kategori "Tenggorokan"
|
||||
'title' => 'Hamzah',
|
||||
'subtitle' => 'Pangkal Tenggorokan',
|
||||
'title' => 'ghain & ha',
|
||||
'subtitle' => 'ujung tenggorokan',
|
||||
'video_url' => 'https://youtu.be/qF_HuLMI-B4?si=IJWIzHu-vQXBaKgD',
|
||||
'intro' => 'Penjelasan tentang pangkaltenggorokan',
|
||||
]);
|
||||
SubMateri::create([
|
||||
'id_kategori' => 3, // Mengacu pada kategori "Rongga Mulut"
|
||||
'title' => 'Hamz vs Jahr',
|
||||
'subtitle' => 'Keluar nafas vs tidak keluar nafas',
|
||||
'video_url' => 'https://youtu.be/qF_HuLMI-B4?si=IJWIzHu-vQXBaKgD',
|
||||
'intro' => 'Pengenalan sifat hams dan jahr',
|
||||
]);
|
||||
|
||||
SubMateri::create([
|
||||
'id_kategori' => 4, // Mengacu pada kategori "Tenggorokan"
|
||||
'title' => 'Qalqalah',
|
||||
'subtitle' => 'Suara memantul',
|
||||
'video_url' => 'https://youtu.be/qF_HuLMI-B4?si=IJWIzHu-vQXBaKgD',
|
||||
'intro' => 'Penjelasan tentang qalqalah',
|
||||
]);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,5 +30,6 @@
|
|||
|
||||
Route::get('/materi', [MateriControler::class, 'getMateri']);
|
||||
Route::get('/kategori/{id_materi}', [KategoryController::class, 'getKategoriByMateri']);
|
||||
// Route::get('/sub_materi', [SubMateriControler::class, 'getAllSubMateri']);
|
||||
Route::get('/sub_materi/{id_kategori}', [SubMateriControler::class, 'getSubMateriByKategori']);
|
||||
Route::get('/latihan/{id_submateri}', [LatihanControler::class, 'getLatihanBySubMateri']);
|
Loading…
Reference in New Issue