MIF_E31211871/Laravel/app/Http/Controllers/API/ApiPickup.php

828 lines
32 KiB
PHP

<?php
namespace App\Http\Controllers\API;
use App\Http\Controllers\Controller;
use App\Http\Middleware\ApiKetAuthenticate;
use App\Models\Detail;
use App\Models\Items;
use App\Models\Pickup;
use App\Models\User;
use Carbon\Carbon;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\DB;
use Intervention\Image\Facades\Image;
use Illuminate\Http\Request;
class ApiPickup extends Controller
{
public function __construct()
{
$this->middleware(ApiKetAuthenticate::class);
}
function listPenjemputan(Request $request)
{
$token = $request->bearerToken();
$user = User::where('token', $token)->first();
if ($user->id_role != 1) {
return $this->sendMassage('Token tidak valid', 401, false);
}
// Tambahkan where pickup.status_penjemputan = 3 atau 4
$pickup = Pickup::leftJoin('user', 'user.id_user', '=', 'pickup.id_customer')
->where('pickup.id_pegawai', '=', $user->id_user)
->where(function ($query) {
$query->orWhere('pickup.status_penjemputan', '3')
->orWhere('pickup.status_penjemputan', '4');
})
->get()->toArray();
$result = User::leftJoin('pickup', 'user.id_user', '=', 'pickup.id_customer')
->where(function ($query) {
$query->orWhere('pickup.status_penjemputan', 3)
->orWhere('pickup.status_penjemputan', 4);
})
->get()
->map(function ($item) {
$pickup = Detail::where('kode_detail', '=', $item->kode_pu)->get();
return [
'user' => $item->toArray(),
'pickup' => $pickup->toArray(),
];
});
return $this->sendMassage($result, 200, true);
}
function listKonfirmasiCustomer(Request $request)
{
$token = $request->bearerToken();
$user = User::where('token', $token)->first();
if ($user->id_role != 1) {
return $this->sendMassage('Token tidak valid', 401, false);
}
// Tambahkan where pickup.status_penjemputan = 4 atau 5
// $pickup = Pickup::leftJoin('user', 'user.id_user', '=', 'pickup.id_customer')
// ->where('pickup.id_pegawai', '=', $user->id_user)
// ->whereIn('pickup.status_penjemputan', [4, 5])
// ->get();
// $cekPegawaiNotFree = Pickup::leftJoin('user', 'user.id_user', '=', 'pickup.id_customer')
// ->where('pickup.id_customer', '=', $user->id_user)
// // ->where('user.id_role', 1)
// ->where(function ($query) {
// $query->orWhere('pickup.status_penjemputan', 5)
// ->orWhere('pickup.status_penjemputan', 6);
// })
// ->get()
// // ->pluck('id_user')
// ->toArray();
$result = User::leftJoin('pickup', 'user.id_user', '=', 'pickup.id_customer')
->where(function ($query) {
$query->orWhere('pickup.status_penjemputan', 5)
->orWhere('pickup.status_penjemputan', 6);
})
->get()
->map(function ($item) {
$pickup = Detail::where('kode_detail', '=', $item->kode_pu)->get();
return [
'user' => $item->toArray(),
'pickup' => $pickup->toArray(),
];
});
return $this->sendMassage($result, 200, true);
}
function listNegosiasi(Request $request)
{
$token = $request->bearerToken();
$user = User::where('token', $token)->first();
if ($user->id_role != 2) {
return $this->sendMassage('Token tidak valid', 401, false);
}
// Tambahkan where pickup.status_penjemputan = 2
// DB::raw('DATE_FORMAT(detail_transaksi.created_at, "%Y-%m-%d %H:%i:%s") as tanggal_transaksi'),
//masukkan formula di atas ke code di bawah
// $pickup = Pickup::with('checkboxOptions')->join('user', 'user.id_user', '=', 'pickup.id_customer')
// ->where('pickup.id_pegawai', '=', $user->id_user)
// ->where('pickup.status_penjemputan', 1)
// ->get();
$pickups = Pickup::with(['checkboxOptions', 'customer'])
->where('pickup.id_pegawai', $user->id_user)
->where('pickup.status_penjemputan', 1)
->get();
$result = $pickups->map(function ($pickup) {
return [
"kode_pu" => $pickup->kode_pu,
"id_customer" => $pickup->id_customer,
"id_pegawai" => $pickup->id_pegawai,
"status_penjemputan" => $pickup->status_penjemputan,
"status" => $pickup->status,
"bukti_pengiriman" => $pickup->bukti_pengiriman,
"image_path" => $pickup->image_path,
"image_bukti" => $pickup->image_bukti,
"metode_pembayaran" => $pickup->metode_pembayaran,
"keterangan" => $pickup->keterangan,
"merk_kendaraan" => $pickup->merk_kendaraan,
"plat_nomor" => $pickup->plat_nomor,
"biaya" => $pickup->biaya,
"penambahan_biaya" => $pickup->penambahan_biaya,
"detail_biaya" => $pickup->detail_biaya,
"created_at" => Carbon::parse($pickup->created_at)->format('Y-m-d H:i'),
"updated_at" => Carbon::parse($pickup->updated_at)->format('Y-m-d H:i'),
"id_user" => $pickup->user->id_user,
"nama" => $pickup->user->nama,
"no_telepon" => $pickup->user->no_telepon,
"token" => $pickup->user->token,
"alamat" => $pickup->user->alamat,
"longitude" => $pickup->user->longitude,
"latitude" => $pickup->user->latitude,
"email" => $pickup->user->email,
"password" => $pickup->user->password,
"id_role" => $pickup->user->id_role,
"foto" => $pickup->user->foto,
"checkbox_options" => $pickup->checkboxOptions->map(function ($option) {
return [
"id" => $option->id,
"name" => $option->name,
"price" => $option->price,
"handling_fee" => $option->handling_fee,
"selected" => $option->selected,
"kode_pu" => $option->kode_pu,
"created_at" => Carbon::parse($option->created_at)->format('Y-m-d H:i'),
"updated_at" => Carbon::parse($option->updated_at)->format('Y-m-d H:i'),
];
}),
];
});
return $this->sendMassage($result, 200, true);
}
function listProses(Request $request)
{
$token = $request->bearerToken();
$user = User::where('token', $token)->first();
if ($user->id_role != 2) {
return $this->sendMassage('Token tidak valid', 401, false);
}
// Tambahkan where pickup.status_penjemputan = 3 atau 4
$pickup = Pickup::leftJoin('user', 'user.id_user', '=', 'pickup.id_customer')
->where('pickup.id_pegawai', '=', $user->id_user)
->whereIn('pickup.status_penjemputan', [3, 4])
->get();
$pickups = Pickup::with(['checkboxOptions', 'customer'])
->where('pickup.id_pegawai', $user->id_user)
// ->where('user.id_role', 1)
->where(function ($query) {
$query->orWhere('pickup.status_penjemputan', 3)
->orWhere('pickup.status_penjemputan', 4);
})
->get();
// ->pluck('id_user')
// ->toArray();
$result = $pickups->map(function ($pickup) {
return [
"kode_pu" => $pickup->kode_pu,
"id_customer" => $pickup->id_customer,
"id_pegawai" => $pickup->id_pegawai,
"status_penjemputan" => $pickup->status_penjemputan,
"status" => $pickup->status,
"bukti_pengiriman" => $pickup->bukti_pengiriman,
"image_path" => $pickup->image_path,
"image_bukti" => $pickup->image_bukti,
"metode_pembayaran" => $pickup->metode_pembayaran,
"keterangan" => $pickup->keterangan,
"merk_kendaraan" => $pickup->merk_kendaraan,
"plat_nomor" => $pickup->plat_nomor,
"biaya" => $pickup->biaya,
"penambahan_biaya" => $pickup->penambahan_biaya,
"detail_biaya" => $pickup->detail_biaya,
"created_at" => Carbon::parse($pickup->created_at)->format('Y-m-d H:i'),
"updated_at" => Carbon::parse($pickup->updated_at)->format('Y-m-d H:i'),
"id_user" => $pickup->user->id_user,
"nama" => $pickup->user->nama,
"no_telepon" => $pickup->user->no_telepon,
"token" => $pickup->user->token,
"alamat" => $pickup->user->alamat,
"longitude" => $pickup->user->longitude,
"latitude" => $pickup->user->latitude,
"email" => $pickup->user->email,
"password" => $pickup->user->password,
"id_role" => $pickup->user->id_role,
"foto" => $pickup->user->foto,
"checkbox_options" => $pickup->checkboxOptions->map(function ($option) {
return [
"id" => $option->id,
"name" => $option->name,
"price" => $option->price,
"handling_fee" => $option->handling_fee,
"selected" => $option->selected,
"kode_pu" => $option->kode_pu,
"created_at" => Carbon::parse($option->created_at)->format('Y-m-d H:i'),
"updated_at" => Carbon::parse($option->updated_at)->format('Y-m-d H:i'),
];
}),
];
});
return $this->sendMassage($result, 200, true);
}
function listKonfirmasi(Request $request)
{
$token = $request->bearerToken();
$user = User::where('token', $token)->first();
if ($user->id_role != 2) {
return $this->sendMassage('Token tidak valid', 401, false);
}
// Tambahkan where pickup.status_penjemputan = 5
$pickup = Pickup::leftJoin('user', 'user.id_user', '=', 'pickup.id_customer')
->where('pickup.id_pegawai', '=', $user->id_user)
->where('pickup.status_penjemputan', 5)
->get([
'pickup.*',
'user.*',
DB::raw('DATE_FORMAT(pickup.created_at, "%Y-%m-%d %H:%i") as created_at'),
DB::raw('DATE_FORMAT(pickup.updated_at, "%Y-%m-%d %H:%i") as updated_at')
]);
return $this->sendMassage($pickup, 200, true);
}
function listDetail(Request $request)
{
$token = $request->bearerToken();
$user = User::where('token', $token)->first();
if ($user->id_role != 1) {
return $this->sendMassage('Token tidak valid', 401, false);
}
$getKodePickup = $request->kode_pu;
$pickup = Detail::where('kode_detail', $getKodePickup)->get();
return $this->sendMassage($pickup, 200, true);
}
function sendStruk(Request $request)
{
$token = $request->bearerToken();
$user = User::where('token', $token)->first();
if ($user->id_role != 2) {
return $this->sendMassage('Token tidak valid', 401, false);
}
$getKodePickup = $request->kode_pu;
$cekPickup = Pickup::where('kode_pu', $getKodePickup)->where('id_pegawai', $user->id_user)->first();
if (!$cekPickup) {
return $this->sendMassage("Pickup Not Available", 400, false);
}
// $status = "1";
// $cekStatusPickup = $cekPickup->where('status_penjemputan', $status)
// ->first();
// if (!$cekStatusPickup) {
// return $this->sendMassage("Pickup Not Available", 400, true);
// }
$inputBiaya = $request->biaya;
$inputPenambahanBiaya = $request->penambahan_biaya;
$inputDetailBiaya = $request->detail_biaya;
// $inputKeterangan = $request->keterangan;
try {
Pickup::where('kode_pu', $getKodePickup)
->update([
"status_penjemputan" => "2",
// "keterangan" => $inputKeterangan,
"biaya" => $inputBiaya,
"penambahan_biaya" => $inputPenambahanBiaya,
"detail_biaya" => $inputDetailBiaya,
]);
return $this->sendMassage("Success Change Status", 200, true);
} catch (\Exception $e) {
return $this->sendMassage("Failed Change Status", 400, true);
}
}
public function updateService(Request $request)
{
$token = $request->bearerToken();
$user = User::where('token', $token)->first();
if ($user->id_role != 2) {
return $this->sendMassage('Token tidak valid', 401, false);
}
$getKodePickup = $request->kodePickup;
$cekPickup = Pickup::where('kode_pu', $getKodePickup)->where('id_pegawai', $user->id_user)->first();
if (!$cekPickup) {
return $this->sendMassage("Pickup Not Available", 400, false);
}
$status = "4";
$cekStatusPickup = $cekPickup->where('status_penjemputan', $status)->first();
if (!$cekStatusPickup) {
return $this->sendMassage("Pickup Not Available", 400, true);
}
if ($request->hasFile('image')) {
$image = $request->file('image');
$imagePath = 'gambar/' . $image->getClientOriginalName();
// Mengompresi gambar menggunakan Intervention Image
$compressedImage = Image::make($image->getRealPath());
$compressedImage->resize(800, 800, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
})->save($imagePath, 75); // Simpan gambar dengan kualitas 75%
} else {
return $this->sendMassage("No image file uploaded", 400, false);
}
try {
$Pickup = new Detail();
$Pickup->kode_detail = $getKodePickup;
$Pickup->image = $imagePath;
$Pickup->keterangan = $request->keterangan;
$Pickup->save();
return $this->sendMassage("Success Change Status", 200, true);
} catch (\Exception $e) {
return $this->sendMassage("Failed Change Status", 400, true);
}
}
function serviceDone(Request $request)
{
$token = $request->bearerToken();
$user = User::where('token', $token)->first();
if ($user->id_role != 2) {
return $this->sendMassage('Token tidak valid', 401, false);
}
$getKodePickup = $request->kode_pu;
$cekPickup = Pickup::where('kode_pu', $getKodePickup)->where('id_pegawai', $user->id_user)->first();
if (!$cekPickup) {
return $this->sendMassage("Pickup Not Available", 400, false);
}
$status = "4";
$cekStatusPickup = $cekPickup->where('status_penjemputan', $status)
->first();
if (!$cekStatusPickup) {
return $this->sendMassage("Pickup Not Available", 400, true);
}
try {
Pickup::where('kode_pu', $getKodePickup)
->update(["status_penjemputan" => "5"]);
return $this->sendMassage("Success Change Status", 200, true);
} catch (\Exception $e) {
return $this->sendMassage("Failed Change Status", 400, true);
}
}
function submitPickup(Request $request)
{
$token = $request->bearerToken();
$user = User::where('token', $token)->first();
if ($user->id_role != 2) {
return $this->sendMassage('Token tidak valid', 401, false);
}
$getKodePickup = $request->kodePickup;
$cekPickup = Pickup::where('kode_pu', $getKodePickup)->where('id_pegawai', $user->id_user)->first();
if (!$cekPickup) {
return $this->sendMassage("Pickup Not Available", 400, false);
}
// $status = "3";
// $cekStatusPickup = $cekPickup->where('status_penjemputan', $status)
// ->first();
// if (!$cekStatusPickup) {
// return $this->sendMassage("Pickup Not Available", 400, true);
// }
try {
Pickup::where('kode_pu', $getKodePickup)
// ->update(["status_penjemputan" => "4", "bukti_pengiriman" => $cekPickup->kode_pu]);
->update(["status_penjemputan" => "3"]);
return $this->sendMassage("Success Change Status", 200, true);
} catch (\Exception $e) {
return $this->sendMassage("Failed Change Status", 400, true);
}
}
function kirimStruk(Request $request)
{
$token = $request->bearerToken();
$user = User::where('token', $token)->first();
if ($user->id_role != 1) {
return $this->sendMassage('Token tidak valid', 401, false);
}
$getKodePickup = $request->kode_pu;
$cekPickup = Pickup::where('kode_pu', $getKodePickup)->where('id_customer', $user->id_user)->first();
if (!$cekPickup) {
return $this->sendMassage("Pickup Not Available", 400, false);
}
$status = "5";
$cekStatusPickup = $cekPickup->where('status_penjemputan', $status)
->first();
if (!$cekStatusPickup) {
return $this->sendMassage("Pickup Not Available", 400, true);
}
if ($request->hasFile('image')) {
$image = $request->file('image');
$imagePath = 'gambar/' . $image->getClientOriginalName();
// Mengompresi gambar menggunakan Intervention Image
$compressedImage = Image::make($image->getRealPath());
$compressedImage->resize(800, 800, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
})->save($imagePath, 75); // Simpan gambar dengan kualitas 75%
} else {
return $this->sendMassage("No image file uploaded", 400, false);
}
try {
if ($cekPickup->bukti_pengiriman == "booking") {
if ($request->metode_pembayaran == "QRIS") {
Pickup::where('kode_pu', $getKodePickup)
->update(["status" => "lunas", "image_bukti" => $imagePath]);
return $this->sendMassage("Success Change Status", 200, true);
} else {
Pickup::where('kode_pu', $getKodePickup)
->update(["status" => "lunas", "image_bukti" => $imagePath]);
return $this->sendMassage("Success Change Status", 200, true);
}
} else {
if ($request->metode_pembayaran == "QRIS") {
Pickup::where('kode_pu', $getKodePickup)
// ->update(["status_penjemputan" => "3", "metode_pembayaran" => $request->metode_pembayaran, "image_bukti" => $imagePath]);
->update(["status" => "lunas", "image_bukti" => $imagePath]);
return $this->sendMassage("Success Change Status", 200, true);
} else {
Pickup::where('kode_pu', $getKodePickup)
// ->update(["status_penjemputan" => "3", "metode_pembayaran" => $request->metode_pembayaran]);
->update(["status" => "lunas", "image_bukti" => $imagePath]);
return $this->sendMassage("Success Change Status", 200, true);
}
}
} catch (\Exception $e) {
return $this->sendMassage("Failed Change Status", 400, true);
}
}
function terimaStruk(Request $request)
{
$token = $request->bearerToken();
$user = User::where('token', $token)->first();
if ($user->id_role != 1) {
return $this->sendMassage('Token tidak valid', 401, false);
}
$getKodePickup = $request->kode_pu;
$cekPickup = Pickup::where('kode_pu', $getKodePickup)->where('id_customer', $user->id_user)->first();
if (!$cekPickup) {
return $this->sendMassage("Pickup Not Available", 400, false);
}
$status = "2";
$cekStatusPickup = $cekPickup->where('status_penjemputan', $status)
->first();
if (!$cekStatusPickup) {
return $this->sendMassage("Pickup Not Available", 400, true);
}
try {
if ($cekPickup->bukti_pengiriman == "booking") {
if ($request->metode_pembayaran == "QRIS") {
Pickup::where('kode_pu', $getKodePickup)
->update(["status_penjemputan" => "4", "metode_pembayaran" => $request->metode_pembayaran]);
return $this->sendMassage("Success Change Status", 200, true);
} else {
Pickup::where('kode_pu', $getKodePickup)
->update(["status_penjemputan" => "4", "metode_pembayaran" => $request->metode_pembayaran]);
return $this->sendMassage("Success Change Status", 200, true);
}
} else {
if ($request->metode_pembayaran == "QRIS") {
Pickup::where('kode_pu', $getKodePickup)
// ->update(["status_penjemputan" => "3", "metode_pembayaran" => $request->metode_pembayaran, "image_bukti" => $imagePath]);
->update(["status_penjemputan" => "4", "biaya" => $request->harga, "Penambahan_biaya" => $request->customHarga, "detail_biaya" => $request->totalHarga, "metode_pembayaran" => $request->metode_pembayaran]);
return $this->sendMassage("Success Change Status", 200, true);
} else {
Pickup::where('kode_pu', $getKodePickup)
// ->update(["status_penjemputan" => "3", "metode_pembayaran" => $request->metode_pembayaran]);
->update(["status_penjemputan" => "4", "biaya" => $request->harga, "Penambahan_biaya" => $request->customHarga, "detail_biaya" => $request->totalHarga, "metode_pembayaran" => $request->metode_pembayaran]);
return $this->sendMassage("Success Change Status", 200, true);
}
}
} catch (\Exception $e) {
return $this->sendMassage("Failed Change Status", 400, true);
}
}
function konfirmasiPickup(Request $request)
{
if ($request->kodeBukti == "cancel") {
Pickup::where('kode_pu', $request->kodePickup)
->update([
"status_penjemputan" => "6",
"bukti_pengiriman" => "cancel",
"image_path" => "cancel",
"keterangan" => "cancel",
]);
return $this->sendMassage('Pembatalan Di setujui', 200, true);
}
$token = $request->bearerToken();
$user = User::where('token', $token)->first();
if ($user->id_role != 2) {
return $this->sendMassage('Token tidak valid', 401, false);
}
$getKodePickup = $request->kodePickup;
$cekPickup = Pickup::where('kode_pu', $getKodePickup)->where('id_pegawai', $user->id_user)->first();
if (!$cekPickup) {
return $this->sendMassage("Pickup Not Available", 400, false);
}
$status = "5";
$cekStatusPickup = $cekPickup->where('status_penjemputan', $status)
->first();
if (!$cekStatusPickup) {
return $this->sendMassage("Pickup Not Available", 400, true);
}
if ($request->hasFile('image')) {
$imagePath = $request->file('image')->move('gambar', $request->file('image')->getClientOriginalName());
// Lanjutkan dengan proses Anda
} else {
return $this->sendMassage("No image file uploaded", 400, false);
}
try {
Pickup::where('kode_pu', $getKodePickup)
->update([
"status_penjemputan" => "6",
"bukti_pengiriman" => $request->keterangan,
"image_path" => $imagePath,
]);
return $this->sendMassage("Success Change Status", 200, true);
} catch (\Exception $e) {
return $this->sendMassage("Failed Change Status", 400, true);
}
}
function submitReqPickup(Request $request)
{
$token = $request->bearerToken();
$user = User::where('token', $token)->first();
if ($user->id_role != 1) {
return $this->sendMassage('Token tidak valid', 401, false);
}
$userLongitude = $user->longitude;
$userLatitude = $user->latitude;
$inputLongitude = $request->longitude;
$inputLatitude = $request->latitude;
if ($inputLongitude !== null && $inputLatitude !== null) {
if ($userLongitude != $inputLongitude || $userLatitude != $inputLatitude) {
$user->longitude = $inputLongitude;
$user->latitude = $inputLatitude;
$user->save();
}
}
if (isset($request->merk_kendaraan) && isset($request->plat_nomor) && isset($request->keterangan)) {
$Pickup = new Pickup();
$Pickup->kode_pu = $request->kode_pu;
$Pickup->id_customer = $user->id_user;
$Pickup->id_pegawai = "PEG001";
$Pickup->status_penjemputan = "1";
$Pickup->bukti_pengiriman = "Pemesanan";
$Pickup->status = "belum_bayar";
$Pickup->merk_kendaraan = $request->merk_kendaraan;
$Pickup->plat_nomor = $request->plat_nomor;
$Pickup->keterangan = $request->keterangan;
$Pickup->save();
$services = [
['name' => 'Filter Oli Bosch', 'price' => 150000, 'handling_fee' => 10000],
['name' => 'Busi Denso', 'price' => 35000, 'handling_fee' => 5000],
['name' => 'Kampas Rem Aisin', 'price' => 300000, 'handling_fee' => 15000],
['name' => 'Disc Brake TRW', 'price' => 750000, 'handling_fee' => 20000],
['name' => 'Filter Udara Sakura', 'price' => 100000, 'handling_fee' => 7000],
['name' => 'Kampas Kopling Federal Parts', 'price' => 500000, 'handling_fee' => 18000],
['name' => 'Water Pump GMB', 'price' => 450000, 'handling_fee' => 16000],
['name' => 'Shock Absorber KYB', 'price' => 800000, 'handling_fee' => 22000],
['name' => 'Aki Yuasa', 'price' => 1200000, 'handling_fee' => 30000],
['name' => 'Ban Dunlop', 'price' => 900000, 'handling_fee' => 25000],
['name' => 'Oli Mesin Motul', 'price' => 250000, 'handling_fee' => 12000],
];
foreach ($services as $service) {
$item = new Items();
$item->name = $service['name'];
$item->price = $service['price']; // Store original price
$item->handling_fee = $service['handling_fee']; // Store handling fee separately
$item->selected = 0; // Default value
$item->kode_pu = $request->kode_pu;
$item->save();
}
return $this->sendMassage("Mohon Tunggu, Kendaraan anda akan segera di jemput", 200, true);
} else {
return $this->sendMassage("Lengkapi data kendaraan", 400, false);
}
}
function submitReqBooking(Request $request)
{
$token = $request->bearerToken();
$user = User::where('token', $token)->first();
if ($user->id_role != 1) {
return $this->sendMassage('Token tidak valid', 401, false);
}
if (isset($request->merk_kendaraan) && isset($request->plat_nomor) && isset($request->keterangan)) {
$Pickup = new Pickup();
$Pickup->kode_pu = $request->kode_pu;
$Pickup->id_customer = $user->id_user;
$Pickup->id_pegawai = "PEG001";
$Pickup->status_penjemputan = "1";
$Pickup->status = "belum_bayar";
$Pickup->bukti_pengiriman = "booking";
$Pickup->merk_kendaraan = $request->merk_kendaraan;
$Pickup->plat_nomor = $request->plat_nomor;
$Pickup->keterangan = $request->keterangan;
$Pickup->save();
$services = [
['name' => 'Filter Oli Bosch', 'price' => 150000, 'handling_fee' => 10000],
['name' => 'Busi Denso', 'price' => 35000, 'handling_fee' => 5000],
['name' => 'Kampas Rem Aisin', 'price' => 300000, 'handling_fee' => 15000],
['name' => 'Disc Brake TRW', 'price' => 750000, 'handling_fee' => 20000],
['name' => 'Filter Udara Sakura', 'price' => 100000, 'handling_fee' => 7000],
['name' => 'Kampas Kopling Federal Parts', 'price' => 500000, 'handling_fee' => 18000],
['name' => 'Water Pump GMB', 'price' => 450000, 'handling_fee' => 16000],
['name' => 'Shock Absorber KYB', 'price' => 800000, 'handling_fee' => 22000],
['name' => 'Aki Yuasa', 'price' => 1200000, 'handling_fee' => 30000],
['name' => 'Ban Dunlop', 'price' => 900000, 'handling_fee' => 25000],
['name' => 'Oli Mesin Motul', 'price' => 250000, 'handling_fee' => 12000],
];
foreach ($services as $service) {
$item = new Items();
$item->name = $service['name'];
$item->price = $service['price']; // Store original price
$item->handling_fee = $service['handling_fee']; // Store handling fee separately
$item->selected = 0; // Default value
$item->kode_pu = $request->kode_pu;
$item->save();
}
return $this->sendMassage("Booking antrian berhasil", 200, true);
} else {
return $this->sendMassage("Lengkapi data kendaraan", 400, false);
}
}
public function listDashboard(Request $request)
{
$token = $request->bearerToken();
$user = User::where('token', $token)->first();
if ($user->id_role != 1) {
return $this->sendMassage('Token tidak valid', 401, false);
}
$pickup = Pickup::where('id_customer', $user->id_user)
->where('status_penjemputan', '1')
->orderBy('created_at', 'desc')
->get();
$cekPegawaiNotFree = Pickup::with([
'checkboxOptions' => function ($query) {
$query->where('selected', 1);
}
])
->leftJoin('user', 'user.id_user', '=', 'pickup.id_customer')
->where('pickup.id_customer', '=', $user->id_user)
->where(function ($query) {
$query->orWhere('pickup.status_penjemputan', 1)
->orWhere('pickup.status_penjemputan', 2);
})
->get();
$formattedPickup = $cekPegawaiNotFree->map(function ($item) {
return [
'kode_pu' => $item->kode_pu,
'nama_customer' => $item->nama,
'id_customer' => $item->id_customer,
'id_pegawai' => $item->id_pegawai,
'status_penjemputan' => $item->status_penjemputan,
'bukti_pengiriman' => $item->bukti_pengiriman,
'image_path' => asset($item->image_path), // Menggunakan asset untuk menghasilkan URL gambar
'keterangan' => $item->keterangan,
'biaya' => $item->biaya,
'penambahan_biaya' => $item->penambahan_biaya,
'detail_biaya' => $item->detail_biaya,
'created_at' => $item->created_at,
'updated_at' => $item->updated_at,
'checkboxOptions' => $item->checkboxOptions
];
});
return $this->sendMassage($formattedPickup, 200, true);
}
// Function Massage
public function sendMassage($text, $kode, $status)
{
return response()->json([
'data' => $text,
'code' => $kode,
'status' => $status
], $kode);
}
}