Files
lelong/app/Http/Controllers/PaymentController.php
T
2022-11-14 19:54:16 +08:00

487 lines
18 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Lelong;
use App\Models\CawanganLelong;
use App\Models\Cawangan;
use App\Models\Resit;
use App\Models\LelongBid;
use App\Models\LelongBidder;
use App\Models\LelongBidMarhun;
use App\Models\Payment;
use App\Models\User;
use App\Models\File;
use App\Models\FileResit;
use Carbon\Carbon;
use Illuminate\Support\Facades\Auth;
use App\Models\Invoice;
use App\Models\PayDenoKaunter;
class PaymentController extends Controller
{
public function SenaraiLelongBayar(Request $request){
$arrayinfo = [];
$user = Auth::user();
$lelong = Lelong::join('cawangan_lelong','lelong.id','=','cawangan_lelong.lelong_id')
->join('cawangan','cawangan_lelong.caw_id', '=', 'cawangan.id')
->select('lelong.fasa','lelong_id','tarikh_lelong','lelong.masatamat_lelong','harga_emas_asas','jbg','cajlelong','sts_lelong')
->where('lelong.sts_lelong', 3)
->where('cawangan.caw_code', $user->kodcaw)
->groupBy('lelong_id')
->get()
->toArray();
foreach($lelong as $info)
{
$detailsinfo = CawanganLelong::join('cawangan','cawangan_lelong.caw_id','=','cawangan.id')
->where('lelong_id',$info['lelong_id'])
->where('cawangan.caw_code',$user->kodcaw)
->get()
->toArray();
array_push($arrayinfo,['info'=>$info, 'detailsinfo'=>$detailsinfo]);
// dd($detailsinfo);
}
return view('pembayaran.senarailelongbayaran',compact('lelong', 'arrayinfo'));
}
public function SenaraiPemenang($lelong_id){
$user = Auth::user();
$listwinner = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id')
->where('lelongbidder.status_bidder', 1)
->where('lelongbid.kodcaw',$user->kodcaw)
->where('lelongbid.lelong_id', $lelong_id)
->select('lelongbidder.user_id')
->groupBy('lelongbidder.user_id')
->get()->toArray();
foreach($listwinner as $index1=>$winner){
$userdetails = User::where('id', $winner['user_id'])->first();
$SAGWin = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id')
->where('user_id', $winner['user_id'])
->where('lelongbid.kodcaw', $user->kodcaw)
->where('lelongbidder.status_bidder', 1)
->where('lelongbid.lelong_id', $lelong_id)
->get();
// dd($userdetails);
$sts_payment = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id')
->where('user_id', $winner['user_id'])
->where('lelongbidder.status_bidder', 1)
->where('lelongbid.kodcaw', $user->kodcaw)
->where('lelongbid.lelong_id', $lelong_id)
->select('lelongbidder.status_payment')
->get();
// dd($sts_payment[0]['status_payment']);
$payment_id = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id')
->where('user_id', $winner['user_id'])
->where('lelongbid.kodcaw', $user->kodcaw)
->where('lelongbidder.status_bidder', 1)
->where('lelongbid.lelong_id', $lelong_id)
->select('payment_id')->groupBy('payment_id')->get();
$total_payment = 0;
foreach($payment_id as $id){
$payment = Payment::where('id', $id->payment_id)
->first();
// dd($payment);
if($payment){
$total_payment = $total_payment + $payment->total_payment;
}
}
// dd($total_payment);
$listwinner[$index1]['details'] = $userdetails;
$listwinner[$index1]['total_surat'] = sizeof($SAGWin);
$listwinner[$index1]['totalBid'] = $SAGWin->sum('hargabida');
$listwinner[$index1]['totalPay'] = $total_payment;
$listwinner[$index1]['sts_payment'] = $sts_payment[0]['status_payment'];
}
return view('pembayaran.kaunterpembayaran',compact('listwinner','lelong_id'));
}
public function SAGBidItem($user_id, $lelong_id){
$user = Auth::user();
$SAGBidItem = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id')
->join('users', 'lelongbidder.user_id', '=', 'users.id')
->where('lelongbidder.status_bidder', 1)
->where('users.id', $user_id)
->where('lelongbid.kodcaw', $user->kodcaw)
->where('lelongbid.lelong_id', $lelong_id)
->select(
'users.id',
'users.name',
'users.nokp',
'users.alamat',
'users.notelbimbit'
)
->first();
$eachbid = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id')
->join('users', 'lelongbidder.user_id', '=', 'users.id')
->where('lelongbidder.status_bidder', 1)
->where('users.id', $user_id)
->where('lelongbid.lelong_id', $lelong_id)
->where('lelongbid.kodcaw', $user->kodcaw)
->select('lelongbidder.hargabida',
'lelongbidder.user_id',
'lelongbid.hargaasas',
'lelongbid.norujukan',
'lelongbidder.lelongbid_id',
'lelongbidder.status_payment'
)
->get();
foreach($eachbid as $bid)
{
// dd($bid);
$paymentstatus = Payment::where('lelong_id', $lelong_id)
->where('user_id', $bid['user_id'])
->where('status', 2)
->where('status_payment_opt', 2)
->orWhere('status_payment_opt', 3)
->get();
if($paymentstatus)
{
$total_payment = 0;
foreach($paymentstatus as $index1=>$payemnt)
{
$payment = Payment::where('id', $payemnt->payment_id)
->first();
if($payment){
$total_payment = $total_payment + $payment->total_payment;
}
$listwinner[$index1]['totalPay'] = $total_payment;
}
}
// dd();
}
// foreach($gettunai as $index1=>$cash)
// {
// // dd($cash);
// $remarktunai = Payment::where('id', $cash['payment_id'])
// ->where('remark', '=', 'TUNAI')
// ->select('remark')
// ->first();
// // dd($remarktunai);
// $eachbid[$index1]['cash_only'] = $remarktunai;
// }
$getresit = FileResit::join('payment', 'fileresit.payment_id', '=', 'payment.id')
->where('payment.lelong_id', $lelong_id)
->where('payment.user_id', $user_id)
->get()->toArray();
// dd($getresit);
$getinvoice = Invoice::where('lelong_id',$lelong_id)
->where('user_id','=',$user_id)
->first();
$totalbidaan = $eachbid->SUM('hargabida');
$array_resit = [];
foreach($getresit as $index1=>$resit)
{
$getresit[$index1]['resit64'] = 'data:image/' . $resit['file_type'] . ';base64' . base64_encode($resit['filename']);
}
return view('pembayaran.SAGBidItem',compact('SAGBidItem', 'eachbid', 'lelong_id','user_id', 'getresit','getinvoice','totalbidaan'));
}
public function paymentdenokaunter(Request $request){
// dd($request->all());
$currentdate = Carbon::now();
$currentdate = $currentdate->toDateTimeString();
$current = Carbon::now();
$current = new Carbon();
$day = $current->day;
$month = $current->month;
$year = $current->format('y');
$user = Auth::user();
$total_hargabida = 0;
$bidid = implode(",", $request->eachbid);
$bid_id = explode(",", $bidid);
$norujukanid = implode(",", $request->norujukan);
$norujukan_id = explode(",", $norujukanid);
$getinvoice = Invoice::where('lelong_id',$request->lelong_id)
->where('user_id','=',$request->user_id)
->first();
$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);
$resit = new Resit;
$resit->user_id = $request->user_id;
$resit->lelong_id = $request->lelong_id;
$resit->reference_no = $reference_no;
$resit->invoice_id = $getinvoice->id;
$resit->invoice_no = $getinvoice->invoice_no;
$resit->billplz_id = '';
$resit->total_payment = $request->amaunkiraan;
$resit->resit_type = 2; // 1 = fee , 2 = bid
$resit->save();
//adddenokaunter
$paymentdeno = PayDenoKaunter::create([
'user_id' => $request->user_id,
'lelong_id' => $request->lelong_id,
'kodcaw' => $user->kodcaw,
// 'norujukan' => $norujukan_id[$index1],
'status_payment_opt' => 1,
'status' => 2,
'remark' => 'TUNAI',
'resit_id' => $resit->id,
'total_payment' => $request->amaunkiraan,
'1sen' => $request->ambilansen1,
'5sen' => $request->ambilansen5,
'10sen' => $request->ambilansen10,
'20sen' => $request->ambilansen20,
'50sen' => $request->ambilansen50,
'rm1' => $request->ambilanring1,
'rm5' => $request->ambilanring5,
'rm10' => $request->ambilanring10,
'rm20' => $request->ambilanring20,
'rm50' => $request->ambilanring50,
'rm100' => $request->ambilanring100,
'disahkan_oleh' => $user->id,
'disahkan_pada' => $currentdate
]);
foreach($bid_id as $index1=>$bid)
{
// dd($norujukan_id[$index1]);
$eachbid = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id')
->join('users', 'lelongbidder.user_id', '=', 'users.id')
->where('lelongbidder.lelongbid_id', $bid)
->where('lelongbidder.user_id', $request->user_id)
->select('lelongbidder.hargabida',
'lelongbid.hargaasas',
'lelongbid.norujukan',
'lelongbidder.lelongbid_id',
'lelongbidder.id as lelongbidder_id',
'lelongbid.lelong_id as lelong_id'
)
->first();
$total_hargabida = $total_hargabida + $eachbid->hargabida;
$payment = Payment::create([
'user_id' => $request->user_id,
'lelong_id' => $request->lelong_id,
'kodcaw' => $user->kodcaw,
'norujukan' => $norujukan_id[$index1],
'status_payment_opt' => 1,
'status' => 2,
'remark' => 'TUNAI',
'resit_id' => $resit->id,
'total_payment' => $eachbid->hargabida,
'disahkan_oleh' => $user->id,
'disahkan_pada' => $currentdate
]);
$updatelelbidbidder = LelongBidder::where('lelongbid_id', $eachbid->lelongbid_id)
->where('user_id',$request->user_id)
->first();
$updatelelbidbidder->status_payment = 1;
$updatelelbidbidder->payment_id = $payment->id;
$updatelelbidbidder->save();
$eachbidupdate = LelongBid::where('id',$bid)->first();
$eachbidupdate->status_jual = 1;
$eachbidupdate->status_payment = '1';
$eachbidupdate->t_jual = $currentdate;
$eachbidupdate->hargajual = $eachbid->hargabida;
$eachbidupdate->save();
}
$senaraisagallpayment = 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)
->get();
if(floatval($request->amaunkiraan) == $total_hargabida)
{
$resit->total_payment = $request->amaunkiraan;
if($resit->total_payment >= $senaraisagallpayment->sum('hargabida'))
{
$resit->status = 'PAID'; // $resit->status = 'PAID'; when hargabida >= total_payment di resit
$resit->paid_at = $currentdate;
}
$resit->save();
}
return redirect()->route('pembayaran.SenaraiLelongBayar')->with('success','Pembayaran Berjaya');
}
public function pengesahanPembayaran(Request $request){
// dd($request->all());
$pengesahanPembayaran = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id')
->join('users', 'lelongbidder.user_id', '=', 'users.id')
->where('lelongbidder.status_bidder', 1)
->get();
return view('pembayaran.pengesahanPembayaran',compact('pengesahanPembayaran'));
}
public function banktransfer(Request $request)
{
// dd($request->all());
//eachbid = lelongbid_id
// $bid_id = implode(",", $request->eachbid);
// dd($bid_id);
$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();
$data = base64_encode($request->resit->get());
$file_type = $request->resit->extension();
$updatepayment = FileResit::where('payment_id', $getpayment['payment_id'])
->where('id', $getpayment['fileresit_id'])
->first();
$updatepayment->user_id = $request->user_id;
$updatepayment->payment_id = $updatepayment->payment_id;
$updatepayment->file_type = $file_type;
$updatepayment->filename = $data;
$updatepayment->update();
return redirect()->route('pembayaran.kaunterpembayaran', $request->lelong_id)
->with('success','Ubah Resit Berjaya, Tunggu Pengesahan Akaun');
}
else
{
// $bid_id = $request->eachbid;
$bidid = implode(",", $request->eachbid);
$bid_id = explode(",", $bidid);
$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();
$addfile = new FileResit;
$addfile->user_id = $request->user_id;
$addfile->payment_id = $payment->id;
$addfile->file_type = $file_type;
$addfile->filename = $data;
$addfile->save();
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)
->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', $eachbid->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();
}
return redirect()->route('pembayaran.kaunterpembayaran', $request->lelong_id)
->with('success','Menunggu Pengesahan Akaun');
}
}
}