MIF_E31210128/app/Http/Controllers/PengajuanTitipanController.php

103 lines
3.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
use App\Models\CarUnit;
use App\Models\Photo;
use App\Models\Brand;
use App\Models\Category;
use Illuminate\Support\Facades\Storage;
class PengajuanTitipanController extends Controller
{
public function store(Request $request)
{
// Validasi data yang diterima dari request
$validatedData = $request->validate([
'name' => 'required|string',
'brand_id' => 'required|exists:brands,id',
'category_id' => 'required|exists:categories,id',
'price' => 'nullable|numeric',
'year' => 'nullable|integer',
'fuel_type' => [
'nullable',
Rule::in(\App\Models\CarUnit::FUEL_TYPE_OPTIONS)
],
'transmission' => [
'nullable',
Rule::in(\App\Models\CarUnit::TRANSMISSION_OPTIONS)
],
'seat' => 'nullable|integer',
'warranty' => 'nullable|string',
'color' => 'nullable|string',
'mileage' => 'nullable|numeric',
'engine_cc' => 'nullable|numeric',
'service_book' => 'nullable|numeric',
'spare_key' => 'nullable|numeric',
'unit_document' => 'nullable|numeric',
'stnk_validity_period' => 'nullable|string',
'description' => 'nullable|string'
]);
$fee = 0;
if (isset($validatedData['price']) && is_numeric($validatedData['price'])) {
$fee = $validatedData['price'] * 0.02;
}
$user_id = Auth::id();
$carUnit = new CarUnit();
$carUnit->fill($validatedData);
$carUnit->user_id = $user_id;
$carUnit->status = 'Menunggu Verifikasi';
$carUnit->type = 'Titipan';
$carUnit->type_status = 'Menunggu Verifikasi';
$carUnit->fee = $fee;
$carUnit->save();
$request->validate([
'photos.*' => 'required|image|mimes:png,jpg,jpeg,webp'
]);
foreach ($request->file('photos') as $photo) {
$timestamp = time();
$filename = date('Y-m-d') . '_' . $timestamp . '_' . $photo->getClientOriginalName();
$path = 'car-units-photos/' . $filename;
Storage::disk('public')->put($path, file_get_contents($photo));
$photoData = [
'car_unit_id' => $carUnit->id,
'file_path' => $path
];
Photo::create($photoData);
}
return response()->json(['message' => 'Data mobil berhasil disimpan!']);
}
public function index()
{
$carUnits = CarUnit::where('type', 'Titipan')->get();
$brands = Brand::all();
$categories = Category::all();
return view('tampilan-admin.mobil-titipan', compact('carUnits', 'brands', 'categories'));
}
public function changeStatus(Request $request)
{
$carUnitId = $request->input('carUnitId');
$status = $request->input('status');
$type_status = $request->input('type_status');
$carUnit = CarUnit::find($carUnitId);
if ($carUnit) {
$carUnit->status = $status;
$carUnit->type_status = $type_status;
$carUnit->save();
return response()->json(['message' => 'Status berhasil diubah'], 200);
} else {
return response()->json(['message' => 'Car Unit tidak ditemukan'], 404);
}
}
}