diff --git a/app/Http/Controllers/Admin/DashboardController.php b/app/Http/Controllers/Admin/DashboardController.php index 2188941..4989ed4 100644 --- a/app/Http/Controllers/Admin/DashboardController.php +++ b/app/Http/Controllers/Admin/DashboardController.php @@ -20,6 +20,19 @@ class DashboardController extends Controller $totalKriteria = Kriteria::count(); $totalSubKriteria = Subkriteria::count(); - return view("admin.pages.dashboard.index", compact("totalPakaian", "totalKriteria", "totalSubKriteria")); + // Dapatkan jumlah penilaian berdasarkan kriteria + $dataPenilaianPerKriteria = Kriteria::with('subKriteria.penilaians')->get()->map(function ($kriteria) { + return [ + 'label' => $kriteria->nama_kriteria, // sesuaikan jika nama kolomnya ini + 'jumlah' => $kriteria->subKriteria->sum(fn($sub) => $sub->penilaians->count()) + ]; + }); + + return view('admin.pages.dashboard.index', compact( + 'totalKriteria', + 'totalSubKriteria', + 'totalPakaian', + 'dataPenilaianPerKriteria' + )); } } diff --git a/app/Http/Controllers/Admin/RiwayatController.php b/app/Http/Controllers/Admin/RiwayatController.php deleted file mode 100644 index b7c72a9..0000000 --- a/app/Http/Controllers/Admin/RiwayatController.php +++ /dev/null @@ -1,35 +0,0 @@ -get('per_page', 5); // Ambil dari query string, default 10 - $riwayat = QuizHistory::orderBy('created_at', 'desc') - ->paginate($perPage) - ->withQueryString(); // penting agar per_page tetap ada saat klik pagination - - return view('admin.pages.riwayat.index', compact('riwayat')); - } - - public function destroy($id) - { - try { - $riwayat = QuizHistory::findOrFail($id); - $riwayat->delete(); - - return redirect()->back()->with('success', 'Riwayat berhasil dihapus.'); - } catch (\Exception $e) { - return redirect()->back()->with('error', 'Gagal menghapus riwayat.'); - } - } - -} diff --git a/app/Http/Controllers/Landingpage/HomeController.php b/app/Http/Controllers/Landingpage/HomeController.php index 1638b1d..34bfe2a 100644 --- a/app/Http/Controllers/Landingpage/HomeController.php +++ b/app/Http/Controllers/Landingpage/HomeController.php @@ -2,103 +2,362 @@ namespace App\Http\Controllers\Landingpage; -use App\Http\Controllers\Controller; -use Illuminate\Http\Request; -use App\Models\DataAlternatif; -use App\Models\Kriteria; use App\Models\Pakaian; +use App\Models\Kriteria; use App\Models\QuizHistory; use App\Models\Subkriteria; +use Illuminate\Support\Arr; +use Illuminate\Http\Request; +use App\Models\DataAlternatif; +use App\Models\PenilaianPakaian; use Illuminate\Support\Facades\Log; +use App\Http\Controllers\Controller; class HomeController extends Controller { public function index() { - // Ambil semua sub kriteria dan relasinya dengan kriteria $subKriteria = SubKriteria::with('kriteria')->get()->groupBy(function ($item) { return $item->kriteria->nama_kriteria; }); + $pakaians = Pakaian::with('subKriterias')->get(); + return view('landingpage.master', [ - 'subKriteria' => $subKriteria + 'subKriteria' => $subKriteria, + 'pakaians' => $pakaians ]); } public function prosesRekomendasi(Request $request) -{ - $sub_kriterias = $request->input('sub_kriteria'); // [kriteria_id => sub_kriteria_id] - - if (!$sub_kriterias) { - return back()->with('error', 'Harap pilih semua preferensi terlebih dahulu.'); - } - - $selectedSubs = SubKriteria::whereIn('id', array_values($sub_kriterias))->get()->keyBy('id'); - $allPakaian = Pakaian::with('subKriterias')->get(); - - // Step 1: Filter berdasarkan preferensi user - $filteredPakaian = $allPakaian->filter(function ($pakaian) use ($sub_kriterias, $selectedSubs) { - foreach ($sub_kriterias as $kriteria_id => $sub_id) { - if ($kriteria_id == 2) { // Harga (range) - $harga = $pakaian->harga; - $sub = $selectedSubs[$sub_id]; - if ($harga < $sub->min_harga || $harga > $sub->max_harga) { - return false; - } - } elseif ($kriteria_id == 3) { // Jenis Pakaian (C3) WAJIB SAMA - $match = $pakaian->subKriterias->contains(function ($item) use ($kriteria_id, $sub_id) { - return $item->kriteria_id == $kriteria_id && $item->id == $sub_id; - }); - if (!$match) return false; - } else { - // Untuk kriteria lain, cukup memiliki salah satu sub_kriteria - $match = $pakaian->subKriterias->where('kriteria_id', $kriteria_id)->isNotEmpty(); - if (!$match) return false; - } - } - return true; - }); - - if ($filteredPakaian->isEmpty()) { - return back()->with('error', 'Tidak ada pakaian yang sesuai dengan preferensi Anda.'); - } - - // Step 2: Siapkan bobot & maksimum nilai - $kriterias = Kriteria::all()->keyBy('id'); - $maxPerKriteria = []; - foreach ($kriterias as $kriteria_id => $kriteria) { - $maxPerKriteria[$kriteria_id] = SubKriteria::where('kriteria_id', $kriteria_id)->max('nilai') ?: 1; - } - - // Step 3: Hitung skor SAW - $matrix = []; - - foreach ($filteredPakaian as $pakaian) { - $score = 0; - - foreach ($kriterias as $kriteria_id => $kriteria) { - $bobot = $kriteria->bobot; - $jenis = $kriteria->jenis; - - // Ambil sub_kriteria tertinggi untuk kriteria ini - $subs = $pakaian->subKriterias->where('kriteria_id', $kriteria_id); - $sub = $subs->sortByDesc('nilai')->first(); - - if ($sub) { - $nilai = $sub->nilai; - $max = $maxPerKriteria[$kriteria_id]; - $normal = $jenis == 'COST' ? ($nilai ? $max / $nilai : 0) : $nilai / $max; - $score += $normal * $bobot; - } + { + // Input validation and processing + $userInput = $this->processUserInput($request->input('sub_kriteria', [])); + + if (empty($userInput)) { + return $this->returnNoResults('Silakan pilih minimal satu kriteria.'); } - $matrix[] = [ - 'pakaian' => $pakaian, - 'score' => round($score, 3), + // \Log::debug('User Input:', $userInput); + + // Get selected subcriteria data + $selectedSubkriteria = SubKriteria::whereIn('id', collect($userInput)->flatten()) + ->get() + ->keyBy('id'); + + // Extract criteria inputs + $criteriaInputs = $this->extractCriteriaInputs($userInput, $selectedSubkriteria); + + // Apply strict filtering + $filteredClothing = $this->applyStrictFiltering($criteriaInputs); + + if ($filteredClothing->isEmpty()) { + return $this->returnNoResults('Tidak ada pakaian yang sesuai dengan kriteria yang Anda pilih.'); + } + + // Calculate recommendations using weighted scoring + $recommendations = $this->calculateRecommendations($filteredClothing, $userInput); + + return view('landingpage.hasil', compact('recommendations')); + } + + /** + * Process and validate user input + */ + private function processUserInput(array $userInput): array + { + $processedInput = []; + + foreach ($userInput as $kriteria_id => $subkriteria) { + $subkriteriaArray = (array) $subkriteria; + + // Remove empty values and validate + $cleanedSubkriteria = array_filter($subkriteriaArray, function($value) { + return !empty($value) && is_numeric($value); + }); + + if (!empty($cleanedSubkriteria)) { + $processedInput[$kriteria_id] = array_map('intval', $cleanedSubkriteria); + } + } + + return $processedInput; + } + + /** + * Extract and organize criteria inputs + */ + private function extractCriteriaInputs(array $userInput, $selectedSubkriteria): array + { + $inputs = [ + 'warna' => $userInput[1] ?? [], // Criteria 1: Color + 'harga' => $userInput[2] ?? [], // Criteria 2: Price + 'jenis_pakaian' => $userInput[3] ?? [], // Criteria 3: Clothing Type + 'jenis_acara' => $userInput[4] ?? [], // Criteria 4: Event Type + 'lokasi' => $userInput[5] ?? [] // Criteria 5: Location ]; + + // Calculate price range if price criteria is selected + if (!empty($inputs['harga'])) { + $hargaRanges = $selectedSubkriteria->only($inputs['harga']); + $inputs['harga_min'] = $hargaRanges->min('min_value'); + $inputs['harga_max'] = $hargaRanges->max('max_value'); + } + + // \Log::debug("Extracted Criteria Inputs:", $inputs); + + return $inputs; } - $rekomendasi = collect($matrix)->sortByDesc('score')->values(); - return view('landingpage.hasil', compact('rekomendasi')); -} + /** + * Apply strict filtering based on mandatory criteria + */ + private function applyStrictFiltering(array $criteriaInputs) + { + $query = Pakaian::with(['penilaian.subkriteria.kriteria']); + + // Mandatory filter: Clothing Type (highest weight criteria) + if (!empty($criteriaInputs['jenis_pakaian'])) { + // \Log::debug('Applying clothing type filter:', $criteriaInputs['jenis_pakaian']); + + $query->whereHas('penilaian.subkriteria', function ($q) use ($criteriaInputs) { + $q->where('kriteria_id', 3) + ->whereIn('id', $criteriaInputs['jenis_pakaian']); + }); + } + + // Mandatory filter: Price Range (if specified) + if (isset($criteriaInputs['harga_min']) && isset($criteriaInputs['harga_max'])) { + // \Log::debug("Applying price filter: {$criteriaInputs['harga_min']} - {$criteriaInputs['harga_max']}"); + + $query->whereHas('penilaian.subkriteria', function ($q) use ($criteriaInputs) { + $q->where('kriteria_id', 2) + ->where('min_value', '<=', $criteriaInputs['harga_max']) + ->where('max_value', '>=', $criteriaInputs['harga_min']); + }); + } -} + $filteredClothing = $query->get(); + + // Validate filtering results + $this->validateFilterResults($filteredClothing, $criteriaInputs); + + // \Log::debug('Filtered clothing count: ' . $filteredClothing->count()); + + return $filteredClothing; + } + + /** + * Validate that filtering worked correctly + */ + private function validateFilterResults($clothing, array $criteriaInputs): void + { + if (!empty($criteriaInputs['jenis_pakaian'])) { + foreach ($clothing as $item) { + $clothingTypeAssessment = $item->penilaian + ->where('subkriteria.kriteria_id', 3) + ->first(); + + if (!$clothingTypeAssessment || + !in_array($clothingTypeAssessment->sub_kriteria_id, $criteriaInputs['jenis_pakaian'])) { + // \Log::error("❌ Filter validation failed for clothing: {$item->nama}"); + } + } + } + } + + /** + * Calculate recommendations using SAW method + */ + private function calculateRecommendations($clothing, array $userInput): \Illuminate\Support\Collection + { + // Get criteria with weights + $criteria = Kriteria::with('subkriteria') + ->whereIn('id', [1, 2, 3, 4, 5]) + ->orderByDesc('bobot') // Order by weight (highest first) + ->get(); + + // Build decision matrix + $decisionMatrix = $this->buildDecisionMatrix($clothing, $criteria, $userInput); + + // Calculate min/max values for normalization + $normalizationValues = $this->calculateNormalizationValues($decisionMatrix, $criteria); + + // Calculate preference scores + $results = $this->calculatePreferenceScores( + $clothing, + $decisionMatrix, + $criteria, + $normalizationValues, + $userInput + ); + + // Sort by score (descending) + $recommendations = collect($results) + ->sortByDesc('score') + ->values(); + + $this->logFinalRecommendations($recommendations); + + return $recommendations; + } + + /** + * Build decision matrix for each clothing item + */ + private function buildDecisionMatrix($clothing, $criteria, array $userInput): array + { + $matrix = []; + + foreach ($clothing as $item) { + $matrix[$item->id] = []; + + foreach ($criteria as $criterion) { + $userSubIds = $userInput[$criterion->id] ?? []; + + if (empty($userSubIds)) { + continue; // Skip criteria not selected by user + } + + // Get matching assessments for this criterion + $matchingAssessments = $item->penilaian->filter(function ($assessment) use ($userSubIds) { + return in_array($assessment->sub_kriteria_id, $userSubIds); + }); + + if ($matchingAssessments->isNotEmpty()) { + // Use average if multiple matches, first match for clothing type + $value = ($criterion->id == 3) + ? $matchingAssessments->first()->nilai + : $matchingAssessments->avg('nilai'); + + $matrix[$item->id][$criterion->id] = $value; + + // \Log::debug("Item {$item->id} - Criterion {$criterion->id}: {$value}"); + } + } + } + + return $matrix; + } + + /** + * Calculate min/max values for normalization + */ + private function calculateNormalizationValues(array $decisionMatrix, $criteria): array + { + $values = ['max' => [], 'min' => []]; + + foreach ($criteria as $criterion) { + $criterionValues = collect($decisionMatrix) + ->pluck($criterion->id) + ->filter(function($value) { + return $value !== null && $value > 0; + }); + + if ($criterionValues->isNotEmpty()) { + $values['max'][$criterion->id] = $criterionValues->max(); + $values['min'][$criterion->id] = $criterionValues->min(); + } else { + // Fallback values + $values['max'][$criterion->id] = 1; + $values['min'][$criterion->id] = 1; + } + + // \Log::debug("Criterion {$criterion->id} normalization - Max: {$values['max'][$criterion->id]}, Min: {$values['min'][$criterion->id]}"); + } + + return $values; + } + + /** + * Calculate final preference scores using SAW method + */ + private function calculatePreferenceScores($clothing, array $decisionMatrix, $criteria, array $normValues, array $userInput): array + { + $results = []; + + foreach ($clothing as $item) { + $preferenceScore = 0; + $totalWeight = 0; + + foreach ($criteria as $criterion) { + $userSubIds = $userInput[$criterion->id] ?? []; + + if (empty($userSubIds) || !isset($decisionMatrix[$item->id][$criterion->id])) { + continue; + } + + $value = $decisionMatrix[$item->id][$criterion->id]; + + if ($value <= 0) continue; + + // Normalize value based on criterion type + $normalizedValue = $this->normalizeValue( + $value, + $normValues['max'][$criterion->id], + $normValues['min'][$criterion->id], + $criterion->jenis + ); + + // Calculate weighted contribution + $weight = $criterion->bobot; + $contribution = $normalizedValue * $weight; + $preferenceScore += $contribution; + $totalWeight += $weight; + + // \Log::debug("Item {$item->id} - Criterion {$criterion->id}: Value={$value}, Normalized={$normalizedValue}, Weight={$weight}, Contribution={$contribution}"); + } + + $clothingType = $item->penilaian + ->firstWhere('subkriteria.kriteria_id', 3) + ?->subkriteria->nama ?? 'Lainnya'; + + $results[] = [ + 'pakaian' => $item, + 'score' => round($preferenceScore, 4), + 'jenis_pakaian' => $clothingType, + 'total_weight' => $totalWeight + ]; + + // \Log::debug("📊 Final Score - Item {$item->id} ({$item->nama}): {$preferenceScore}"); + } + + return $results; + } + + /** + * Normalize value based on criterion type (BENEFIT/COST) + */ + private function normalizeValue(float $value, float $max, float $min, string $type): float + { + if ($type === 'COST') { + return $value > 0 ? $min / $value : 0; + } else { + return $max > 0 ? $value / $max : 0; + } + } + + /** + * Log final recommendations + */ + private function logFinalRecommendations($recommendations): void + { + // \Log::debug('🏆 FINAL RECOMMENDATIONS:'); + + foreach ($recommendations as $index => $item) { + $rank = $index + 1; + // \Log::debug("{$rank}. {$item['pakaian']->nama} - Score: {$item['score']} - Type: {$item['jenis_pakaian']}"); + } + } + + /** + * Return view with no results message + */ + private function returnNoResults(string $message) + { + return view('landingpage.hasil', [ + 'recommendations' => collect([]), + 'message' => $message + ]); + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/PakaianController.php b/app/Http/Controllers/PakaianController.php index 3073910..6fc37d4 100644 --- a/app/Http/Controllers/PakaianController.php +++ b/app/Http/Controllers/PakaianController.php @@ -51,7 +51,8 @@ class PakaianController extends Controller 'nama_pakaian' => 'required|string|max:255', 'harga' => 'required|numeric', 'img' => 'nullable|image|max:2048', - 'sub_kriterias' => 'array|nullable', + 'sub_kriterias' => 'nullable', + 'deskripsi' => 'nullable|string|max:1000', ]); DB::beginTransaction(); @@ -67,17 +68,39 @@ class PakaianController extends Controller $pakaian = Pakaian::create([ 'nama_pakaian' => $request->nama_pakaian, 'harga' => $request->harga, - 'img' => $path, + 'img' => $path ? 'storage/' . $path : null, + 'deskripsi' => $request->deskripsi, ]); - // Simpan relasi sub kriteria - if ($request->filled('sub_kriterias')) { - $pakaian->subKriterias()->sync($request->sub_kriterias); + $inputSub = $request->input('sub_kriterias', []); + $subkriteriaIds = []; + + foreach ($inputSub as $key => $value) { + if (is_array($value)) { + $subkriteriaIds = array_merge($subkriteriaIds, $value); + } else { + $subkriteriaIds[] = $value; + } + } + + $pakaian->subKriterias()->sync($subkriteriaIds); + + + // Tambahkan penilaian default untuk semua subkriteria + $allSubkriterias = SubKriteria::all(); + foreach ($allSubkriterias as $sub) { + \App\Models\PenilaianPakaian::firstOrCreate([ + 'pakaian_id' => $pakaian->id, + 'sub_kriteria_id' => $sub->id, + ], [ + 'nilai' => 3 // bisa disesuaikan nilai defaultnya + ]); } DB::commit(); - return redirect()->route('admin.pakaian.index')->with('success', 'Pakaian berhasil ditambahkan.'); + return redirect()->route('admin.pakaian.index', ['page' => $request->input('page')]) + ->with('success', 'Pakaian berhasil ditambahkan.'); } catch (\Exception $e) { // Rollback semua jika ada error DB::rollBack(); @@ -118,6 +141,7 @@ class PakaianController extends Controller 'harga' => 'required|numeric', 'img' => 'nullable|image|max:2048', 'sub_kriterias' => 'array|nullable', + 'deskripsi' => 'nullable|string|max:1000', ]); DB::beginTransaction(); @@ -126,48 +150,59 @@ class PakaianController extends Controller $pakaian = Pakaian::findOrFail($id); $path = $pakaian->img; - // Update gambar jika ada file baru if ($request->hasFile('img')) { - if ($path && Storage::disk('public')->exists($path)) { - Storage::disk('public')->delete($path); + // Hapus gambar lama dari storage + if ($pakaian->img && Storage::disk('public')->exists(str_replace('storage/', '', $pakaian->img))) { + Storage::disk('public')->delete(str_replace('storage/', '', $pakaian->img)); } - $path = $request->file('img')->store('pakaian', 'public'); + + // Simpan gambar baru + $storedPath = $request->file('img')->store('pakaian', 'public'); + $path = 'storage/' . $storedPath; } $pakaian->update([ 'nama_pakaian' => $request->nama_pakaian, 'harga' => $request->harga, 'img' => $path, + 'deskripsi' => $request->deskripsi, ]); // Update relasi sub_kriterias - $pakaian->subKriterias()->sync($request->sub_kriterias ?? []); + $inputSub = $request->input('sub_kriterias', []); + $subkriteriaIds = []; + + foreach ($inputSub as $key => $value) { + if (is_array($value)) { + $subkriteriaIds = array_merge($subkriteriaIds, $value); + } else { + $subkriteriaIds[] = $value; + } + } + + $pakaian->subKriterias()->sync($subkriteriaIds); DB::commit(); - return redirect()->route('admin.pakaian.index')->with('success', 'Pakaian berhasil diperbarui.'); + return redirect()->route('admin.pakaian.index', ['page' => $request->input('page')]) + ->with('success', 'Pakaian berhasil diperbarui.'); } catch (\Exception $e) { DB::rollBack(); - if (isset($path) && $request->hasFile('img') && Storage::disk('public')->exists($path)) { - Storage::disk('public')->delete($path); - } - return redirect()->back()->with('error', 'Gagal memperbarui pakaian: ' . $e->getMessage()); } } - /** * Remove the specified resource from storage. */ - public function destroy(string $id) + public function destroy(Request $request, string $id) { $pakaian = Pakaian::findOrFail($id); // Hapus gambar dari storage jika ada - if ($pakaian->img && file_exists(public_path($pakaian->img))) { - unlink(public_path($pakaian->img)); + if ($pakaian->img && Storage::disk('public')->exists(str_replace('storage/', '', $pakaian->img))) { + Storage::disk('public')->delete(str_replace('storage/', '', $pakaian->img)); } // Hapus relasi subkriteria (pivot table) @@ -176,6 +211,8 @@ class PakaianController extends Controller // Hapus data pakaian dari database $pakaian->delete(); - return redirect()->route('admin.pakaian.index')->with('success', 'Data pakaian berhasil dihapus.'); + return redirect()->route('admin.pakaian.index', ['page' => $request->input('page')]) + ->with('success', 'Data pakaian berhasil dihapus.'); } + } diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index 61eaa1b..9411a41 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -4,7 +4,9 @@ namespace App\Http\Controllers; use App\Models\Pakaian; use App\Models\Kriteria; +use App\Models\Subkriteria; use Illuminate\Http\Request; +use App\Models\PenilaianPakaian; class PenilaianController extends Controller { @@ -13,140 +15,103 @@ class PenilaianController extends Controller */ public function index(Request $request) { - $query = Pakaian::with('subKriterias.kriteria'); + $perPage = $request->get('perPage', 10); // Ambil dari query, default ke 10 + + $query = PenilaianPakaian::with(['pakaian', 'subKriteria.kriteria']); - // Filter berdasarkan nama_pakaian jika ada pencarian if ($request->has('search') && $request->search != '') { - $query->where('nama_pakaian', 'like', '%' . $request->search . '%'); - } - - // Ambil jumlah per halaman dari parameter 'perPage' atau default ke 10 - $perPage = $request->get('entries', 10); - - // Ambil data pakaian dengan pagination - $pakaians = $query->paginate($perPage); - - // Ambil semua data kriteria - $kriterias = Kriteria::all(); - - // Return ke view dengan data yang dibutuhkan - return view('admin.pages.penilaian.index', compact('pakaians', 'kriterias')); + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + // Cari di nama pakaian + $q->whereHas('pakaian', function ($q1) use ($search) { + $q1->where('nama_pakaian', 'like', "%$search%"); + }) + // Cari di nama sub kriteria + ->orWhereHas('subKriteria', function ($q2) use ($search) { + $q2->where('nama_sub', 'like', "%$search%"); + }) + // Cari di nama kriteria + ->orWhereHas('subKriteria.kriteria', function ($q3) use ($search) { + $q3->where('nama_kriteria', 'like', "%$search%"); + }); + }); + } + + $penilaians = $query->paginate($perPage)->appends($request->all()); + + return view('admin.pages.penilaian.index', compact('penilaians')); } - /** - * Show the form for creating a new resource. - */ public function create() { - // + $pakaians = Pakaian::all(); + $subkriterias = SubKriteria::all(); + return view('admin.pages.penilaian.form', compact('pakaians', 'subkriterias')); } - /** - * Store a newly created resource in storage. - */ public function store(Request $request) { - // - } + $request->validate([ + 'pakaian_id' => 'required|exists:pakaians,id', + 'sub_kriteria_id' => 'required|exists:sub_kriterias,id', + 'nilai' => 'required|numeric|between:1,5', + ]); - /** - * Display the specified resource. - */ - public function show(string $id) - { - // - } + // Cek apakah kombinasi sudah ada + $cek = PenilaianPakaian::where('pakaian_id', $request->pakaian_id) + ->where('sub_kriteria_id', $request->sub_kriteria_id) + ->first(); - /** - * Show the form for editing the specified resource. - */ - public function edit(string $id) - { - // Ambil data pakaian dengan relasi subKriterias beserta kriteria-nya - $pakaian = Pakaian::with('subKriterias.kriteria')->findOrFail($id); - - // Ambil semua kriteria, supaya bisa ditampilkan di form edit untuk memilih/mengubah subkriteria - $kriterias = Kriteria::with('subKriteria')->get(); - - // Ambil ID kriteria yang multiple select - $multiSelectKriteriaIds = Kriteria::whereIn('nama_kriteria', ['Jenis Acara', 'Lokasi Acara', 'Cuaca'])->pluck('id')->toArray(); - - // Kirim juga nilai penilaian yang sudah disimpan - $nilai = []; - foreach ($pakaian->subKriterias as $sub) { - $kriteriaId = $sub->kriteria->id; - // Untuk multiple, buat array; untuk single, overwrite - if (in_array($kriteriaId, $multiSelectKriteriaIds)) { - $nilai[$kriteriaId][] = $sub->id; - } else { - $nilai[$kriteriaId] = $sub->id; - } + if ($cek) { + return redirect()->back() + ->withErrors(['Data penilaian untuk kombinasi ini sudah ada.']) + ->withInput(); } - return view('admin.pages.penilaian.edit', compact( - 'pakaian', - 'kriterias', - 'multiSelectKriteriaIds', - 'nilai' - )); + PenilaianPakaian::create($request->all()); + $page = $request->input('page', 1); // default page 1 jika tidak ada + return redirect()->route('admin.penilaian.index', ['page' => $page]) + ->with('success', 'Data penilaian berhasil ditambahkan.'); } - /** - * Update the specified resource in storage. - */ - public function update(Request $request, $id) + public function edit(PenilaianPakaian $penilaian) { - $pakaian = Pakaian::findOrFail($id); + $pakaians = Pakaian::all(); + $subkriterias = SubKriteria::all(); + return view('admin.pages.penilaian.form', compact('penilaian', 'pakaians', 'subkriterias')); + } - // Ambil list kriteria yang multiple select (jenis acara, lokasi, cuaca) - $multiSelectKriteria = Kriteria::whereIn('nama_kriteria', ['Jenis Acara', 'Lokasi', 'Cuaca'])->pluck('id')->toArray(); + public function update(Request $request, PenilaianPakaian $penilaian) + { + $request->validate([ + 'pakaian_id' => 'required|exists:pakaians,id', + 'sub_kriteria_id' => 'required|exists:sub_kriterias,id', + 'nilai' => 'required|numeric|between:1,5', + ]); - $rules = []; - $messages = []; + // Cek jika ada duplikat kombinasi (tapi bukan dirinya sendiri) + $cek = PenilaianPakaian::where('pakaian_id', $request->pakaian_id) + ->where('sub_kriteria_id', $request->sub_kriteria_id) + ->where('id', '!=', $penilaian->id) + ->first(); - $allKriteria = Kriteria::all()->keyBy('id'); - - foreach ($request->input('nilai') as $kriteriaId => $value) { - if (!isset($allKriteria[$kriteriaId])) continue; - - $nama = $allKriteria[$kriteriaId]->nama_kriteria; - - if (in_array($kriteriaId, $multiSelectKriteria)) { - $rules["nilai.$kriteriaId"] = 'required|array|min:1'; - $messages["nilai.$kriteriaId.required"] = "Pilih minimal satu subkriteria untuk $nama."; - $messages["nilai.$kriteriaId.min"] = "Pilih minimal satu subkriteria untuk $nama."; - } else { - $rules["nilai.$kriteriaId"] = 'required'; - $messages["nilai.$kriteriaId.required"] = "Pilih satu subkriteria untuk $nama."; - } + if ($cek) { + return redirect()->back() + ->withErrors(['Kombinasi ini sudah digunakan pada data lain.']) + ->withInput(); } - $validated = $request->validate($rules, $messages); - - // Flatten semua subkriteria dari array nilai (baik single select maupun multi) - $subKriteriaIds = []; - - foreach ($validated['nilai'] as $kriteriaId => $sub) { - if (is_array($sub)) { - $subKriteriaIds = array_merge($subKriteriaIds, $sub); - } else { - $subKriteriaIds[] = $sub; - } - } - - $subKriteriaIds = array_unique($subKriteriaIds); - - // Sync relasi many-to-many - $pakaian->subKriterias()->sync($subKriteriaIds); - - return redirect()->route('admin.penilaian.index')->with('success', 'Penilaian berhasil diperbarui.'); + $penilaian->update($request->all()); + $page = $request->input('page', 1); + return redirect()->route('admin.penilaian.index', ['page' => $page]) + ->with('success', 'Data penilaian berhasil diperbarui.'); } - /** - * Remove the specified resource from storage. - */ - public function destroy(string $id) + public function destroy(PenilaianPakaian $penilaian) { - // - } + $penilaian->delete(); + $page = request()->input('page', 1); + return redirect()->route('admin.penilaian.index', ['page' => $page]) + ->with('success', 'Data berhasil dihapus.'); + } } diff --git a/app/Http/Controllers/SubKriteriaController.php b/app/Http/Controllers/SubKriteriaController.php index f3d1355..321583c 100644 --- a/app/Http/Controllers/SubKriteriaController.php +++ b/app/Http/Controllers/SubKriteriaController.php @@ -44,7 +44,6 @@ class SubKriteriaController extends Controller $validated = $request->validate([ 'kriteria_id' => 'required', 'nama_sub' => 'required|string|max:255', - 'nilai' => 'required|integer|min:1|max:5', 'min_harga' => 'nullable|numeric|min:0', 'max_harga' => 'nullable|numeric|min:0|gte:min_harga', ]); @@ -53,7 +52,6 @@ class SubKriteriaController extends Controller SubKriteria::create([ 'kriteria_id' => $validated['kriteria_id'], 'nama_sub' => $validated['nama_sub'], - 'nilai' => $validated['nilai'], 'min_harga' => $validated['min_harga'] ?? null, 'max_harga' => $validated['max_harga'] ?? null, ]); @@ -86,7 +84,6 @@ class SubKriteriaController extends Controller $request->validate([ 'kriteria_id' => 'required', 'nama_sub' => 'required|string|max:255', - 'nilai' => 'required|integer|min:1|max:5', 'min_harga' => 'nullable|numeric', 'max_harga' => 'nullable|numeric', ]); @@ -95,7 +92,6 @@ class SubKriteriaController extends Controller $subkriteria->update([ 'kriteria_id' => $request->kriteria_id, 'nama_sub' => $request->nama_sub, - 'nilai' => $request->nilai, 'min_harga' => $request->min_harga, 'max_harga' => $request->max_harga, ]); diff --git a/app/Models/Kriteria.php b/app/Models/Kriteria.php index 97f2773..8c93204 100644 --- a/app/Models/Kriteria.php +++ b/app/Models/Kriteria.php @@ -17,4 +17,5 @@ class Kriteria extends Model { return $this->hasMany(SubKriteria::class); } + } diff --git a/app/Models/Pakaian.php b/app/Models/Pakaian.php index a7e43c3..c5d4531 100644 --- a/app/Models/Pakaian.php +++ b/app/Models/Pakaian.php @@ -12,10 +12,15 @@ class Pakaian extends Model protected $table = 'pakaians'; - protected $fillable = ['nama_pakaian', 'img', 'harga']; + protected $fillable = ['nama_pakaian', 'img', 'harga', 'deskripsi']; public function subKriterias(): BelongsToMany { return $this->belongsToMany(SubKriteria::class, 'pakaian_sub_kriterias'); } + + public function penilaian() + { + return $this->hasMany(PenilaianPakaian::class); + } } diff --git a/app/Models/QuizHistory.php b/app/Models/PenilaianPakaian.php similarity index 52% rename from app/Models/QuizHistory.php rename to app/Models/PenilaianPakaian.php index 4cbde98..0adc560 100644 --- a/app/Models/QuizHistory.php +++ b/app/Models/PenilaianPakaian.php @@ -2,23 +2,28 @@ namespace App\Models; -use Illuminate\Database\Eloquent\Factories\HasFactory; +use App\Models\Subkriteria; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Factories\HasFactory; -class QuizHistory extends Model +class PenilaianPakaian extends Model { + use HasFactory; + protected $fillable = [ - 'jenis_acara', - 'harga', - 'jenis_pakaian', - 'warna', - 'cuaca', - 'lokasi', 'pakaian_id', + 'sub_kriteria_id', + 'nilai', ]; public function pakaian() { return $this->belongsTo(Pakaian::class); } + + public function subkriteria() + { + return $this->belongsTo(Subkriteria::class, 'sub_kriteria_id'); + } + } diff --git a/app/Models/Subkriteria.php b/app/Models/Subkriteria.php index 4e727ce..b9e534e 100644 --- a/app/Models/Subkriteria.php +++ b/app/Models/Subkriteria.php @@ -13,7 +13,7 @@ class SubKriteria extends Model protected $table = 'sub_kriterias'; - protected $fillable = ['kriteria_id', 'nama_sub', 'nilai', 'min_harga', 'max_harga']; + protected $fillable = ['kriteria_id', 'nama_sub', 'min_harga', 'max_harga']; public function kriteria(): BelongsTo { @@ -24,4 +24,9 @@ class SubKriteria extends Model { return $this->belongsToMany(Pakaian::class, 'pakaian_sub_kriteria'); } + + public function penilaians() + { + return $this->hasMany(PenilaianPakaian::class, 'sub_kriteria_id'); + } } diff --git a/database/migrations/2025_05_28_043816_create_penilaian_pakaians_table.php b/database/migrations/2025_05_28_043816_create_penilaian_pakaians_table.php new file mode 100644 index 0000000..4956661 --- /dev/null +++ b/database/migrations/2025_05_28_043816_create_penilaian_pakaians_table.php @@ -0,0 +1,30 @@ +id(); + $table->foreignId('pakaian_id')->constrained('pakaians')->onDelete('cascade'); // FIX di sini + $table->foreignId('sub_kriteria_id')->constrained('sub_kriterias')->onDelete('cascade'); + $table->integer('nilai'); // 1 kalau cocok, 0 kalau tidak + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('penilaian_pakaians'); + } +}; diff --git a/database/migrations/2025_05_31_101731_add_deskripsi_to_pakaians_table.php b/database/migrations/2025_05_31_101731_add_deskripsi_to_pakaians_table.php new file mode 100644 index 0000000..011488b --- /dev/null +++ b/database/migrations/2025_05_31_101731_add_deskripsi_to_pakaians_table.php @@ -0,0 +1,28 @@ +text('deskripsi')->nullable()->after('img'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('pakaians', function (Blueprint $table) { + $table->dropColumn('deskripsi'); + }); + } +}; diff --git a/database/migrations/2025_05_26_065639_create_quiz_histories_table.php b/database/migrations/2025_05_31_153217_create_quiz_histories_table.php similarity index 60% rename from database/migrations/2025_05_26_065639_create_quiz_histories_table.php rename to database/migrations/2025_05_31_153217_create_quiz_histories_table.php index 55c1685..9539f77 100644 --- a/database/migrations/2025_05_26_065639_create_quiz_histories_table.php +++ b/database/migrations/2025_05_31_153217_create_quiz_histories_table.php @@ -13,13 +13,12 @@ return new class extends Migration { Schema::create('quiz_histories', function (Blueprint $table) { $table->id(); - $table->string('jenis_acara'); - $table->string('harga'); - $table->string('jenis_pakaian'); - $table->string('warna'); - $table->string('cuaca'); - $table->string('lokasi'); - $table->unsignedBigInteger('pakaian_id')->nullable(); // hasil rekomendasi + $table->json('jenis_acara'); // multiple + $table->string('harga'); // single + $table->string('jenis_pakaian');// single + $table->json('warna'); // multiple + $table->json('lokasi'); // multiple + $table->json('hasil_rekomendasi'); // bisa menyimpan lebih dari 1 hasil $table->timestamps(); }); } diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index e6c6f00..4a5fd96 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -3,6 +3,7 @@ namespace Database\Seeders; // use Illuminate\Database\Console\Seeds\WithoutModelEvents; +use App\Models\User; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\Hash; @@ -13,13 +14,18 @@ class DatabaseSeeder extends Seeder */ public function run(): void { - // \App\Models\User::factory(10)->create(); - - \App\Models\User::create([ + User::updateOrCreate( + ['username' => 'ysn'], // Cek berdasarkan username + [ 'name' => 'Admin User', - 'username' => 'ysn', 'email' => 'yasindaputri16@gmail.com', 'password' => Hash::make('1234567890'), + ] + ); + + // Panggil seeder PenilaianPakaianSeeder + $this->call([ + PenilaianPakaianSeeder::class, ]); } } diff --git a/database/seeders/PenilaianPakaianSeeder.php b/database/seeders/PenilaianPakaianSeeder.php new file mode 100644 index 0000000..f255e49 --- /dev/null +++ b/database/seeders/PenilaianPakaianSeeder.php @@ -0,0 +1,1557 @@ +truncate(); + + // Aktifkan lagi foreign key + DB::statement('SET FOREIGN_KEY_CHECKS=1;'); + + $pakaianMap = [ + 'Ariana Blouse' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 5], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 5], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 1], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 4], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 5], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Charlotte Blouse' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 5], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 4], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 4], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 4], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 5], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Freya Etnic Blouse' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 5], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 5], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Keira Blouse' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 5], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 4], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Aurelie Blouse' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 5], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 5], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Elyna Lace Blouse' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 5], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 1], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 4], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 1], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Louisa Blouse' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 5], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 4], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 1], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Azura Etnic Blouse' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 5], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 4], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Celia Blouse' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 1], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 5], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 4], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Elaine Blouse' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 5], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 4], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 4], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Annelise Dress' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 5], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 1], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 4], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 5], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Daisy Silk Dress' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 5], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 4], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 1], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 3], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 4], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 5], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Edelia Dress' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 5], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 4], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 2], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 3], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 4], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 5], + ] + ], + 'Embroidery Tunik' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 5], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 4], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 2], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 3], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 4], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 5], + ] + ], + 'Shimmer Raya Dress' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 5], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 4], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 4], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 1], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 4], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 5], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Elena Dress' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 5], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 4], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 4], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 5], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Aster Dress' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 5], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 1], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 4], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 3], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 4], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 5], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Orchid Flowy Dress' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 5], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 5], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 4], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 5], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Adeline Dress' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 5], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 4], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 4], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 5], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Daphne Dress' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 5], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 2], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 3], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 4], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 5], + ] + ], + 'Brielle Ribbon Cardigan' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 1], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 5], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 4], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 1], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 4], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Ruby Cardigan' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 5], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Rose Knit Cardigan' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 1], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 5], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Camellia Cardigan' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 1], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 5], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 4], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 5], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Chloe Cardigan' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 5], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 5], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 4], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 5], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Jade Stripes Cardigan' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 1], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 5], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 5], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Giselle Knit Top' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 1], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 5], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 5], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 4], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 5], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Stripes Fur Cardigan' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 1], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 5], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 5], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 4], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 5], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Polo Stripes Knit' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 1], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 5], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 5], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 4], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 5], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Ribbon Fur Cardigan' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 1], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 5], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 4], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 5], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Knit Skirt' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 5], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 4], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 4], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 5], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Kirei Flare Skirt' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 5], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 5], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 4], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 5], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Mermaid Jeans Skirt' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 1], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 5], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 5], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 1], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 4], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 5], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Viona Mermaid Skirt' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 1], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 5], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 4], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 4], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Floral Skirt' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 1], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 5], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Fleur Embroidery Skirt' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 5], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 1], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 4], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 5], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Belle Skirt' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 1], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 5], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 5], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Mermaid Skirt' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 1], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 5], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Silk Ruffle Skirt' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 5], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 1], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 5], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Arabella Ruffle Skirt' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 1], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 5], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 1], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Cutbray Jeans Pants' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 1], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 5], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 5], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 1], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 4], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 5], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Anne Flare Jeans' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 1], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 5], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 5], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 1], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 4], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 5], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Cutbray Pants' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 5], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 4], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 1], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Laura Highwaist Pants' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 5], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 4], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 4], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 5], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Flowy Pants' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 5], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 4], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Casual Pants' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 5], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 5], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Celine Pants' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 5], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 5], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 4], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 5], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Pleated Pants' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 5], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 5], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 5], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Iris Pants' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 5], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 1], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 4], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 1], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + 'Scuba Pants' => [ + 'Jenis Acara' => [ + ['sub' => 'Semi Formal', 'nilai' => 5], + ['sub' => 'Non Formal', 'nilai' => 5], + ], + 'Jenis Pakaian' => [ + ['sub' => 'Dress', 'nilai' => 1], + ['sub' => 'Rok', 'nilai' => 1], + ['sub' => 'Blouse', 'nilai' => 1], + ['sub' => 'Cardigan', 'nilai' => 1], + ['sub' => 'Celana', 'nilai' => 5], + ], + 'Warna Pakaian' => [ + ['sub' => 'Warna Dingin (hijau, ungu, denim, mint)', 'nilai' => 1], + ['sub' => 'Warna Panas (maroon, orange, lime)', 'nilai' => 1], + ['sub' => 'Warna Netral (putih, hitam, abu-abu, beige, nude, khaki)', 'nilai' => 4], + ['sub' => 'Warna Lembut (merah muda, biru muda, hijau muda)', 'nilai' => 4], + ['sub' => 'Warna Pastel (cream, coklat muda, hijau kaki, kuning gading)', 'nilai' => 1], + ], + 'Lokasi Acara' => [ + ['sub' => 'Indoor', 'nilai' => 5], + ['sub' => 'Outdoor', 'nilai' => 1], + ], + 'Harga' => [ + ['sub' => 'Rp 94000 - Rp 134000', 'nilai' => 5], + ['sub' => 'Rp 135000 - Rp 174000', 'nilai' => 1], + ['sub' => 'Rp 175000 - Rp 214000', 'nilai' => 1], + ['sub' => 'Rp 215000 - Rp 254000', 'nilai' => 1], + ] + ], + ]; + + foreach ($pakaianMap as $pakaianName => $kriteriaList) { + $pakaian = Pakaian::where('nama_pakaian', $pakaianName)->first(); + if (!$pakaian) continue; + + foreach ($kriteriaList as $kriteriaName => $subList) { + $kriteria = Kriteria::where('nama_kriteria', $kriteriaName)->first(); + if (!$kriteria) continue; + + foreach ($subList as $entry) { + $sub = Subkriteria::where('nama_sub', $entry['sub']) + ->where('kriteria_id', $kriteria->id) + ->first(); + + if ($sub) { + PenilaianPakaian::updateOrCreate([ + 'pakaian_id' => $pakaian->id, + 'sub_kriteria_id' => $sub->id, + ], [ + 'nilai' => $entry['nilai'], + ]); + } + } + } + } + } +} \ No newline at end of file diff --git a/public/uploads/pakaian/1748227988_arianablouse.jpg b/public/uploads/1748692551_arianablouse.jpg similarity index 100% rename from public/uploads/pakaian/1748227988_arianablouse.jpg rename to public/uploads/1748692551_arianablouse.jpg diff --git a/public/uploads/1748692600_arianablouse.jpg b/public/uploads/1748692600_arianablouse.jpg new file mode 100644 index 0000000..0fcadf6 Binary files /dev/null and b/public/uploads/1748692600_arianablouse.jpg differ diff --git a/public/uploads/1748692692_arianablouse.jpg b/public/uploads/1748692692_arianablouse.jpg new file mode 100644 index 0000000..0fcadf6 Binary files /dev/null and b/public/uploads/1748692692_arianablouse.jpg differ diff --git a/public/uploads/pakaian.rar b/public/uploads/pakaian.rar new file mode 100644 index 0000000..df0ae5f Binary files /dev/null and b/public/uploads/pakaian.rar differ diff --git a/public/uploads/pakaian/1748104172_Screenshot 2025-04-23 195651.png b/public/uploads/pakaian/1748104172_Screenshot 2025-04-23 195651.png deleted file mode 100644 index f05bb4e..0000000 Binary files a/public/uploads/pakaian/1748104172_Screenshot 2025-04-23 195651.png and /dev/null differ diff --git a/public/uploads/pakaian/1748104366_Screenshot 2025-04-25 133404.png b/public/uploads/pakaian/1748104366_Screenshot 2025-04-25 133404.png deleted file mode 100644 index 3839553..0000000 Binary files a/public/uploads/pakaian/1748104366_Screenshot 2025-04-25 133404.png and /dev/null differ diff --git a/public/uploads/pakaian/1748228144_charlotteblouse.jpg b/public/uploads/pakaian/1748228144_charlotteblouse.jpg deleted file mode 100644 index a4558ee..0000000 Binary files a/public/uploads/pakaian/1748228144_charlotteblouse.jpg and /dev/null differ diff --git a/public/uploads/pakaian/1748237543_Flowy.jpg b/public/uploads/pakaian/1748237543_Flowy.jpg deleted file mode 100644 index eca1ca6..0000000 Binary files a/public/uploads/pakaian/1748237543_Flowy.jpg and /dev/null differ diff --git a/public/uploads/pakaian/1748237574_casual.jpg b/public/uploads/pakaian/1748237574_casual.jpg deleted file mode 100644 index 227060e..0000000 Binary files a/public/uploads/pakaian/1748237574_casual.jpg and /dev/null differ diff --git a/public/uploads/pakaian/1748237604_WhatsApp Image 2025-05-26 at 12.31.48_f02c493e.jpg b/public/uploads/pakaian/1748237604_WhatsApp Image 2025-05-26 at 12.31.48_f02c493e.jpg deleted file mode 100644 index 4ca61a4..0000000 Binary files a/public/uploads/pakaian/1748237604_WhatsApp Image 2025-05-26 at 12.31.48_f02c493e.jpg and /dev/null differ diff --git a/public/uploads/pakaian/2gGI3JIwHgZ7aMZFCh8UNw4cbk1a6fkmjYIKmqbb.jpg b/public/uploads/pakaian/2gGI3JIwHgZ7aMZFCh8UNw4cbk1a6fkmjYIKmqbb.jpg new file mode 100644 index 0000000..98aef06 Binary files /dev/null and b/public/uploads/pakaian/2gGI3JIwHgZ7aMZFCh8UNw4cbk1a6fkmjYIKmqbb.jpg differ diff --git a/public/uploads/pakaian/4NLFKk6zmQDgbe7j23dyyFcLHo8qwLq95rN4vUNE.jpg b/public/uploads/pakaian/4NLFKk6zmQDgbe7j23dyyFcLHo8qwLq95rN4vUNE.jpg new file mode 100644 index 0000000..336f938 Binary files /dev/null and b/public/uploads/pakaian/4NLFKk6zmQDgbe7j23dyyFcLHo8qwLq95rN4vUNE.jpg differ diff --git a/public/uploads/pakaian/9U9NtYVb0IWRauConDrABS33GZNMbEPKwf9vsBae.jpg b/public/uploads/pakaian/9U9NtYVb0IWRauConDrABS33GZNMbEPKwf9vsBae.jpg new file mode 100644 index 0000000..542276c Binary files /dev/null and b/public/uploads/pakaian/9U9NtYVb0IWRauConDrABS33GZNMbEPKwf9vsBae.jpg differ diff --git a/public/uploads/pakaian/B39RLi9shqVOLbGil8SOZK62YL6011RlwTOcYeR8.jpg b/public/uploads/pakaian/B39RLi9shqVOLbGil8SOZK62YL6011RlwTOcYeR8.jpg new file mode 100644 index 0000000..01513b5 Binary files /dev/null and b/public/uploads/pakaian/B39RLi9shqVOLbGil8SOZK62YL6011RlwTOcYeR8.jpg differ diff --git a/public/uploads/pakaian/C6hrSii6ZIGfjlcot63NK3gFEXof3gpyviw6GcaS.jpg b/public/uploads/pakaian/C6hrSii6ZIGfjlcot63NK3gFEXof3gpyviw6GcaS.jpg new file mode 100644 index 0000000..2057796 Binary files /dev/null and b/public/uploads/pakaian/C6hrSii6ZIGfjlcot63NK3gFEXof3gpyviw6GcaS.jpg differ diff --git a/public/uploads/pakaian/EamTZ7Gpt68DIjKhqqmMSajUjB1DxeUYYqfdFGMr.jpg b/public/uploads/pakaian/EamTZ7Gpt68DIjKhqqmMSajUjB1DxeUYYqfdFGMr.jpg new file mode 100644 index 0000000..49fff5d Binary files /dev/null and b/public/uploads/pakaian/EamTZ7Gpt68DIjKhqqmMSajUjB1DxeUYYqfdFGMr.jpg differ diff --git a/public/uploads/pakaian/FMf4vva5cYXOEpVWvB7A9on58o8X8bBpmzbYawhW.jpg b/public/uploads/pakaian/FMf4vva5cYXOEpVWvB7A9on58o8X8bBpmzbYawhW.jpg new file mode 100644 index 0000000..78839d0 Binary files /dev/null and b/public/uploads/pakaian/FMf4vva5cYXOEpVWvB7A9on58o8X8bBpmzbYawhW.jpg differ diff --git a/public/uploads/pakaian/H0DbYQCnqiCj8qN2mB2w17o5zBpbMzN9z5FHyGub.jpg b/public/uploads/pakaian/H0DbYQCnqiCj8qN2mB2w17o5zBpbMzN9z5FHyGub.jpg new file mode 100644 index 0000000..9cb60ff Binary files /dev/null and b/public/uploads/pakaian/H0DbYQCnqiCj8qN2mB2w17o5zBpbMzN9z5FHyGub.jpg differ diff --git a/public/uploads/pakaian/H0KjarTAsc8g7DFYOf1nk730R2QQDA6X1URRQfY4.jpg b/public/uploads/pakaian/H0KjarTAsc8g7DFYOf1nk730R2QQDA6X1URRQfY4.jpg new file mode 100644 index 0000000..f66e87a Binary files /dev/null and b/public/uploads/pakaian/H0KjarTAsc8g7DFYOf1nk730R2QQDA6X1URRQfY4.jpg differ diff --git a/public/uploads/pakaian/JVJg83SiiZL2Vbgv6hptUNUxEu5yGhH8qO7hZKwf.jpg b/public/uploads/pakaian/JVJg83SiiZL2Vbgv6hptUNUxEu5yGhH8qO7hZKwf.jpg new file mode 100644 index 0000000..91c11a5 Binary files /dev/null and b/public/uploads/pakaian/JVJg83SiiZL2Vbgv6hptUNUxEu5yGhH8qO7hZKwf.jpg differ diff --git a/public/uploads/pakaian/JeRvBXAHYd3ecPMu2mdw7jVBOsu3MWGphzVRFe71.jpg b/public/uploads/pakaian/JeRvBXAHYd3ecPMu2mdw7jVBOsu3MWGphzVRFe71.jpg new file mode 100644 index 0000000..8f2158f Binary files /dev/null and b/public/uploads/pakaian/JeRvBXAHYd3ecPMu2mdw7jVBOsu3MWGphzVRFe71.jpg differ diff --git a/public/uploads/pakaian/K9LInDeOtxOGR9WLBF4Q0uNHsOk1BpiTPXKZYG6t.jpg b/public/uploads/pakaian/K9LInDeOtxOGR9WLBF4Q0uNHsOk1BpiTPXKZYG6t.jpg new file mode 100644 index 0000000..17f5ac6 Binary files /dev/null and b/public/uploads/pakaian/K9LInDeOtxOGR9WLBF4Q0uNHsOk1BpiTPXKZYG6t.jpg differ diff --git a/public/uploads/pakaian/KzsfiCKWvrtF3BF4cA02gbbyGt4yZKh1bhqeXGsT.jpg b/public/uploads/pakaian/KzsfiCKWvrtF3BF4cA02gbbyGt4yZKh1bhqeXGsT.jpg new file mode 100644 index 0000000..67a98ff Binary files /dev/null and b/public/uploads/pakaian/KzsfiCKWvrtF3BF4cA02gbbyGt4yZKh1bhqeXGsT.jpg differ diff --git a/public/uploads/pakaian/OhCCCsjmVHr94Go1TlItv2zvElrvJDxaf66e3JAo.jpg b/public/uploads/pakaian/OhCCCsjmVHr94Go1TlItv2zvElrvJDxaf66e3JAo.jpg new file mode 100644 index 0000000..2fbcc3a Binary files /dev/null and b/public/uploads/pakaian/OhCCCsjmVHr94Go1TlItv2zvElrvJDxaf66e3JAo.jpg differ diff --git a/public/uploads/pakaian/P0B7SlCmLRwzDRhX3QEN6owuOjIOxLJWiNWLAZCK.jpg b/public/uploads/pakaian/P0B7SlCmLRwzDRhX3QEN6owuOjIOxLJWiNWLAZCK.jpg new file mode 100644 index 0000000..332bee9 Binary files /dev/null and b/public/uploads/pakaian/P0B7SlCmLRwzDRhX3QEN6owuOjIOxLJWiNWLAZCK.jpg differ diff --git a/public/uploads/pakaian/P4R5Rm8Zptb8hPuULGk7SoziYP5oO7I8iQoBL9oH.jpg b/public/uploads/pakaian/P4R5Rm8Zptb8hPuULGk7SoziYP5oO7I8iQoBL9oH.jpg new file mode 100644 index 0000000..b4a79d6 Binary files /dev/null and b/public/uploads/pakaian/P4R5Rm8Zptb8hPuULGk7SoziYP5oO7I8iQoBL9oH.jpg differ diff --git a/public/uploads/pakaian/Pdu55FUMAhLaO8cEsTxMCjfhBujYs0RiIckKoR4g.jpg b/public/uploads/pakaian/Pdu55FUMAhLaO8cEsTxMCjfhBujYs0RiIckKoR4g.jpg new file mode 100644 index 0000000..b1d724e Binary files /dev/null and b/public/uploads/pakaian/Pdu55FUMAhLaO8cEsTxMCjfhBujYs0RiIckKoR4g.jpg differ diff --git a/public/uploads/pakaian/PpGrM3QeUDwsW1vyu56ryri97HHugzRfkuckHnv3.jpg b/public/uploads/pakaian/PpGrM3QeUDwsW1vyu56ryri97HHugzRfkuckHnv3.jpg new file mode 100644 index 0000000..551217e Binary files /dev/null and b/public/uploads/pakaian/PpGrM3QeUDwsW1vyu56ryri97HHugzRfkuckHnv3.jpg differ diff --git a/public/uploads/pakaian/ReI3yNicjkyx5Hbo4xPZFCZubekZWxW7uXAv9QAS.jpg b/public/uploads/pakaian/ReI3yNicjkyx5Hbo4xPZFCZubekZWxW7uXAv9QAS.jpg new file mode 100644 index 0000000..451bd20 Binary files /dev/null and b/public/uploads/pakaian/ReI3yNicjkyx5Hbo4xPZFCZubekZWxW7uXAv9QAS.jpg differ diff --git a/public/uploads/pakaian/U323UThBcVHI49FolqcTPwgSM4NvwCT6tajB5Z6x.jpg b/public/uploads/pakaian/U323UThBcVHI49FolqcTPwgSM4NvwCT6tajB5Z6x.jpg new file mode 100644 index 0000000..27ed2bc Binary files /dev/null and b/public/uploads/pakaian/U323UThBcVHI49FolqcTPwgSM4NvwCT6tajB5Z6x.jpg differ diff --git a/public/uploads/pakaian/UlVcvkVPosOv9HBD0EWNXAmuHV4JHiRhUVVu0Pk5.jpg b/public/uploads/pakaian/UlVcvkVPosOv9HBD0EWNXAmuHV4JHiRhUVVu0Pk5.jpg new file mode 100644 index 0000000..df31d6f Binary files /dev/null and b/public/uploads/pakaian/UlVcvkVPosOv9HBD0EWNXAmuHV4JHiRhUVVu0Pk5.jpg differ diff --git a/public/uploads/pakaian/V966tXHRiNZCK9MU5k0DoXhvEgFe35k69aTwDYYf.jpg b/public/uploads/pakaian/V966tXHRiNZCK9MU5k0DoXhvEgFe35k69aTwDYYf.jpg new file mode 100644 index 0000000..05153dc Binary files /dev/null and b/public/uploads/pakaian/V966tXHRiNZCK9MU5k0DoXhvEgFe35k69aTwDYYf.jpg differ diff --git a/public/uploads/pakaian/WfnDdXE9TxHzyDmcq02YTFjWWtkNr0CpXg4I7rqr.jpg b/public/uploads/pakaian/WfnDdXE9TxHzyDmcq02YTFjWWtkNr0CpXg4I7rqr.jpg new file mode 100644 index 0000000..6bf5da1 Binary files /dev/null and b/public/uploads/pakaian/WfnDdXE9TxHzyDmcq02YTFjWWtkNr0CpXg4I7rqr.jpg differ diff --git a/public/uploads/pakaian/XDSUBmSRB3UKZd789BAO9RQplgGsdh36tEogmdbl.jpg b/public/uploads/pakaian/XDSUBmSRB3UKZd789BAO9RQplgGsdh36tEogmdbl.jpg new file mode 100644 index 0000000..47e36bd Binary files /dev/null and b/public/uploads/pakaian/XDSUBmSRB3UKZd789BAO9RQplgGsdh36tEogmdbl.jpg differ diff --git a/public/uploads/pakaian/XFSS6n2RqSqTvg3QshdECXiGpHvKZiRC25tU3RHk.jpg b/public/uploads/pakaian/XFSS6n2RqSqTvg3QshdECXiGpHvKZiRC25tU3RHk.jpg new file mode 100644 index 0000000..4ad15c3 Binary files /dev/null and b/public/uploads/pakaian/XFSS6n2RqSqTvg3QshdECXiGpHvKZiRC25tU3RHk.jpg differ diff --git a/public/uploads/pakaian/XVjmKOTtFBrMViqtNKO3DIINBIdoFfdm4aP5IkBS.jpg b/public/uploads/pakaian/XVjmKOTtFBrMViqtNKO3DIINBIdoFfdm4aP5IkBS.jpg new file mode 100644 index 0000000..658de75 Binary files /dev/null and b/public/uploads/pakaian/XVjmKOTtFBrMViqtNKO3DIINBIdoFfdm4aP5IkBS.jpg differ diff --git a/public/uploads/pakaian/XgpM5g1ic3URPHCkFc9x7aGtQ0XKJErDQNB5bCFR.jpg b/public/uploads/pakaian/XgpM5g1ic3URPHCkFc9x7aGtQ0XKJErDQNB5bCFR.jpg new file mode 100644 index 0000000..b53d7cf Binary files /dev/null and b/public/uploads/pakaian/XgpM5g1ic3URPHCkFc9x7aGtQ0XKJErDQNB5bCFR.jpg differ diff --git a/public/uploads/pakaian/YZIligyVtre5yCJLfOjakKIsSTQSEziWGGuCx8W1.jpg b/public/uploads/pakaian/YZIligyVtre5yCJLfOjakKIsSTQSEziWGGuCx8W1.jpg new file mode 100644 index 0000000..f1ed253 Binary files /dev/null and b/public/uploads/pakaian/YZIligyVtre5yCJLfOjakKIsSTQSEziWGGuCx8W1.jpg differ diff --git a/public/uploads/pakaian/YwY7mz29URTi2LlgtUvT44vDFz5xjGqhxQcciR8U.jpg b/public/uploads/pakaian/YwY7mz29URTi2LlgtUvT44vDFz5xjGqhxQcciR8U.jpg new file mode 100644 index 0000000..2f4f65f Binary files /dev/null and b/public/uploads/pakaian/YwY7mz29URTi2LlgtUvT44vDFz5xjGqhxQcciR8U.jpg differ diff --git a/public/uploads/pakaian/Z1j86kt9qSTJFH6g36PcseM1c9Bo1A4l3zOow5gF.jpg b/public/uploads/pakaian/Z1j86kt9qSTJFH6g36PcseM1c9Bo1A4l3zOow5gF.jpg new file mode 100644 index 0000000..de9336f Binary files /dev/null and b/public/uploads/pakaian/Z1j86kt9qSTJFH6g36PcseM1c9Bo1A4l3zOow5gF.jpg differ diff --git a/public/uploads/pakaian/ZNzdOSiK6qBVzPkHhFad07WmHtv3wZQ9NzHSjXcW.jpg b/public/uploads/pakaian/ZNzdOSiK6qBVzPkHhFad07WmHtv3wZQ9NzHSjXcW.jpg new file mode 100644 index 0000000..d95acfe Binary files /dev/null and b/public/uploads/pakaian/ZNzdOSiK6qBVzPkHhFad07WmHtv3wZQ9NzHSjXcW.jpg differ diff --git a/public/uploads/pakaian/dA1Wy89WhVPWXsocmtoWwCCiTF1S3uchkTBWta2i.jpg b/public/uploads/pakaian/dA1Wy89WhVPWXsocmtoWwCCiTF1S3uchkTBWta2i.jpg new file mode 100644 index 0000000..bc18984 Binary files /dev/null and b/public/uploads/pakaian/dA1Wy89WhVPWXsocmtoWwCCiTF1S3uchkTBWta2i.jpg differ diff --git a/public/uploads/pakaian/n3nruu8dvpqMLyivuhouzEmvRtygxIfmdLzlQFgN.jpg b/public/uploads/pakaian/n3nruu8dvpqMLyivuhouzEmvRtygxIfmdLzlQFgN.jpg new file mode 100644 index 0000000..28e3aa6 Binary files /dev/null and b/public/uploads/pakaian/n3nruu8dvpqMLyivuhouzEmvRtygxIfmdLzlQFgN.jpg differ diff --git a/public/uploads/pakaian/oRPDwhJC7rQXUj87pxcZD7CbPWbU9lnuMx7qWoiv.jpg b/public/uploads/pakaian/oRPDwhJC7rQXUj87pxcZD7CbPWbU9lnuMx7qWoiv.jpg new file mode 100644 index 0000000..4dc7f9c Binary files /dev/null and b/public/uploads/pakaian/oRPDwhJC7rQXUj87pxcZD7CbPWbU9lnuMx7qWoiv.jpg differ diff --git a/public/uploads/pakaian/owmpHk2ylBaDrZf6fmYauEvXtr4cfngd6ID4mau0.jpg b/public/uploads/pakaian/owmpHk2ylBaDrZf6fmYauEvXtr4cfngd6ID4mau0.jpg new file mode 100644 index 0000000..c5b7b79 Binary files /dev/null and b/public/uploads/pakaian/owmpHk2ylBaDrZf6fmYauEvXtr4cfngd6ID4mau0.jpg differ diff --git a/public/uploads/pakaian/pYxRdOyGAbv38pICrgrpvgtYvYPTxpFmcS4vmt7g.jpg b/public/uploads/pakaian/pYxRdOyGAbv38pICrgrpvgtYvYPTxpFmcS4vmt7g.jpg new file mode 100644 index 0000000..d2f530b Binary files /dev/null and b/public/uploads/pakaian/pYxRdOyGAbv38pICrgrpvgtYvYPTxpFmcS4vmt7g.jpg differ diff --git a/public/uploads/pakaian/rEwiuJj53g1yeCjp22z6kNGwzZMlbaM7uy89T6C5.jpg b/public/uploads/pakaian/rEwiuJj53g1yeCjp22z6kNGwzZMlbaM7uy89T6C5.jpg new file mode 100644 index 0000000..59de559 Binary files /dev/null and b/public/uploads/pakaian/rEwiuJj53g1yeCjp22z6kNGwzZMlbaM7uy89T6C5.jpg differ diff --git a/public/uploads/pakaian/tA8AVV2qhwYRD0ahUzTdhGRsvlbnnkV2UsKZmmZf.jpg b/public/uploads/pakaian/tA8AVV2qhwYRD0ahUzTdhGRsvlbnnkV2UsKZmmZf.jpg new file mode 100644 index 0000000..a58bf66 Binary files /dev/null and b/public/uploads/pakaian/tA8AVV2qhwYRD0ahUzTdhGRsvlbnnkV2UsKZmmZf.jpg differ diff --git a/public/uploads/pakaian/tujYvBsoXSTrBEHHSs4FINjxfPTuU6VVmAul1gQi.jpg b/public/uploads/pakaian/tujYvBsoXSTrBEHHSs4FINjxfPTuU6VVmAul1gQi.jpg new file mode 100644 index 0000000..617edcf Binary files /dev/null and b/public/uploads/pakaian/tujYvBsoXSTrBEHHSs4FINjxfPTuU6VVmAul1gQi.jpg differ diff --git a/public/uploads/pakaian/uHlue6QOjTeuB61mvufsOAGU5dQwMfVcLTPuxCIB.jpg b/public/uploads/pakaian/uHlue6QOjTeuB61mvufsOAGU5dQwMfVcLTPuxCIB.jpg new file mode 100644 index 0000000..7267cef Binary files /dev/null and b/public/uploads/pakaian/uHlue6QOjTeuB61mvufsOAGU5dQwMfVcLTPuxCIB.jpg differ diff --git a/public/uploads/pakaian/vET6JHsn0nlKFydd8yIDj3VMKjAEb032iruwtWii.jpg b/public/uploads/pakaian/vET6JHsn0nlKFydd8yIDj3VMKjAEb032iruwtWii.jpg new file mode 100644 index 0000000..ddd5e98 Binary files /dev/null and b/public/uploads/pakaian/vET6JHsn0nlKFydd8yIDj3VMKjAEb032iruwtWii.jpg differ diff --git a/public/uploads/pakaian/wCwNld6GF8OZg0o5Sz1du9GlvdB0kW8b4v3q3FL8.jpg b/public/uploads/pakaian/wCwNld6GF8OZg0o5Sz1du9GlvdB0kW8b4v3q3FL8.jpg new file mode 100644 index 0000000..dc488e8 Binary files /dev/null and b/public/uploads/pakaian/wCwNld6GF8OZg0o5Sz1du9GlvdB0kW8b4v3q3FL8.jpg differ diff --git a/public/uploads/pakaian/wHl2ko91nQJ1UxvMrKaj3RyLLCltzVmlG7FvpKoM.jpg b/public/uploads/pakaian/wHl2ko91nQJ1UxvMrKaj3RyLLCltzVmlG7FvpKoM.jpg new file mode 100644 index 0000000..36029e0 Binary files /dev/null and b/public/uploads/pakaian/wHl2ko91nQJ1UxvMrKaj3RyLLCltzVmlG7FvpKoM.jpg differ diff --git a/public/uploads/pakaian/xE3o0FW0slWMzZb3rsWgQ9gtRne49C0tdew027EO.jpg b/public/uploads/pakaian/xE3o0FW0slWMzZb3rsWgQ9gtRne49C0tdew027EO.jpg new file mode 100644 index 0000000..3603415 Binary files /dev/null and b/public/uploads/pakaian/xE3o0FW0slWMzZb3rsWgQ9gtRne49C0tdew027EO.jpg differ diff --git a/public/uploads/pakaian/xphgsbVOEMuIXhczHQdSTcvSyq4bHERqqg4vnLbz.jpg b/public/uploads/pakaian/xphgsbVOEMuIXhczHQdSTcvSyq4bHERqqg4vnLbz.jpg new file mode 100644 index 0000000..1659cf0 Binary files /dev/null and b/public/uploads/pakaian/xphgsbVOEMuIXhczHQdSTcvSyq4bHERqqg4vnLbz.jpg differ diff --git a/resources/views/admin/layouts/base.blade.php b/resources/views/admin/layouts/base.blade.php index 38e9c27..d2e7987 100644 --- a/resources/views/admin/layouts/base.blade.php +++ b/resources/views/admin/layouts/base.blade.php @@ -161,14 +161,6 @@ Penilaian - - - diff --git a/resources/views/admin/pages/dashboard/index.blade.php b/resources/views/admin/pages/dashboard/index.blade.php index d362aea..2de9933 100644 --- a/resources/views/admin/pages/dashboard/index.blade.php +++ b/resources/views/admin/pages/dashboard/index.blade.php @@ -3,57 +3,33 @@ @section('content')

