e29a5891c8
Reviewed-on: #5 Co-authored-by: ISMAIL MASSERAN <ismail@koppkb.com> Co-committed-by: ISMAIL MASSERAN <ismail@koppkb.com>
535 lines
21 KiB
PHP
535 lines
21 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Cawangan;
|
|
use App\Models\CawanganLelong;
|
|
use App\Models\FileResit;
|
|
use App\Models\Invoice;
|
|
use App\Models\Lelong;
|
|
use App\Models\LelongBid;
|
|
use App\Models\LelongBidder;
|
|
use App\Models\PayDenoKaunter;
|
|
use App\Models\Payment;
|
|
use App\Models\Resit;
|
|
use App\Models\User;
|
|
use Carbon\Carbon;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
class PaymentController extends Controller
|
|
{
|
|
public function SenaraiLelongBayar(Request $request)
|
|
{
|
|
|
|
$arrayinfo = [];
|
|
$arraysms = [];
|
|
$arraysls = [];
|
|
$tarikh_semasa = date('Y-m-d', strtotime(now()));
|
|
|
|
$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();
|
|
|
|
if ($info['tarikh_lelong'] == $tarikh_semasa) {
|
|
array_push($arraysms, ['info' => $info, 'detailsinfo' => $detailsinfo]);
|
|
} else {
|
|
array_push($arraysls, ['info' => $info, 'detailsinfo' => $detailsinfo]);
|
|
}
|
|
// array_push($arrayinfo,['info'=>$info, 'detailsinfo'=>$detailsinfo]);
|
|
// dd($detailsinfo);
|
|
}
|
|
$datacaw = Cawangan::where('caw_code', '=', $user->kodcaw)
|
|
->get();
|
|
|
|
return view('pembayaran.senarailelongbayaran', compact('arraysms', 'arraysls', 'datacaw', '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'] = count($SAGWin);
|
|
$listwinner[$index1]['totalBid'] = $SAGWin->sum('hargabida');
|
|
$listwinner[$index1]['totalPay'] = $total_payment;
|
|
$listwinner[$index1]['sts_payment'] = $sts_payment[0]['status_payment'];
|
|
$listwinner[$index1]['jenisbayaran'] = $payment;
|
|
|
|
}
|
|
$sum = 0;
|
|
$kaedah = Payment::where('kodcaw', $user->kodcaw)
|
|
->where('status', '=', 2)
|
|
->where('lelong_id', $lelong_id)
|
|
->select('payment.status_payment_opt', 'payment.total_payment')
|
|
// ->groupBy('payment.status_payment_opt')
|
|
->get();
|
|
$kaedah_cdm = $kaedah->where('status_payment_opt', 3)->sum('total_payment');
|
|
$kaedah_fpx = $kaedah->where('status_payment_opt', 2)->sum('total_payment');
|
|
$kaedah_tunai = $kaedah->where('status_payment_opt', 1)->sum('total_payment');
|
|
|
|
$bilcdm = $kaedah->where('status_payment_opt', 3)->count('norujukan');
|
|
$bilfpx = $kaedah->where('status_payment_opt', 2)->count('norujukan');
|
|
$biltunai = $kaedah->where('status_payment_opt', 1)->count('norujukan');
|
|
|
|
$datacaw = Cawangan::where('caw_code', '=', $user->kodcaw)
|
|
->get();
|
|
|
|
return view('pembayaran.kaunterpembayaran', compact('bilcdm', 'bilfpx', 'biltunai', 'datacaw', 'listwinner', 'lelong_id', 'kaedah_cdm', 'kaedah_fpx', 'kaedah_tunai'));
|
|
|
|
}
|
|
|
|
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();
|
|
}
|
|
$statuspayment = 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',
|
|
'lelongbid.opencash'
|
|
)
|
|
->first();
|
|
$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']);
|
|
}
|
|
$datacaw = Cawangan::where('caw_code', '=', $user->kodcaw)
|
|
->get();
|
|
|
|
return view('pembayaran.SAGBidItem', compact('statuspayment', 'datacaw', '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;
|
|
// dd($request->lelong_id);
|
|
|
|
// $bidid = implode(",", $request->eachbid);
|
|
// $bid_id = explode(",", $bidid);
|
|
|
|
// $norujukanid = implode(",", $request->norujukan);
|
|
// $norujukan_id = explode(",", $norujukanid);
|
|
|
|
// dd($eachbid);
|
|
|
|
$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,
|
|
]);
|
|
|
|
$sagmenang = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id')
|
|
->join('users', 'lelongbidder.user_id', '=', 'users.id')
|
|
->where('lelongbid.status_jual', 1)
|
|
->where('lelongbidder.status_bidder', 1)
|
|
->where('lelongbidder.user_id', $request->user_id)
|
|
->where('lelongbid.lelong_id', $request->lelong_id)
|
|
->where('lelongbid.kodcaw', $user->kodcaw)
|
|
->select('lelongbidder.hargabida',
|
|
'lelongbidder.user_id',
|
|
'lelongbid.hargaasas',
|
|
'lelongbid.norujukan',
|
|
'lelongbidder.lelongbid_id',
|
|
'lelongbidder.status_payment'
|
|
)
|
|
->get();
|
|
|
|
// dd($sagmenang);
|
|
|
|
foreach ($sagmenang as $index1 => $bid) {
|
|
// dd($bid->lelongbid_id);
|
|
$eachbid = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id')
|
|
->join('users', 'lelongbidder.user_id', '=', 'users.id')
|
|
->where('lelongbidder.lelongbid_id', $bid->lelongbid_id)
|
|
->where('lelongbid.status_jual', 1)
|
|
->where('lelongbidder.status_bidder', 1)
|
|
->where('lelongbidder.user_id', $request->user_id)
|
|
->where('lelongbid.kodcaw', $user->kodcaw)
|
|
->select('lelongbidder.hargabida',
|
|
'lelongbid.hargaasas',
|
|
'lelongbid.kodcaw',
|
|
'lelongbid.norujukan',
|
|
'lelongbidder.lelongbid_id',
|
|
'lelongbidder.id as lelongbidder_id',
|
|
'lelongbid.lelong_id as lelong_id'
|
|
)
|
|
->first();
|
|
// dd($eachbid);
|
|
|
|
$total_hargabida = $total_hargabida + $eachbid->hargabida;
|
|
|
|
$payment = Payment::create([
|
|
'user_id' => $request->user_id,
|
|
'lelong_id' => $request->lelong_id,
|
|
'kodcaw' => $user->kodcaw,
|
|
'lelongbid_id' => $bid->lelongbid_id,
|
|
// 'norujukan' => $norujukan_id[$index1],
|
|
'norujukan' => $bid->norujukan,
|
|
'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->lelongbid_id)->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');
|
|
return redirect()->route('pembayaran.kaunterpembayaran', $request->lelong_id)
|
|
->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');
|
|
|
|
}
|
|
|
|
}
|
|
}
|