MIF_E31222467/pos-smartphone-fix/app/Http/Controllers/TestingController.php

136 lines
3.7 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace App\Http\Controllers;
use App\Models\Testing;
use App\Models\Brand;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class TestingController extends Controller
{
public function index(Request $request)
{
// Ambil semua brand dari tabel brands untuk dropdown
$brands = Brand::all();
// Ambil brand yang dipilih dari query parameter (default ke ID pertama)
$brand = $request->input('brand', $brands->first()->id ?? 1);
// Ambil data testing sesuai brand
$testings = Testing::where('brands', $brand)->orderBy('no')->get();
// Cek apakah ada data testing sama sekali
$hasData = $testings->isNotEmpty();
return view('testing', compact('testings', 'brand', 'brands', 'hasData'));
}
// public function generate(Request $request)
// {
// // Mengambil data dari tabel samples
// DB::insert("
// INSERT INTO testing (no, data_1, data_2, data_3, target, brands)
// SELECT
// ROW_NUMBER() OVER (PARTITION BY s4.brand ORDER BY s4.id) AS no,
// s1.data AS data_1, -- minggu -3 sebelum target
// s2.data AS data_2, -- minggu -2 sebelum target
// s3.data AS data_3, -- minggu -1 sebelum target
// s4.data AS target, -- target minggu sekarang
// s4.brand AS brands
// FROM samples s4
// JOIN samples s3 ON s3.id = s4.id - 1
// JOIN samples s2 ON s2.id = s4.id - 2
// JOIN samples s1 ON s1.id = s4.id - 3
// WHERE s4.brand BETWEEN 1 AND 11
// AND s3.brand = s4.brand
// AND s2.brand = s4.brand
// AND s1.brand = s4.brand
// AND s4.bulan BETWEEN 9 AND 12
// ORDER BY s4.brand, s4.id;
// ");
// return redirect()->route('testing.index')->with('success', 'Data Testing berhasil diambil.');
// }
public function reset()
{
DB::table('testing')->truncate();
return redirect()->route('testing.index')->with('success', 'Data Testing berhasil direset.');
}
public function generate(Request $request)
{
$startMonth = session('startMonth'); // Ambil bulan mulai dari session
if (!$startMonth) {
return redirect()->route('testing.index')->with('error', 'Start month tidak ditemukan di session.');
}
// Hitung bulan untuk testing: 4 bulan setelah training (bulan ke 912 dari startMonth)
$validMonths = [];
for ($i = 8; $i < 12; $i++) {
$month = ($startMonth + $i - 1) % 12 + 1;
$validMonths[] = $month;
}
// Ambil brand_id aktif
$brands = DB::table('products')
->where('status', 'aktif')
->distinct()
->pluck('brand_id')
->toArray();
if (empty($brands)) {
return redirect()->route('testing.index')->with('error', 'Tidak ada brand aktif ditemukan.');
}
// Insert data testing
DB::insert("
INSERT INTO testing (no, data_1, data_2, data_3, target, brands)
SELECT
ROW_NUMBER() OVER (PARTITION BY s4.brand ORDER BY s4.id) AS no,
s1.data AS data_1, -- minggu -3 sebelum target
s2.data AS data_2, -- minggu -2 sebelum target
s3.data AS data_3, -- minggu -1 sebelum target
s4.data AS target, -- target minggu sekarang
s4.brand AS brands
FROM samples s4
JOIN samples s3 ON s3.id = s4.id - 1
JOIN samples s2 ON s2.id = s4.id - 2
JOIN samples s1 ON s1.id = s4.id - 3
WHERE
s4.brand IN (" . implode(',', $brands) . ")
AND s3.brand = s4.brand
AND s2.brand = s4.brand
AND s1.brand = s4.brand
AND s4.bulan IN (" . implode(',', $validMonths) . ")
ORDER BY s4.brand, s4.id
");
return redirect()->route('testing.index')->with('success', 'Data Testing berhasil diambil.');
}
}