Dashboard

- + - -
- - -
- -
-
-
- - Data Kriteria: {{ $totalKriteria }} - - -
-
-
-
+
+ +
+
+
+ Informasi Sistem Pendukung Keputusan Pemilihan Pakaian +
+

+ Sistem ini menggunakan metode Simple Additive Weighting (SAW) untuk memberikan rekomendasi pakaian berdasarkan preferensi pengguna. + Setiap pakaian dinilai berdasarkan kecocokan terhadap subkriteria dari 5 kriteria utama, dengan bobot yang telah ditentukan. + Semakin tinggi skor akhir, semakin cocok pakaian tersebut untuk kebutuhan pengguna. +

- - - - - - - - -
-
-
-
Statistik Pengunjung
-
-
-
- -
-
- -
-
-
- - {{-- - - - -
-
-
-
- Perhitungan - -
-
-
-
- - -
-
-
-
- Hasil Akhir - -
-
-
-
--}}
+ +
+
+
+ Statistik Jumlah Data +
+ +
+
+
+ + + @endsection diff --git a/resources/views/admin/pages/pakaian/create.blade.php b/resources/views/admin/pages/pakaian/create.blade.php index ff2a633..841896a 100644 --- a/resources/views/admin/pages/pakaian/create.blade.php +++ b/resources/views/admin/pages/pakaian/create.blade.php @@ -3,17 +3,16 @@ @section('title', 'Tambah Pakaian') @section('content') - -
+
-
- +
Tambah Pakaian
@csrf +
@@ -34,19 +33,31 @@
- + + +
+
+
@foreach ($kriterias as $kriteria)
-
{{ $kriteria->nama_kriteria }}
- +
{{ $kriteria->nama_kriteria }}
@foreach ($kriteria->subKriteria as $sub) + @php + $isRadio = in_array($kriteria->nama_kriteria, ['Harga', 'Jenis Pakaian']); + $inputType = $isRadio ? 'radio' : 'checkbox'; + $inputName = $isRadio ? 'sub_kriterias[' . $kriteria->id . ']' : 'sub_kriterias[]'; + @endphp
- + >
- @else -
Nilai: {{ $sub->nilai }}
@endif
@endforeach
@endforeach - {{-- SCRIPT UNTUK MEMILIH 1 checkbox --}} - @push('scripts') - - @endpush - @stack('scripts') -
-
- + Batal -
- @endsection + +@push('scripts') + +@endpush diff --git a/resources/views/admin/pages/pakaian/edit.blade.php b/resources/views/admin/pages/pakaian/edit.blade.php index 4c3acec..b3c56cd 100644 --- a/resources/views/admin/pages/pakaian/edit.blade.php +++ b/resources/views/admin/pages/pakaian/edit.blade.php @@ -5,8 +5,7 @@ @section('content')
-
- +
Edit Pakaian
@@ -14,6 +13,7 @@
@csrf @method('PUT') +
@@ -32,8 +32,8 @@

