Files
lelong/app/Http/Controllers/Mobile/LelongMobileController.php
T
ismailmasseran e29a5891c8 Bugfix/list clickup issue (#5)
Reviewed-on: #5
Co-authored-by: ISMAIL MASSERAN <ismail@koppkb.com>
Co-committed-by: ISMAIL MASSERAN <ismail@koppkb.com>
2026-10-19 13:30:36 +08:00

1797 lines
65 KiB
PHP

<?php
namespace App\Http\Controllers\Mobile;
use App\Http\Controllers\Controller;
use App\Models\Cart;
use App\Models\Cawangan;
use App\Models\CawanganLelong;
use App\Models\FileMarhun;
use App\Models\FileResit;
use App\Models\Invoice;
use App\Models\JenisEmas;
use App\Models\LelKarat;
use App\Models\Lelong;
use App\Models\LelongBid;
use App\Models\LelongBidder;
use App\Models\LelongBidMarhun;
use App\Models\Payment;
use App\Models\Resit;
use App\Models\User;
use App\Services\MarhunPhotoService;
use App\Services\ResitPhotoService;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use PDF;
class LelongMobileController extends Controller
{
public function getlelongdetails(Request $request)
{
$currentdate = Carbon::now();
$currentdate = $currentdate->toDateString();
// $arrayLelong = [];
$lelong = Lelong::where('tarikh_lelong', '=', $currentdate)
->where('sts_lelong', '=', 1)
->get()->toArray();
if ($lelong) {
foreach ($lelong as $index1 => $lel) {
$lelongbid = LelongBid::whereIn('lelong_id', $lelong)
->get()->toArray();
$lelong[$index1]['lelongbid'] = $lelongbid;
foreach ($lelongbid as $index2 => $lelbidmarhun) {
$cawangan = Cawangan::where('id', '=', $lelbidmarhun['caw_id'])->first()->toArray();
// $id = lelongbid::first();
$lelongbidmarhun = LelongBidMarhun::where('lelongbid_id', $lelbidmarhun['id'])
->get()->toArray();
$lelong[$index1]['lelongbid'][$index2]['lelongbidmarhun'] = $lelongbidmarhun;
$lelong[$index1]['lelongbid'][$index2]['cawangan'] = $cawangan;
}
}
} else {
$lelong[0]['lelongbid'] = [];
}
return response()->json($lelong);
}
public function getListKarat()
{
$activeLelong = Lelong::where('sts_lelong', '=', 1)->first();
if (isset($activeLelong)) {
$getKarat = LelKarat::where('lelong_id', '=', $activeLelong['id'])->whereNotIn('karat', ['18.0Kp', '14.0Kp'])->get();
$date_convert = strtotime($getKarat[0]['updated_at']);
$updatedDateTime = date('d-m-Y h:i A', $date_convert);
return response()->json([
'success' => true,
'karat' => $getKarat,
'update_time' => $updatedDateTime,
], 201);
} else {
return response()->json([
'success' => false,
], 201);
}
}
public function bidderSelectBidItem(Request $request)
{
// $feepayment = Payment::join('resit', 'payment.resit_id','=','resit.id')
// ->where('payment.user_id',$request->user_id)
// ->where('payment.lelong_id', '=', $request->lelong_id)
// ->where('resit.resit_type',1)
// ->where('resit.status','PAID')->first();
// // dd($feepayment);
// if($feepayment != null){
$user = User::where('id', '=', $request->user_id)
->first();
$carts = Cart::join('lelongbid', 'carts.lelongbid_id', '=', 'lelongbid.id')
// ->join('lelong', 'lelongbid.lelong_id', '=', 'lelong.id')
// ->where('lelong.sts_lelong','=',1)
->where('carts.user_id', $user->id)
->select('lelongbid.id as lelongbid_id',
'lelongbid.t_lelong',
'lelongbid.nilaimarhun',
'lelongbid.cajlelong',
'carts.hargabida',
'carts.id as cart_id')
->get();
// dd($carts);
// dd($selectBid[0]->hargabida);
$currentdate = Carbon::now()->toDateTimeString();
foreach ($carts as $cart) {
$lelongBidder = new LelongBidder;
$lelongBidder->nama_bidder = $request->name;
$lelongBidder->user_id = $user->id;
$lelongBidder->notelbimbit = $user->notelbimbit;
$lelongBidder->hargabida = $cart->hargabida;
$lelongBidder->lelongbid_id = $cart->lelongbid_id;
$lelongBidder->nilaimarhun = $cart->nilaimarhun;
$lelongBidder->cajlelong = $cart->cajlelong;
$lelongBidder->masa_bidaan = $currentdate;
if ($lelongBidder->save()) {
$delincart = Cart::where('id', $cart->cart_id)->first();
$delincart->delete();
}
}
$response = [
'success' => 'success',
'message' => 'Bidder berjaya disimpan',
];
return response()->json($response, 201);
// }
// else if($feepayment == null){
// $response = [
// 'success' => "error",
// 'message' => "Something wrong with the server"
// ];
// return response()->json($response, 201);
// }
}
public function listBidItem(Request $request)
{
$lelongbidder = LelongBidder::where('user_id', '=', $request->user_id)
->get()->toArray();
foreach ($lelongbidder as $index1 => $lelbid) {
$lelongbid = LelongBid::whereIn('id', $lelongbidder)
->get()->toArray();
$lelongbidder[$index1]['lelongbid'] = $lelongbid;
}
return response()->json($lelongbidder);
}
public function bidRecord(Request $request)
{
$lelongbidder = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id')
->where('user_id', '=', $request->user_id)
->where('lelong_id', '=', $request->lelong_id)
->get()->toArray();
foreach ($lelongbidder as $index => $data) {
$cawangan = Cawangan::where('caw_code', '=', $data['kodcaw'])->select('caw_name')->first();
$lelongbidder[$index]['caw_name'] = $cawangan['caw_name'];
}
return response()->json($lelongbidder);
}
public function bidRecordByCawangan($userId)
{
$currentdate = Carbon::now();
$currentdate = $currentdate->toDateString();
$lelong = Lelong::where('tarikh_lelong', '=', $currentdate)->select('id', 'masatamat_lelong')->first();
if ($lelong) {
$date_convert = strtotime($lelong->masatamat_lelong);
$lelong['masatamat_lelong'] = date('h:i A', $date_convert);
$groupCawangan = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id')
->join('cawangan', 'lelongbid.caw_id', '=', 'cawangan.id')
->where('user_id', '=', $userId)
->where('lelong_id', $lelong->id)
->select('caw_id', 'caw_name')
->groupBy('caw_id')
->get()->toArray();
foreach ($groupCawangan as $index => $cawangan) {
$lelongBidder = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id')
->where('user_id', $userId)
->where('caw_id', $cawangan)
->where('lelong_id', $lelong->id)
->get()->toArray();
$total_hargabida = 0;
$total_berat = 0;
foreach ($lelongBidder as $index1 => $data) {
$fileMarhun = FileMarhun::where('lelongbid_id', $data['id'])->where('photo_type', 1)->get();
if ($fileMarhun->isNotEmpty()) {
$lelongBidder[$index1]['filemarhun'] = $fileMarhun;
}
$date_convert = strtotime($data['masa_bidaan']);
$lelongBidder[$index1]['masa_bidaan'] = date('h:i A', $date_convert);
$total_hargabida += $data['hargabida'];
$total_berat += $data['berat'];
$marhun = LelongBidMarhun::where('lelongbid_id', '=', $data['id'])->get()->toArray();
$lelongBidder[$index1]['lelongbidmarhun'] = $marhun;
}
$groupCawangan[$index]['total_berat'] = number_format((float) $total_berat, 2, '.', '');
$groupCawangan[$index]['total_bidaan'] = number_format((float) $total_hargabida, 2, '.', '');
$groupCawangan[$index]['lelongbid'] = $lelongBidder;
}
}
if ($lelong && $groupCawangan) {
return response()->json([
'success' => true,
'lelongbidder' => $groupCawangan,
'lelong' => $lelong,
], 201);
} else {
return response()->json([
'success' => false,
'message' => 'Empty Data',
], 201);
}
}
// please do not delete this changes
// backup web pembida
public function listBidItemWeb($user_id, Request $request)
{
$lelongbidder = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id')
->where('user_id', '=', $request->user_id)
->select('lelongbid.lelong_id', 'lelongbid.t_lelong')
->groupBy('lelongbid.lelong_id', 'lelongbid.t_lelong')
->get()->toArray();
foreach ($lelongbidder as $index1 => $lelbid) {
$lelongbid = LelongBid::join('lelongbidder', 'lelongbid.id', '=', 'lelongbidder.lelongbid_id')
->where('lelong_id', $lelbid['lelong_id'])
->where('lelongbidder.user_id', $request->user_id)
->get()->toArray();
$lelongbidder[$index1]['lelongbid'] = $lelongbid;
}
return response()->json($lelongbidder);
}
public function historyFeePay(Request $request)
{
$checkpay = Payment::join('resit', 'payment.resit_id', '=', 'resit.id')
->where('resit.user_id', $request->user_id)
->where('payment.lelong_id', $request->lelong_id)
->where('payment.status', 1)
->where('resit.resit_type', 1)
->select('resit.id as resit id',
'resit.resit_type',
'resit.status as resit_status',
'resit.paid_at',
'payment.id as payment_id',
'payment.lelong_id',
'payment.status as payment_status'
)
->first();
if ($checkpay) {
$response =
[
'message' => 'Success',
'status' => 1,
];
} else {
$response =
[
'message' => 'Sila buat pembayaran yuran terlebih dahulu',
'status' => 2,
];
}
return response()->json($response, 201);
}
public function searchLelByCaw(Request $request)
{
$currentdate = Carbon::now();
$currentdate = $currentdate->toDateString();
// $arrayLelong = [];
$lelong = Lelong::join('cawangan_lelong', 'lelong.id', '=', 'cawangan_lelong.lelong_id')
->where('tarikh_lelong', '=', $currentdate)
->where('caw_id', '=', $request->caw_id)
->where('status_online', '=', 1)
->get()->toArray();
foreach ($lelong as $index1 => $lel) {
$lelongbid = LelongBid::where('lelong_id', $lel['lelong_id'])
->where('caw_id', '=', $request->caw_id)
->get()->toArray();
$lelong[$index1]['lelongbid'] = $lelongbid;
foreach ($lelongbid as $index2 => $lelbidmarhun) {
// $cawangan = Cawangan::where('id','=',$lelbidmarhun['caw_id'])->first()->toArray();
// $id = lelongbid::first();
$lelongbidmarhun = LelongBidMarhun::where('lelongbid_id', $lelbidmarhun['id'])
->get()->toArray();
$lelong[$index1]['lelongbid'][$index2]['lelongbidmarhun'] = $lelongbidmarhun;
// $lelong[$index1]['lelongbid'][$index2]['cawangan'] = $cawangan;
}
}
if ($lelong) {
return response()->json(
['success' => true, 'message' => $lelong], 201
);
} else {
return response()->json(
['success' => false, 'message' => 'Empty Data'], 201
);
}
}
public function listSuratLelong(Request $request)
{
$currentdate = Carbon::now();
$currentdate = $currentdate->toDateString();
$lelong = Lelong::join('cawangan_lelong', 'lelong.id', '=', 'cawangan_lelong.lelong_id')
->where('tarikh_lelong', '=', $currentdate)
->where('caw_id', '=', $request->caw_id)
->where('status_online', '=', 1)
->first();
if ($lelong) {
$lelongbid = LelongBid::where('lelong_id', $lelong['lelong_id'])
->where('caw_id', '=', $request->caw_id)
->where('status_jual', '=', 0)
->select('id', 'kodcaw')
->get();
$pluckedLelongBid = $lelongbid->pluck('id')->toArray();
$carts = Cart::where('user_id', $request->user_id)
->select('lelongbid_id')
->get();
$pluckedCarts = $carts->pluck('lelongbid_id')->toArray();
$lelongbidder = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id')
->where('lelong_id', $request->lelong_id)
->where('user_id', $request->user_id)
->select('lelongbid_id')
->get();
$pluckedLelongBidder = $lelongbidder->pluck('lelongbid_id')->toArray();
$arrayDiff1 = array_diff($pluckedLelongBid, $pluckedCarts);
$arrayDiff2 = array_diff($arrayDiff1, $pluckedLelongBidder);
$listLelong = [];
foreach ($arrayDiff2 as $index => $data) {
$lelongbid = LelongBid::where('id', $data)->first()->toArray();
$lelongbidmarhun = LelongBidMarhun::where('lelongbid_id', $lelongbid['id'])->get()->toArray();
foreach ($lelongbidmarhun as $index1 => $marhun) {
$marhunDesc = JenisEmas::where('marhun', $marhun['marhun'])->first()->toArray();
$lelongbidmarhun[$index1]['marhun_desc'] = $marhunDesc['descpt'];
}
$lelongbid['lelongbidmarhun'] = $lelongbidmarhun;
$fileMarhun = FileMarhun::where('lelongbid_id', $lelongbid['id'])->where('photo_type', 1)->get();
// dd($fileMarhun);
// foreach ($fileMarhun as $index) {
// dd($index);
// // $eachmarhun = FileMarhun::where('lelongbidmarhun_id', '=', $index['id'])->first();
// // if (isset($eachmarhun)) {
// // $index->eachmarhun_filename = route('marhun.showphotomarhun', ['norujukan_sag' => $lelongbid['norujukan'], 'filemarhun_id' => $index->id]);
// // $test = route('marhun.showphotomarhun', ['norujukan_sag' => $lelongbid['norujukan'], 'filemarhun_id' => $index->id]);
// $marhunPhotoService = new MarhunPhotoService();
// $marhun_photo = $marhunPhotoService->get($lelongbid['norujukan'], $index);
// dd($marhun_photo);
// return $marhun_photo;
// }
// // dd($fileMarhun);
if ($fileMarhun->isNotEmpty()) {
$lelongbid['filemarhun'] = $fileMarhun;
}
array_push($listLelong, $lelongbid);
}
$lelong['lelongbid'] = $listLelong;
return response()->json(
['success' => true, 'message' => $lelong],
201
);
} else {
return response()->json(
['success' => false, 'message' => 'Empty Data'],
201
);
}
}
public function listSuratLelong2(Request $request)
{
$currentdate = Carbon::now();
$currentdate = $currentdate->toDateString();
$lelong = Lelong::join('cawangan_lelong', 'lelong.id', '=', 'cawangan_lelong.lelong_id')
->where('tarikh_lelong', '=', $currentdate)
->where('caw_id', '=', $request->caw_id)
->where('status_online', '=', 1)
->select('lelong.id', 'lelong.tarikh_lelong', 'lelong.sts_lelong', 'cawangan_lelong.caw_id')
->first();
$listLelong = [];
if ($lelong) {
$jenis_emas = JenisEmas::select('marhun', 'descpt')->get()->keyBy('marhun');
$cart_all = Cart::join('lelongbid', 'carts.lelongbid_id', '=', 'lelongbid.id')
->where('user_id', $request->user_id)
->where('caw_id', '=', $request->caw_id)
->pluck('lelongbid_id');
$lelongbidder_all = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id')
->where('lelong_id', $lelong->id)
->where('user_id', $request->user_id)
->where('caw_id', '=', $request->caw_id)
->pluck('lelongbid_id');
$combine_carts_lelongbidder = $cart_all->concat($lelongbidder_all);
$lelongbid_all = LelongBid::with('lelongBidMarhun', 'fileMarhunMainMany')
->where('lelong_id', $lelong->id)
->where('caw_id', $request->caw_id)
->where('status_jual', 0)
->whereNotIn('id', $combine_carts_lelongbidder)
->get();
foreach ($lelongbid_all as $lelongbid) {
foreach ($lelongbid->lelongBidMarhun as $lel_bid_marhun) {
if ($jenis_emas[$lel_bid_marhun->marhun]) {
$lel_bid_marhun['marhun_desc'] = $jenis_emas[$lel_bid_marhun->marhun]->descpt;
}
}
$lelongbid->lelongbidmarhun = $lelongbid->lelongBidMarhun;
unset($lelongbid->lelongBidMarhun);
if ($lelongbid->fileMarhunMainMany->isNotEmpty()) {
$lelongbid->filemarhun = $lelongbid->fileMarhunMainMany;
}
unset($lelongbid->fileMarhunMainMany);
array_push($listLelong, $lelongbid);
}
$lelong['lelongbid'] = $listLelong;
return response()->json(
['success' => true, 'message' => $lelong], 201
);
} else {
return response()->json(
['success' => false, 'message' => 'Empty Data'], 201
);
}
}
public function photoMarhun(Request $request)
{
$fileMarhun = FileMarhun::find($request->filemarhun_id);
$marhunPhotoService = new MarhunPhotoService;
$marhun_photo = $marhunPhotoService->get($request->norujukan, $fileMarhun);
return base64_encode($marhun_photo);
}
public function lelongOnline()
{
$lelong = Lelong::where('sts_lelong', '=', 1)->first();
if ($lelong) {
$date_convert = strtotime($lelong->masatamat_lelong);
$lelong->masatamat_lelong = date('h:i A', $date_convert);
return response()->json(['success' => true, 'lelong' => $lelong]);
} else {
return response()->json(['success' => false]);
}
}
public function itemInCart(Request $request)
{
$cart = Cart::where('user_id', $request->user_id)->count();
if ($cart) {
return response()->json(['success' => true, 'cart' => $cart]);
} else {
return response()->json(['success' => false]);
}
}
public function searchLelongByCawangan(Request $request)
{
$currentdate = Carbon::now();
$currentdate = $currentdate->toDateString();
// $arrayLelong = [];
$lelong = Lelong::join('cawangan_lelong', 'lelong.id', '=', 'cawangan_lelong.lelong_id')
->where('tarikh_lelong', '=', $currentdate)
->where('caw_id', '=', $request->caw_id)
->where('status_online', '=', 1)
->get()->toArray();
foreach ($lelong as $index1 => $lel) {
$lelongbid = LelongBid::where('lelong_id', $lel['lelong_id'])
->where('caw_id', '=', $request->caw_id)
->get()->toArray();
$lelong[$index1]['lelongbid'] = $lelongbid;
// dd($lelong);
foreach ($lelongbid as $index => $lelbidmarhun) {
// $cawangan = Cawangan::where('id','=',$lelbidmarhun['caw_id'])->first()->toArray();
// $id = lelongbid::first();
$lelongbidmarhun = LelongBidMarhun::where('lelongbid_id', $lelbidmarhun['id'])
->get()->toArray();
$lelong['lelongbid'][$index]['lelongbidmarhun'] = $lelongbidmarhun;
// $lelong[$index1]['lelongbid'][$index2]['cawangan'] = $cawangan;
// dd($lelong);
}
}
if ($lelong) {
return response()->json(
['success' => true, 'message' => $lelong], 201
);
} else {
return response()->json(
['success' => false, 'message' => 'Empty Data'], 201
);
}
}
public function bidresult($user_id)
{
$sag = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id')
->join('lelong', 'lelongbid.lelong_id', '=', 'lelong.id')
->where('lelongbidder.user_id', $user_id)
// ->where('lelongbid.lelong_id',$lelong_id)
->where('lelongbidder.status_bidder', 1)
->whereNull('lelongbidder.status_payment')
->select(
'lelongbid.lelong_id',
'lelongbidder.user_id',
'lelongbidder.lelongbid_id',
'lelongbidder.hargabida',
'lelongbidder.status_payment',
'lelongbid.norujukan'
)
->get();
// dd($sag);
$data = [];
$total_hargabida = $sag->sum('hargabida');
array_push($data, [
'sag' => $sag,
'total_hargabida' => $total_hargabida,
]);
// dd($winner);
return response()->json($data);
}
public function resultInCawangan(Request $request)
{
$user = User::find($request->user_id, ['name', 'nokp']);
$lelongbid = LelongBid::join('lelongbidder', 'lelongbid.id', '=', 'lelongbidder.lelongbid_id')
->where('lelongbid.lelong_id', $request->lelong_id)
->where('lelongbidder.user_id', $request->user_id)
->where('lelongbidder.status_bidder', 1)
->where('lelongbid.kodcaw', $request->kodcaw)
->select(
'lelongbid.id AS id',
'lelongbidder.id AS bidder_id',
'lelongbid.norujukan',
'lelongbid.kodcaw',
'lelongbidder.hargabida',
'lelongbid.marhun',
'lelongbid.berat',
)
->get();
foreach ($lelongbid as $index => $data) {
$lelongbidmarhun = LelongBidMarhun::where('lelongbid_id', $data->id)->get();
foreach ($lelongbidmarhun as $index1 => $lelbidmarhun) {
$jenis_emas = JenisEmas::where('marhun', '=', $lelbidmarhun->marhun)->select('descpt')->first();
$lelongbidmarhun[$index1]['marhun_desc'] = $jenis_emas->descpt;
}
$lelongbid[$index]['lelongbidmarhun'] = $lelongbidmarhun->toArray();
}
// dd($lelongbid->toArray(), $user->toArray());
return response()->json([
'success' => true,
'user' => $user,
'lelongbid' => $lelongbid,
]);
}
public function resultInCawangan2(Request $request)
{
$current = new Carbon;
$date_convert = strtotime($current);
$current_convert = date('d-m-Y h:i A', $date_convert);
$user = User::find($request->user_id, ['name', 'nokp', 'alamat', 'notelbimbit']);
$lelong = Lelong::find($request->lelong_id, ['id', 'tarikh_lelong']);
$date_convert = strtotime($lelong->tarikh_lelong);
$date_lelong_convert = date('d-m-Y', $date_convert);
$cawangan = Cawangan::where('caw_code', $request->kodcaw)->select('caw_name', 'alamat1', 'alamat2', 'notel', 'nofaks')->first();
$lelong_bid_all = LelongBid::with(['lelongBidMarhun:id,lelongbid_id,marhun,berat', 'lelongBidMarhun.jenisEmas:marhun,descpt'])
->join('lelongbidder', 'lelongbid.id', '=', 'lelongbidder.lelongbid_id')
->where('lelongbid.lelong_id', $request->lelong_id)
->where('lelongbidder.user_id', $request->user_id)
->where('lelongbidder.status_bidder', 1)
->where('lelongbid.kodcaw', $request->kodcaw)
->select(
'lelongbid.id AS id',
'lelongbidder.id AS bidder_id',
'lelongbid.norujukan',
'lelongbid.kodcaw',
'lelongbidder.hargabida',
'lelongbid.marhun',
'lelongbid.berat',
)
->get();
// return view('pdf.surathakkepemilikanbrg', compact('current_convert', 'date_lelong_convert', 'user', 'lelong_bid_all', 'cawangan'));
$pdf = PDF::loadView('pdf.surathakkepemilikanbrg', compact('current_convert', 'date_lelong_convert', 'user', 'lelong_bid_all', 'cawangan'))->setPaper('a4', 'potrait');
return $pdf->download('Penyata Bayaran.pdf');
}
public function downloadInvoice(Request $request)
{
$user = User::find($request->user_id, ['name', 'nokp']);
$pdf = PDF::loadView('pdf.penyatabayaranpembida')->setPaper('a4', 'potrait');
return $pdf->download('Penyata Bayaran.pdf');
return response()->json($user);
}
public function bidresults($user_id, $lelong_id)
{
$sag = LelongBid::join('lelongbidder', 'lelongbid.id', '=', 'lelongbidder.lelongbid_id')
->where('lelongbid.lelong_id', $lelong_id)
->where('lelongbidder.user_id', $user_id)
->where('lelongbidder.status_bidder', 1)
->select(
'lelongbid.kodcaw'
)
->groupBy('lelongbid.kodcaw')
->get();
$getTarikhLelong = Lelong::where('id', $lelong_id)->select('tarikh_lelong')->first();
$tarikhLelong = $getTarikhLelong->tarikh_lelong;
$tarikhLelong = strtotime($tarikhLelong);
$tarikhLelong = date('d-m-Y', $tarikhLelong);
$data = [];
foreach ($sag as $index1 => $kodcaw) {
$groupBycaw = LelongBid::join('lelongbidder', 'lelongbid.id', '=', 'lelongbidder.lelongbid_id')
->where('lelongbid.lelong_id', $lelong_id)
->where('lelongbidder.user_id', $user_id)
->where('lelongbidder.status_bidder', 1)
->where('lelongbid.kodcaw', $kodcaw->kodcaw)
->select(
'lelongbid.id AS id',
'lelongbidder.id AS bidder_id',
'lelongbid.norujukan AS norujukan',
'lelongbid.kodcaw AS kodcaw',
'lelongbidder.hargabida AS total_payment',
'lelongbid.marhun AS marhun',
'lelongbid.hargaasas',
'lelongbid.berat',
'lelongbidder.status_payment')
->get();
$getCawangan = Cawangan::where('caw_code', $kodcaw->kodcaw)
->select('caw_name', 'caw_code')
->first();
$namaCawangan = $getCawangan->caw_name;
$kodCawangan = $getCawangan->caw_code;
$status_payment_cawangan['status'] = 1;
$payment = Payment::where('norujukan', $groupBycaw[0]->norujukan)
->where(function ($query) {
$query->where('status', '=', 1)
->orWhere('status', '=', 2);
})
->first();
if ($payment != null) {
$checkPayMethod = Resit::find($payment->resit_id);
$date_convert = strtotime($checkPayMethod->created_at);
$checkPayMethod['pay_time'] = date('H:i:s', $date_convert);
$status_payment_cawangan['resit'] = $checkPayMethod->toArray();
if ($checkPayMethod->billplz_id == '') {
$status_payment_cawangan['payment_method'] = 'TUNAI';
$status_payment_cawangan['payment_method_opt'] = 1;
} elseif (str_starts_with($checkPayMethod->billplz_id, 'CDM')) {
$status_payment_cawangan['payment_method'] = 'CDM';
$status_payment_cawangan['payment_method_opt'] = 3;
$file_resit = FileResit::where('user_id', $user_id)->where('lelong_id', $lelong_id)->where('kodcaw', $kodCawangan)->get();
foreach ($file_resit as $index => $resit) {
$date_convert = strtotime($resit->created_at);
$updatedDateTime = date('H:i:s', $date_convert);
$file_resit[$index]['masa_upload'] = $updatedDateTime;
}
$status_payment_cawangan['file_resit'] = $file_resit;
} else {
$status_payment_cawangan['payment_method'] = 'ONLINE';
$status_payment_cawangan['payment_method_opt'] = 2;
}
if ($payment->disahkan_pada == null) {
$status_payment_cawangan['status'] = 9; // status pending tunggu pengesahan
}
} else {
$status_payment_cawangan['status'] = null;
}
$total_hargabida = 0;
foreach ($groupBycaw as $index => $hargabida) {
$fileMarhun = FileMarhun::where('lelongbid_id', $hargabida->id)->where('photo_type', 1)->get();
if ($fileMarhun->isNotEmpty()) {
$groupBycaw[$index]['filemarhun'] = $fileMarhun;
}
$marhun = LelongBidMarhun::where('lelongbid_id', '=', $hargabida->id)->get()->toArray();
$groupBycaw[$index]['lelongbidmarhun'] = $marhun;
$totalbida = Lelongbidder::where('id', $hargabida->bidder_id)
->select('hargabida')
->first();
$groupBycaw[$index]['hargabida'] = number_format($totalbida['hargabida'], 2, '.', ',');
$total_hargabida = $total_hargabida + $totalbida['hargabida'];
}
$sag = $groupBycaw;
array_push($data, [
'kodcaw' => $kodCawangan,
'cawangan' => $namaCawangan,
'sag' => $sag,
'total_hargabida' => number_format($total_hargabida, 2, '.', ','),
'status_payment_cawangan' => $status_payment_cawangan,
]);
}
$response = [
'success' => true,
'tarikh_lelong' => $tarikhLelong,
'data' => $data,
];
return response()->json($response);
}
public function bidPayRemaining($user_id, $lelong_id)
{
$sag = LelongBid::join('lelongbidder', 'lelongbid.id', '=', 'lelongbidder.lelongbid_id')
->where('lelongbid.lelong_id', $lelong_id)
->where('lelongbidder.user_id', $user_id)
->where('lelongbidder.status_bidder', 1)
->whereNull('lelongbidder.status_payment')
->select(
'lelongbid.kodcaw'
)
->groupBy('lelongbid.kodcaw')
->get();
// dd($sag->toArray());
$getTarikhLelong = Lelong::where('id', $lelong_id)->select('tarikh_lelong')->first();
$tarikhLelong = $getTarikhLelong->tarikh_lelong;
$date_convert = strtotime($tarikhLelong);
$tarikhLelong = date('d-m-Y', $date_convert);
$data = [];
foreach ($sag as $index1 => $kodcaw) {
// dd($kodcaw->toArray());
$groupBycaw = LelongBid::join('lelongbidder', 'lelongbid.id', '=', 'lelongbidder.lelongbid_id')
->where('lelongbid.lelong_id', $lelong_id)
->where('lelongbidder.user_id', $user_id)
->where('lelongbidder.status_bidder', 1)
->whereNull('lelongbidder.status_payment')
->where('lelongbid.kodcaw', $kodcaw->kodcaw)
->select(
'lelongbidder.id AS id',
'lelongbid.id AS lelongbid_id',
'lelongbid.norujukan AS norujukan',
'lelongbid.kodcaw AS kodcaw',
'lelongbidder.hargabida AS total_payment',
'lelongbid.marhun AS marhun',
'lelongbidder.status_payment')
->get();
$getCawangan = Cawangan::where('caw_code', $kodcaw->kodcaw)
->select('caw_name', 'caw_code', 'nama_bank', 'bank_acc', 'bank_acc_no')
->first();
$namaCawangan = $getCawangan->caw_name;
$kodCawangan = $getCawangan->caw_code;
$sag = $groupBycaw;
$total_hargabida = 0;
foreach ($groupBycaw as $hargabida) {
$totalbida = Lelongbidder::where('id', $hargabida['id'])
->select('hargabida')
->first();
$total_hargabida = $total_hargabida + $totalbida['hargabida'];
}
array_push($data, [
'kodcaw' => $kodCawangan,
'cawangan' => $namaCawangan,
'nama_bank' => $getCawangan->nama_bank,
'bank_acc' => $getCawangan->bank_acc,
'bank_acc_no' => $getCawangan->bank_acc_no,
'sag' => $sag,
'total_hargabida' => number_format($total_hargabida, 2, '.', ','),
]);
}
$response = [
'success' => true,
'tarikh_lelong' => $tarikhLelong,
'data' => $data,
];
return response()->json($response);
}
public function updatebiditem(Request $request)
{
// dd($request->norujukan->toArray());
// foreach($request->norujukan as $norujukan)
// {
// dd($norujukan);
// }
$currentdate = Carbon::now();
$currentdate = $currentdate->toDateTimeString();
$lelongbid = LelongBid::whereIn('norujukan', $request->norujukan)
->where('lelong_id', $request->lelong_id)
->get();
foreach ($lelongbid as $bid) {
$lelongbidder = LelongBidder::where('lelongbid_id', $bid->id)
->where('user_id', $request->user_id)->first();
$lelongbidder->status_payment = 1;
$lelongbidder->payment_id = $request->paymentid;
$lelongbidder->save();
$lelongbid = LelongBid::where('id', $bid->id)->first();
$lelongbid->status_jual = 1;
$lelongbid->t_jual = $currentdate;
$lelongbid->hargajual = $lelongbidder->hargabida;
$lelongbid->save();
}
// $alllelongbidder = LelongBidder::join('lelongbid','lelongbidder.lelongbid_id','lelongbid.id')
// ->where('lelongbidder.user_id',$request->user_id)
// ->where('lelongbid.lelong_id',$request->lelong_id)
// ->where('lelongbidder.status_bidder',1)
// ->select('lelongbidder.hargabida')
// ->get();
// $resit = Resit::where('lelong_id',$request->lelong_id)
// ->where('user_id',$request->user_id)
// ->where('resit_type',2)
// ->first();
// if($resit->total_payment > $alllelongbidder->SUM('hargabida'))
// {
// $resit->status = 'PAID';
// $resit->paid_at = $currentdate;
// $resit->save();
// }
$response = [
'success' => 'success',
'message' => 'Bidaan berjaya dibayar',
];
return response()->json($response, 201);
}
public function history($user_id)
{
$lelongs_id = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id')
->where('lelongbidder.user_id', $user_id)->select('lelongbid.lelong_id')->groupBy('lelongbid.lelong_id')->get();
$arrayID = [];
foreach ($lelongs_id as $lelong_id) {
array_push($arrayID, $lelong_id);
}
$lelongs = Lelong::whereIn('id', $arrayID)->get()->toArray();
// dd($lelongs);
foreach ($lelongs as $index1 => $lelong) {
// dd($lelong['id']);
$datalelongbidder = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id')
->where('lelongbid.lelong_id', $lelong['id'])
->where('user_id', $user_id)
->where('status_bidder', 1)->get();
$payment = Payment::join('resit', 'payment.resit_id', '=', 'resit.id')
->where('payment.lelong_id', $lelong['id'])
->where('payment.user_id', $user_id)
->where('resit.resit_type', 2)
->first();
if ($payment->status == 'PAID') {
$status = 'Selesai';
} else {
$status = 'Belum Selesai';
}
$lelongs[$index1]['total'] = $datalelongbidder->sum('hargabida');
$lelongs[$index1]['status'] = $status;
$lelongs[$index1]['detail_sag'] = $datalelongbidder;
}
return response()->json($lelongs, 201);
}
public function listCawLelongToday()
{
$currentdate = Carbon::now();
$currentdate = $currentdate->toDateString();
$lelong = Lelong::join('cawangan_lelong', 'lelong.id', '=', 'cawangan_lelong.lelong_id')
->join('cawangan', 'cawangan_lelong.caw_id', '=', 'cawangan.id')
->where('tarikh_lelong', '=', $currentdate)
->select(
'lelong.id as lelong_id',
'lelong.tarikh_lelong',
'cawangan.caw_name',
'cawangan_lelong.caw_id',
'cawangan_lelong.masamula_lelong',
'cawangan_lelong.masatamat_lelong',
)
->groupBy('cawangan.caw_name')
->get();
foreach ($lelong as $index => $data) {
if ($data['masamula_lelong'] != null) {
$date_convert = strtotime($data['masamula_lelong']);
$lelong[$index]['masamula_lelong'] = date('h:i A', $date_convert);
$date_convert_2 = strtotime($data['masatamat_lelong']);
$lelong[$index]['masatamat_lelong'] = date('h:i A', $date_convert_2);
}
$lelong[$index]['caw_name'] = $this->shortCawanganName($data['caw_name']);
}
if ($lelong->isNotEmpty()) {
return response()->json([
'success' => true,
'lelong' => $lelong,
]);
} else {
return response()->json([
'success' => false,
]);
}
}
public function listCawLelongTodayStarted()
{
$currentdate = Carbon::now();
$currentdate = $currentdate->toDateString();
$lelong = Lelong::join('cawangan_lelong', 'lelong.id', '=', 'cawangan_lelong.lelong_id')
->join('cawangan', 'cawangan_lelong.caw_id', '=', 'cawangan.id')
->where('tarikh_lelong', '=', $currentdate)
->where('cawangan_lelong.status_online', 1)
->select(
'lelong.id as lelong_id',
'lelong.tarikh_lelong',
'cawangan.caw_name',
'cawangan_lelong.caw_id',
'lelong.masamula_lelong',
'lelong.masatamat_lelong',
)
->get()->toArray();
// dd($lelong);
if ($lelong) {
return response()->json([
'success' => true,
'lelong' => $lelong,
]);
} else {
return response()->json([
'success' => false,
]);
}
}
public function listCawLelongNext()
{
$currentdate = Carbon::now();
$currentdate = $currentdate->toDateString();
$lelongs = Lelong::join('cawangan_lelong', 'lelong.id', '=', 'cawangan_lelong.lelong_id')
->join('cawangan', 'cawangan_lelong.caw_id', '=', 'cawangan.id')
->where('tarikh_lelong', '>', $currentdate)
->select(
'lelong.id as lelong_id',
'lelong.tarikh_lelong',
'cawangan.caw_name',
'cawangan_lelong.caw_id',
'lelong.masamula_lelong',
'lelong.masatamat_lelong',
)
->orderBy('lelong.tarikh_lelong', 'ASC')
->get();
$lelongs = $lelongs->groupBy('tarikh_lelong');
$lelong = collect();
foreach ($lelongs as $index => $lel) {
$unique_caw = $lel->unique('caw_id');
foreach ($unique_caw as $lel_caw) {
$lelong->add($lel_caw);
}
}
foreach ($lelong as $index => $data) {
$date_convert = strtotime($data['tarikh_lelong']);
$lelong[$index]['tarikh_lelong'] = date('d-m-Y', $date_convert);
$lelong[$index]['caw_name'] = $this->shortCawanganName($data['caw_name']);
}
if ($lelong) {
return response()->json([
'success' => true,
'lelong' => $lelong,
]);
} else {
return response()->json([
'success' => false,
'message' => 'Empty Data',
]);
}
}
/**
* Strip leading brand prefix from branch display names.
* Supports both "AR-RAHN XTRA" and "ARRAHN XTRA" formats.
*/
private function shortCawanganName(?string $cawName): string
{
if ($cawName === null || $cawName === '') {
return '';
}
$shortName = preg_replace('/^AR-?RAHN\s+/i', '', $cawName);
return $shortName !== null && $shortName !== '' ? $shortName : $cawName;
}
public function bayarCdm(Request $request)
{
// dd($request->all());
$validator = Validator::make($request->all(), [
'lelong_id' => 'required|string',
'user_id' => 'required',
]);
if ($validator->fails()) {
$errors = [
'success' => 'error',
'message' => $validator->errors(),
];
return response($errors, 201);
}
$currentdate = Carbon::now();
$currentdate = $currentdate->toDateTimeString();
$user = Auth::user();
// $imageName = time().'.'.$request->resit->extension();
// $data = base64_encode($request->resit->get());
// $file_type = $request->resit->extension();
$resit = Resit::where('lelong_id', $request->lelong_id)
->where('user_id', $request->user_id)
->where('resit_type', 2)
->first();
$payment = new Payment;
$payment->user_id = $request->user_id;
$payment->lelong_id = $request->lelong_id;
$payment->kodcaw = $user->kodcaw;
$payment->status_payment_opt = 3;
$payment->status = 2;
$payment->remark = 'BAYARAN CDM';
$payment->resit_id = $resit->id;
$payment->total_payment = $request->total_payment;
$payment->diminta_pada = $currentdate;
$payment->diminta_oleh = $user->id;
$payment->save();
if ($payment) {
$images = $request->images;
foreach ($images as $img) {
$addfile = new FileResit;
$addfile->user_id = $request->user_id;
$addfile->payment_id = $payment->id;
$addfile->file_type = $img['file_type'];
$addfile->filename = $img['filename'];
$addfile->save();
}
}
$bid_id = $request->bid_id;
foreach ($bid_id as $bid) {
$eachbid = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id')
->join('users', 'lelongbidder.user_id', '=', 'users.id')
->where('lelongbidder.lelongbid_id', $bid['lelongbid_id'])
->select('lelongbidder.hargabida',
'lelongbid.hargaasas',
'lelongbid.norujukan',
'lelongbidder.lelongbid_id',
'lelongbidder.id as lelongbidder_id',
'lelongbid.lelong_id as lelong_id'
)
->first();
$updatelelbidbidder = LelongBidder::where('lelongbid_id', $bid['lelongbid_id'])
->where('user_id', $request->user_id)
->first();
$updatelelbidbidder->status_payment = 2;
$updatelelbidbidder->payment_id = $payment->id;
$updatelelbidbidder->save();
$eachbidupdate = LelongBid::where('id', $bid)->first();
$eachbidupdate->hargajual = $eachbid->hargabida;
$eachbidupdate->save();
}
if ($payment) {
return response()->json([
'success' => true,
'user' => $user,
'payment' => $payment,
'file_resit' => $images,
'updatelelbidbidder' => $updatelelbidbidder,
'eachbidupdate' => $eachbidupdate,
]);
} else {
return response()->json([
'success' => false,
'message' => 'Muat naik bukti pembayaran tidak berjaya!',
]);
}
// return response($response, 201);
}
public function updateResit(Request $request)
{
$validator = Validator::make($request->all(), [
'lelong_id' => 'required|string',
'user_id' => 'required',
'payment_id' => 'required',
]);
if ($validator->fails()) {
$errors = [
'success' => 'error',
'message' => $validator->errors(),
];
return response($errors, 201);
}
$paymentexist = Payment::join('fileresit', 'payment.id', '=', 'fileresit.payment_id')
->where('payment.lelong_id', $request->lelong_id)
->where('payment.user_id', $request->user_id)
->first();
if ($paymentexist) {
$getpayment = Payment::join('fileresit', 'payment.id', '=', 'fileresit.payment_id')
->where('payment.lelong_id', $request->lelong_id)
->where('payment.user_id', $request->user_id)
->select('payment.id as payment_id',
'payment.lelong_id',
'payment.user_id',
'fileresit.id as fileresit_id',
'fileresit.file_type',
'fileresit.filename'
)
->first();
$images = $request->images;
foreach ($images as $img) {
$deletepayment = FileResit::where('payment_id', $request->payment_id)
->where('id', $img['fileresit_id'])
->delete();
$addfile = new FileResit;
$addfile->user_id = $request->user_id;
$addfile->payment_id = $request->payment_id;
$addfile->file_type = $img['file_type'];
$addfile->filename = $img['filename'];
$addfile->save();
}
}
if ($addfile) {
return response()->json([
'success' => true,
'payment' => $paymentexist,
'file_resit' => $images,
]);
} else {
return response()->json([
'success' => false,
'message' => 'Kemaskini bukti pembayaran tidak berjaya!',
]);
}
}
public function getInvoiceId(Request $request)
{
$lelong = Lelong::find($request->lelong_id);
if (! $lelong) {
return response()->json([
'success' => false,
]);
}
$invoice = Invoice::where('user_id', $request->user_id)
->where('lelong_id', $request->lelong_id)
->first();
if (! $invoice) {
$invoice = $this->createMissingBidInvoice($request->user_id, $request->lelong_id);
}
if (! $invoice) {
return response()->json([
'success' => false,
]);
}
$date_convert = strtotime($lelong->tarikh_lelong);
$lelong->tarikh_lelong = date('d/m/Y', $date_convert);
return response()->json([
'success' => true,
'invoice' => $invoice,
'lelong' => $lelong,
]);
}
private function createMissingBidInvoice($userId, $lelongId)
{
$wins = LelongBidder::join('lelongbid', 'lelongbid.id', '=', 'lelongbidder.lelongbid_id')
->where('lelongbid.lelong_id', $lelongId)
->where('lelongbidder.user_id', $userId)
->where('lelongbidder.status_bidder', 1)
->get(['lelongbidder.hargabida']);
if ($wins->isEmpty()) {
return null;
}
return DB::transaction(function () use ($userId, $lelongId, $wins) {
$existing = Invoice::where('user_id', $userId)
->where('lelong_id', $lelongId)
->lockForUpdate()
->first();
if ($existing) {
return $existing;
}
$previous = Invoice::orderBy('id', 'desc')->lockForUpdate()->first();
$nosiri = $previous ? $previous->id + 1 : 1;
$now = Carbon::now();
$referenceNo = 'iPKB'.$now->day.$now->month.$now->format('y').sprintf('%08d', $nosiri);
$invoice = new Invoice;
$invoice->user_id = $userId;
$invoice->lelong_id = $lelongId;
$invoice->invoice_no = $referenceNo;
$invoice->total_invoice = $wins->sum('hargabida');
$invoice->invoice_type = 2;
$invoice->save();
return $invoice;
});
}
public function resultLelong()
{
$user = Auth::user();
$current_date = Carbon::now()->toDateString();
$lelong = Lelong::join('lelongbid', 'lelong.id', '=', 'lelongbid.lelong_id')
->join('lelongbidder', 'lelongbid.id', '=', 'lelongbidder.lelongbid_id')
->where('lelongbidder.user_id', $user->id)
->where('status_bidder', 1)
->select('lelong.id', 'lelong.tarikh_lelong')
->groupBy('lelong.id')
->orderBy('lelong.id', 'desc')
->get();
foreach ($lelong as $index => $tarikhLelong) {
$jumlah = 0;
$hasUnpaid = false;
$hasPending = false;
$lelongbid = LelongBid::join('lelongbidder', 'lelongbid.id', 'lelongbidder.lelongbid_id')
->where('lelongbid.lelong_id', $tarikhLelong->id)
->where('lelongbidder.user_id', $user->id)
->where('status_bidder', 1)
->select('lelongbidder.hargabida', 'lelongbidder.status_payment')
->get();
foreach ($lelongbid as $data) {
$jumlah = $jumlah + $data->hargabida;
if ($data->status_payment == null || $data->status_payment == 0) {
$hasUnpaid = true;
} elseif ($data->status_payment == 2) {
$hasPending = true;
}
}
// null = belum bayar, 2 = tunggu pengesahan CDM, 1 = selesai
if ($hasUnpaid) {
$status = null;
} elseif ($hasPending) {
$status = 2;
} else {
$status = 1;
}
$date_convert = strtotime($tarikhLelong->tarikh_lelong);
$lelong[$index]['tarikh_lelong'] = date('d-m-Y', $date_convert);
$lelong[$index]['jumlah'] = number_format($jumlah, 2, '.', ',');
$lelong[$index]['status'] = $status;
}
if ($lelong->isNotEmpty()) {
return response()->json([
'success' => true,
'lelong' => $lelong,
]);
} else {
$current_lelong = Lelong::where('tarikh_lelong', $current_date)->where('sts_lelong', 3)->select('id', 'tarikh_lelong')->first();
if ($current_lelong != null) {
$lelong_bidder_user = LelongBidder::query()
->join('lelongbid', 'lelongbidder.lelongbid_id', 'lelongbid.id')
->where('user_id', $user->id)
->where('lelongbid.lelong_id', $current_lelong->id)
->select(
'lelongbidder.id AS lelongbidder_id',
'lelongbid.id AS lelongbid_id',
'nama_bidder',
'user_id',
'status_bidder'
)
->get();
if ($lelong_bidder_user->isNotEmpty()) {
$status_menang = 0; // kalah semua bidaan
foreach ($lelong_bidder_user as $lelong_bidder) {
if ($lelong_bidder->status_bidder == 1) {
$status_menang = 1; // menang sekurang-kurangnya satu bidaan
}
}
return response()->json([
'success' => false,
'status' => $status_menang,
'message' => 'Kalah semua bidaan.',
]);
}
}
return response()->json([
'success' => false, // tiada bidaan dibuat @ tiada lelong pada hari semasa
'message' => 'Tiada bidaan dibuat @ tiada lelong pada hari semasa.',
]);
}
}
public function resultStatus($userId, $lelongId)
{
// dd('hey');
$lelong = Lelong::join('lelongbid', 'lelong.id', '=', 'lelongbid.lelong_id')
->join('lelongbidder', 'lelongbid.id', '=', 'lelongbidder.lelongbid_id')
->where('lelongbidder.user_id', $userId)
->where('lelong.id', $lelongId)
->where('status_bidder', 1)
->get();
foreach ($lelong as $index) {
$status = true;
if ($index->status_payment == null || $index->status_payment == 0) {
$status = false;
}
}
if ($lelong) {
return response()->json([
'success' => true,
'statusMenang' => true,
'statusBayaran' => $status,
]);
} else {
return response()->json([
'success' => false,
'statusMenang' => false,
]);
}
}
public function listPhotoResit(Request $request)
{
$file_resit = FileResit::where('user_id', '=', $request->user_id)->where('lelong_id', '=', $request->lelong_id)->get();
if ($file_resit->isNotEmpty()) {
foreach ($file_resit as $index => $resit) {
$date_convert = strtotime($resit->created_at);
$updatedDateTime = date('d-m-Y H:i:s', $date_convert);
$file_resit[$index]['masa_upload'] = $updatedDateTime;
}
return response()->json([
'success' => true,
'file_resit' => $file_resit,
]);
} else {
return response()->json([
'success' => false,
]);
}
}
public function addPhotoResit(Request $request)
{
$file_type = $request->gambarResit->getClientOriginalExtension();
if (strtolower($file_type) != 'jpg' && strtolower($file_type) != 'jpeg' && strtolower($file_type) != 'png') {
return response()->json([
'success' => false,
'message1' => 'Jenis gambar tidak sah',
'message2' => 'Sila muat naik gambar dalam bentuk PNG atau JPG sahaja.',
]);
}
$addfile = new FileResit;
$addfile->user_id = $request->user_id;
$addfile->lelong_id = $request->lelong_id;
$addfile->original_file_type = $file_type;
$addfile->kodcaw = $request->kodcaw;
$addfile->payment_id = 0;
$addfile->original_size = filesize($request->gambarResit);
$addfile->save();
$directory = "/{$request->user_id}/{$request->lelong_id}/";
$imageExtension = $file_type;
$resitImageFileName = $addfile->id;
Storage::disk('resit')->putFileAs($directory, $request->gambarResit, "${resitImageFileName}.${imageExtension}");
$stored_path = Storage::disk('resit')->path("{$directory}{$resitImageFileName}.${imageExtension}");
$resitPhotoService = new ResitPhotoService;
try {
$convertToWebP = $resitPhotoService->optimizeImageToWebP($stored_path, $directory, $resitImageFileName);
} catch (\Exception $e) {
return $e;
}
$compress_size = Storage::disk('resit')->getSize("{$directory}${resitImageFileName}.webp");
$addfile->update([
'file_type' => 'webp',
'compress_size' => $compress_size,
]);
Storage::disk('resit')->delete("{$directory}${resitImageFileName}.${imageExtension}");
return response()->json(['success' => true]);
}
public function showPhotoResit(Request $request)
{
$fileResit = FileResit::find($request->fileresit_id);
$resitPhotoService = new ResitPhotoService;
$resit_photo = $resitPhotoService->get($fileResit->user_id, $fileResit);
return base64_encode($resit_photo);
}
public function deletePhotoResit(Request $request)
{
$deleteFile = FileResit::find($request->fileresit_id);
$directory = "/{$deleteFile->user_id}/{$deleteFile->lelong_id}/";
$imageExtension = $deleteFile->file_type;
$deleteFile_id = $deleteFile->id;
$resitImageFileName = "${deleteFile_id}.${imageExtension}";
Storage::disk('resit')->delete("{$directory}${resitImageFileName}");
$deleteFile->delete();
return response()->json(['success' => true]);
}
public function portalApi(Request $request)
{
$lelong = LelongBid::select('fasa', 't_lelong', 'hargajual', 't_jual')
->where([['norujukan', $request->norujukan]])
->first();
if ($lelong) {
$givenDate = Carbon::createFromFormat('Y-m-d', $lelong->t_lelong);
$lastbayar = $givenDate->subDays(3);
$lelong['lastbayar'] = $lastbayar->toDateString();
}
return response()->json(['lelong' => $lelong]);
}
public function initializeCdmPayment(Request $request)
{
$current = Carbon::now();
$current = new Carbon;
$day = $current->day;
$month = $current->month;
$year = $current->format('y');
$original_file_type = strtolower($request->gambarResit->getClientOriginalExtension());
if ($original_file_type != 'jpg' && $original_file_type != 'jpeg' && $original_file_type != 'png') {
return response()->json([
'success' => false,
'message1' => 'Jenis gambar tidak sah',
'message2' => 'Sila muat naik gambar dalam bentuk PNG atau JPG sahaja.',
]);
}
$this->addPhotoResit($request);
$previous_siri = Resit::orderBy('id', 'desc')->first();
if ($previous_siri) {
$nosiri = $previous_siri->id + 1;
} else {
$nosiri = 1;
}
$reference_no = 'LPKB'.$day.$month.$year.sprintf('%08d', $nosiri);
$cdm_reference = 'CDM'.sprintf('%06d', $nosiri);
$add_resit = new Resit;
$add_resit->user_id = $request->user_id;
$add_resit->lelong_id = $request->lelong_id;
$add_resit->reference_no = $reference_no;
$add_resit->invoice_id = $request->invoice_id;
$add_resit->invoice_no = $request->invoice_no;
$add_resit->billplz_id = $cdm_reference;
$add_resit->total_payment = $request->total;
$add_resit->resit_type = 2;
$add_resit->save();
$selectedSag = json_decode($request->sag, true);
foreach ($selectedSag as $index) {
$add_payment = new Payment;
$add_payment->user_id = $request->user_id;
$add_payment->lelong_id = $request->lelong_id;
$add_payment->kodcaw = $index['kodcaw'];
$add_payment->lelongbid_id = $index['lelongbid_id'];
$add_payment->norujukan = $index['norujukan'];
$add_payment->total_payment = $index['total_payment'];
$add_payment->status_payment_opt = 3; // bayar secara CDM 3
$add_payment->status = 2; // paybidwin
$add_payment->remark = 'CDM';
$add_payment->resit_id = $add_resit->id;
$add_payment->save();
$updateTagBid = LelongBid::where('norujukan', $index['norujukan'])->first();
$updateTagBid->status_payment = 2;
$updateTagBid->save();
$updateTagBidder = LelongBidder::where('lelongbid_id', $updateTagBid->id)
->where('user_id', $request->user_id)->first();
$updateTagBidder->status_payment = 2;
$updateTagBidder->payment_id = $add_payment->id;
$updateTagBidder->save();
}
return response()->json(['success' => true]);
}
public function listLelong()
{
$lelong_all = Lelong::select('id', 'tarikh_lelong', 'fasa')->get();
foreach ($lelong_all as $index => $lelong) {
$date_convert = strtotime($lelong->tarikh_lelong);
$lelong_all[$index]['tarikh_lelong'] = date('d-m-Y', $date_convert);
}
return response()->json($lelong_all);
}
public function listLelongByCawangan(Request $request)
{
$cawangan = Cawangan::with('lelong')->find($request->caw_id);
$lelong_all = $cawangan->lelong;
foreach ($lelong_all as $index => $lelong) {
$date_convert = strtotime($lelong->tarikh_lelong);
$lelong_all[$index]['tarikh_lelong'] = date('d-m-Y', $date_convert);
$lelong_all[$index]['new_id'] = str_pad($lelong->id, 3, '0', STR_PAD_LEFT);
}
return response()->json($lelong_all);
}
public function listCawangan(Request $request)
{
$cawangan_all = CawanganLelong::join('cawangan', 'cawangan_lelong.caw_id', '=', 'cawangan.id')
->where('lelong_id', $request->lelong_id)
->select('cawangan_lelong.caw_id', 'cawangan.caw_name')->get();
return response()->json($cawangan_all);
}
public function listLelongBid(Request $request)
{
$lelong_bid_all = LelongBid::with('fileMarhunMain')
->where('caw_id', $request->caw_id)
->where('lelong_id', $request->lelong_id)
->select(['id', 'norujukan', 'marhun', 'nilaimarhun', 'status_semak', 'berat', 'hargaasas'])
->get();
$belum_semak = $lelong_bid_all->where('status_semak', 0)->count();
return response()->json([
'jumlah_surat' => $lelong_bid_all->count(),
'belum_semak' => $belum_semak,
'lelong_bid' => $lelong_bid_all,
]);
}
public function showPhotoMarhun(Request $request)
{
$fileMarhun = FileMarhun::find($request->filemarhun_id, ['file_type']);
$directory = "/{$request->norujukan}/overall_photo/";
$imageExtension = $fileMarhun->file_type;
$marhunImageFileName = "overall.{$imageExtension}";
if (Storage::disk('marhun')->exists("{$directory}${marhunImageFileName}")) {
$marhun_photo = Storage::disk('marhun')->get("{$directory}${marhunImageFileName}");
return base64_encode($marhun_photo);
} else {
return 0;
}
}
public function checkAvailabilityFpxSession(Request $request)
{
$user = Auth::user();
$current_date_time = Carbon::now()->toDateTimeString();
$payment = Payment::query()
->where('user_id', $user->id)
->where('lelong_id', $request->lelong_id)
->where('kodcaw', $request->kodcaw)
->orderBy('id', 'DESC')
->select('resit_id')
->first();
if ($payment) {
$resit = Resit::query()
->where('id', $payment->resit_id)
->select('id', 'status', 'created_at')
->first();
$resit_date_time = $resit->created_at->toDateTimeString();
$resit_time = strtotime($resit_date_time);
$future_date = $resit_time + (60 * 2);
$end_session_date_time_formated = date('Y-m-d H:i:s', $future_date);
if ($resit->status == null && $end_session_date_time_formated > $current_date_time) {
return response()->json([
'status' => false,
'message' => 'Previous session is active! Please wait 2 minutes before start again.',
]);
} else {
return response()->json([
'status' => true,
'message' => 'None session active',
]);
}
} else {
return response()->json([
'status' => true,
'message' => 'None session active',
]);
}
}
}