- @if ($pakaian->img && Storage::disk('public')->exists($pakaian->img)) - Gambar Lamaimg) + Gambar Lama @else

Tidak ada gambar

@@ -45,19 +45,30 @@
+
+ + +
+
@foreach ($kriterias as $kriteria)
-
{{ $kriteria->nama_kriteria }}
+
{{ $kriteria->nama_kriteria }}
@foreach ($kriteria->subKriteria as $sub)
- id, $pakaian->subKriterias->pluck('id')->toArray()) ? 'checked' : '' }}> + style="accent-color: #14532d;" + {{ in_array($sub->id, $pakaian->subKriterias->pluck('id')->toArray()) ? 'checked' : '' }} + >
- @else -
Nilai: {{ $sub->nilai }}
@endif
@@ -93,11 +102,11 @@ @stack('scripts')
- + Batal -
diff --git a/resources/views/admin/pages/pakaian/index.blade.php b/resources/views/admin/pages/pakaian/index.blade.php index 73371af..5a87483 100644 --- a/resources/views/admin/pages/pakaian/index.blade.php +++ b/resources/views/admin/pages/pakaian/index.blade.php @@ -115,6 +115,7 @@ Gambar Nama Pakaian Harga + Deskripsi Aksi @@ -124,7 +125,7 @@ {{ $loop->iteration }} @if ($item->img) - Gambar @else Tidak ada gambar @@ -132,11 +133,13 @@ {{ $item->nama_pakaian }} Rp{{ number_format($item->harga, 0, ',', '.') }} + {{ $item->deskripsi ?? '-' }} - + @@ -178,7 +181,6 @@ Kriteria Subkriteria - Nilai Range Harga @@ -187,7 +189,6 @@ {{ $sub->kriteria->nama_kriteria ?? '-' }} {{ $sub->nama_sub }} - {{ $sub->nilai }} @if ($sub->kriteria->nama_kriteria === 'Harga') Rp{{ number_format($sub->min_harga, 0, ',', '.') }} @@ -215,69 +216,6 @@ {{ $alternatif->appends(request()->query())->links('vendor.pagination.bootstrap-5') }}
- - - @foreach ($alternatif as $item) - - - @endforeach - - - .btn-biru:hover { - background-color: #0069d9; - } + @if (session('success')) +
{{ session('success') }}
+ @endif - .search-box { - display: flex; - gap: 8px; - align-items: center; - } - - .modern-select { - padding: 6px 12px; - border-radius: 8px; - border: 1px solid #ccc; - font-size: 14px; - background-color: #fff; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); - transition: border 0.2s ease-in-out; - } - - .modern-select:focus { - border-color: #0d6efd; - outline: none; - } - - -
-
-
- Daftar Penilaian Pakaian -
+
+

+ Data Penilaian Pakaian +

+ + Tambah Data +
+
- {{-- GABUNGKAN FORM --}} -
-
- - - entries -
+ + - + + +
-
- - - - - - {{-- Header Kriteria --}} - @foreach ($kriterias as $kriteria) - - @endforeach - - - - - @forelse ($pakaians as $item) - - - + + {{-- Pertahankan nilai perPage --}} + - {{-- Subkriteria --}} - @foreach ($kriterias as $kriteria) - @php - $subKriterias = $item->subKriterias->where('kriteria_id', $kriteria->id); - $namaSubs = $subKriterias->pluck('nama_sub')->toArray(); - @endphp - - @endforeach + + + - - - @empty - - - - @endforelse - -
NoNama Pakaian{{ $kriteria->nama_kriteria }}Aksi
{{ $loop->iteration }}{{ $item->nama_pakaian ?? '-' }}
- @if (count($namaSubs)) - @if (in_array($kriteria->nama_kriteria, ['Jenis Acara', 'Lokasi Acara', 'Cuaca Acara'])) -
- @foreach ($namaSubs as $nama) - - {{ $nama }} - - @endforeach -
- @else - {{ $namaSubs[0] ?? '-' }} - @endif - @else - - - @endif -
- - - -
Belum ada data penilaian.
-
+
+ + + + + + + + + + + + + @forelse ($penilaians as $index => $penilaian) + + + + + + + + + @empty + + + + @endforelse + +
NoPakaianKriteriaSub KriteriaNilaiAksi
{{ $loop->iteration }}{{ $penilaian->pakaian->nama_pakaian ?? '-' }}{{ $penilaian->subKriteria->kriteria->nama_kriteria ?? '-' }}{{ $penilaian->subKriteria->nama_sub ?? '-' }}{{ $penilaian->nilai ?? '-' }} + + + +
+ @csrf + @method('DELETE') + +
+
Tidak ada data penilaian tersedia.
+
-
- {{-- BAWA PARAMETER PAGINATION --}} - {{ $pakaians->appends(['entries' => request('entries'), 'search' => request('search')])->links('pagination::bootstrap-4') }} +
+ {{ $penilaians->appends(request()->query())->links('vendor.pagination.bootstrap-5') }} +
-
- - + + -@endif + deleteButtons.forEach(button => { + button.addEventListener('click', function () { + const id = this.getAttribute('data-id'); + + Swal.fire({ + title: 'Yakin ingin menghapus data ini?', + text: "Data yang dihapus tidak bisa dikembalikan!", + icon: 'warning', + showCancelButton: true, + confirmButtonColor: '#d33', + cancelButtonColor: '#3085d6', + confirmButtonText: 'Ya, hapus!', + cancelButtonText: 'Batal' + }).then((result) => { + if (result.isConfirmed) { + document.getElementById(`delete-form-${id}`).submit(); + } + }); + }); + }); + }); + @endsection + + diff --git a/resources/views/admin/pages/riwayat/index.blade.php b/resources/views/admin/pages/riwayat/index.blade.php deleted file mode 100644 index 3215218..0000000 --- a/resources/views/admin/pages/riwayat/index.blade.php +++ /dev/null @@ -1,138 +0,0 @@ -@extends('admin.layouts.base') - -@section('title', 'Riwayat Perhitungan') - -@section('content') -
-

- Riwayat Hasil Perhitungan -

-
- -
-
-
- Daftar Riwayat Hasil Perhitungan -
-
- -
-
- - - entri -
- -
- - - - - - - - - - @foreach ($riwayat as $index => $item) - - - - - - - - - @endforeach - -
NoTanggalAksi
{{ $riwayat->firstItem() + $index }}{{ $item->created_at->setTimezone('Asia/Jakarta')->format('d M Y H:i') }} - - -
- @csrf - @method('DELETE') - -
-
- -
- {{ $riwayat->links('pagination::bootstrap-5') }} -
-
-
-
- -@push('scripts') - - -@endpush - - - -@endsection diff --git a/resources/views/admin/pages/subkriteria/index.blade.php b/resources/views/admin/pages/subkriteria/index.blade.php index a3fd1ad..3edf146 100644 --- a/resources/views/admin/pages/subkriteria/index.blade.php +++ b/resources/views/admin/pages/subkriteria/index.blade.php @@ -31,7 +31,6 @@ No Nama Subkriteria - Nilai Min Harga Max Harga Aksi @@ -42,7 +41,6 @@ {{ $key + 1 }} {{ $sub->nama_sub }} - {{ $sub->nilai }} {{ $sub->min_harga ?? '-' }} {{ $sub->max_harga ?? '-' }} @@ -104,11 +102,6 @@
-
- - -
-