Tambah Function declare xlaku joybidder-temp

This commit is contained in:
BTMS2
2024-07-01 13:20:37 +08:00
parent 90074c65cc
commit be39254e52
14 changed files with 443 additions and 74 deletions
+60 -21
View File
@@ -20,6 +20,11 @@ use App\Models\FileMarhun;
use App\Services\MarhunPhotoService;
use App\Models\Pengesahan;
use App\Models\LelongBidMarhun;
use App\Models\LogUser;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use App\Jobs\WhatsappPengesahanPembida;
use App\Jobs\WhatsappTidakSahBayaran;
use PDF;
class AccountController extends Controller
@@ -277,6 +282,7 @@ class AccountController extends Controller
public function sahbayaronline(Request $request)
{
// dd($request->all());
$currentdate = Carbon::now();
$currentdate = $currentdate->toDateTimeString();
@@ -285,33 +291,66 @@ class AccountController extends Controller
$total_payment = 0;
$senaraisag = $request->senarai_sag;
$user_notelbimbit = $request->notel_pembida;
$user_namapembida = $request->nama_pembida;
foreach(json_decode($senaraisag) as $sag)
{
$payment = Payment::where('id', $sag->payment_id)->first();
$payment->disahkan_oleh = $user->id;
$payment->disahkan_pada = $currentdate;
$payment->save();
$total_payment = $total_payment + $payment->total_payment;
if($request->jenis_button == 'tidaksah'){
//insert loguser
$loguser = new LogUser;
$loguser->user_id = $user->id;
$loguser->date = $currentdate;
$loguser->username = $user->username;
$loguser->nama_user = $user->name;
// $loguser->norujukan = $data['norujukan'];
$loguser->nota = $request->kodcaw.': '.$request->nama_pembida.' ('.$request->nokp_pembida.'): Bukti Bayaran Tidak Sah';
$loguser->save();
$eachbid = LelongBid::where('id',$sag->lelongbid_id)->first();
$eachbid->status_payment = 1;
$eachbid->status_jual = 1;
$eachbid->status_semak = 1;
$eachbid->t_jual = $currentdate;
$eachbid->save();
WhatsappTidakSahBayaran::dispatch($user_namapembida);
$bidder = LelongBidder::where('lelongbid_id', $sag->lelongbid_id)
->where('payment_id', $sag->payment_id)
->where('user_id', $sag->user_id)
->first();
$bidder->status_payment = 1;
$bidder->update();
return redirect()->route('home')->with('failed','Pembayaran Tidak Sah');
}elseif($request->jenis_button == 'sah'){
foreach(json_decode($senaraisag) as $sag)
{
$payment = Payment::where('id', $sag->payment_id)->first();
$payment->disahkan_oleh = $user->id;
$payment->disahkan_pada = $currentdate;
$payment->save();
$total_payment = $total_payment + $payment->total_payment;
$eachbid = LelongBid::where('id',$sag->lelongbid_id)->first();
$eachbid->status_payment = 1;
$eachbid->status_jual = 1;
$eachbid->status_semak = 1;
$eachbid->t_jual = $currentdate;
$eachbid->save();
$bidder = LelongBidder::where('lelongbid_id', $sag->lelongbid_id)
->where('payment_id', $sag->payment_id)
->where('user_id', $sag->user_id)
->first();
$bidder->status_payment = 1;
$bidder->update();
}
WhatsappPengesahanPembida::dispatch($user_notelbimbit,$user_namapembida);
//insert loguser
$loguser = new LogUser;
$loguser->user_id = $user->id;
$loguser->date = $currentdate;
$loguser->username = $user->username;
$loguser->nama_user = $user->name;
// $loguser->norujukan = $data['norujukan'];
$loguser->nota = $request->kodcaw.': '.$request->nama_pembida.' ('.$request->nokp_pembida.'): Bukti Bayaran Telah Sah';
$loguser->save();
return redirect()->route('home')->with('success','Pembayaran Berjaya');
}
return redirect()->route('home')->with('success','Pembayaran Berjaya');
}
public function sahsagonline($lelong_id, $user_id, $caw_code)
+32 -4
View File
@@ -1936,7 +1936,7 @@ class LelongController extends Controller
$currentdate = Carbon::now();
$currenttime = $currentdate->toTimeString();
$endtime = $currentdate->addHours(2);
// $endtime = $currentdate->addMinutes(1);
// $endtime = $currentdate->addMinutes(3);
$lelong = Lelong::where('id','=',$id)->first();
@@ -1954,8 +1954,8 @@ class LelongController extends Controller
$cawlel->save();
}
//run job tamat lelong
AutoTamatLelong::dispatch()->delay(Carbon::now()->addHours(2));
// AutoTamatLelong::dispatch()->delay(Carbon::now()->addMinutes(1));
AutoTamatLelong::dispatch($id)->delay(Carbon::now()->addHours(2));
// AutoTamatLelong::dispatch($id)->delay(Carbon::now()->addMinutes(3));
//insert loguser
@@ -3598,11 +3598,39 @@ class LelongController extends Controller
$datalelbid = LelongBid::where('caw_id','=',$caw->caw_id)->where('lelong_id',$id)->where('status_jual','=', 0)->get();
$suratcaw = $datalelbid->all();
foreach(array_chunk($suratcaw,100) as $data_chunk)
{
// dd($datalelbid);
foreach($data_chunk as $data1)
{
$biddersag = LelongBidder::where('lelongbid_id', $data1->id)
->where('status_bidder','=', 0)->first();
if($biddersag){
$savedatabidder = $biddersag->replicate();
$savedatabidder->setTable('lelongbidder_temp');
$savedatabidder->save();
//insert loguser
$loguser = new LogUser;
$loguser->user_id = $biddersag->user_id;
$loguser->date = $currentdate;
$loguser->nama_user = $biddersag->nama_bidder;
$loguser->norujukan = $data1->norujukan;
$loguser->nota = 'Pernah Bid Sebelum Ini Tapi Kalah';
$loguser->save();
//hapus lelongbidder yg pernah bid
$lelongbidder = LelongBidder::where('lelongbid_id', $data1->id)
->where('status_bidder', 0)
->delete();
}
}
foreach($data_chunk as $data)
{
{
$savedata = $data->replicate();
$savedata->setTable('lelongbid_xlaku');
$savedata->save();
@@ -519,6 +519,48 @@ class PembidaController extends Controller
$bida->save();
// dd($request->user_id);
//temp lelongbidder
$datalelbid = LelongBidder::where('lelongbid_id', $bida->id)
->where('user_id', $infos->user_id)->get();
$suratcaw = $datalelbid->all();
foreach(array_chunk($suratcaw,100) as $data_chunk)
{
// dd($datalelbid);
foreach($data_chunk as $data)
{
$savedata = $data->replicate();
$savedata->setTable('lelongbidder_temp');
$savedata->save();
//audit trail
$loguser = new LogUser;
$loguser->user_id = $user->id;
$loguser->date = $currentdate;
$loguser->username = $user->username;
$loguser->nama_user = $user->name;
$loguser->norujukan = $norujukan;
$loguser->nota = 'Isytihar Joy Bidder';
$loguser->save();
}
}
$datalelbidxlaku = LelongBid::where('norujukan', $bida->norujukan)->get();
$suratcawxlaku = $datalelbidxlaku->all();
foreach(array_chunk($suratcawxlaku,100) as $data_chunkxlaku)
{
// dd($datalelbid);
foreach($data_chunkxlaku as $dataxlaku)
{
$savedataxlaku = $dataxlaku->replicate();
$savedataxlaku->setTable('lelongbid_xlaku');
$savedataxlaku->save();
// dd($caw_lelsag);
$caw_lelsag = LelongBid::where('norujukan', $dataxlaku->norujukan)->first();
$caw_lelsag->status_payment = '0';
$caw_lelsag->xlaku = '1';
$caw_lelsag->update();
}
}
//hapus lelongbidder
$lelongbidder = LelongBidder::where('lelongbid_id', $bida->id)
->where('user_id', $infos->user_id)
+18 -2
View File
@@ -15,6 +15,8 @@ use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
use App\Models\LogUser;
use App\Models\User;
use App\Models\CawanganLelong;
use App\Models\Cart;
@@ -22,14 +24,16 @@ class AutoTamatLelong implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $id;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct()
public function __construct($id)
{
//
$this->id = $id;
}
/**
@@ -48,6 +52,18 @@ class AutoTamatLelong implements ShouldQueue
->where('tarikh_lelong',$tarikhlelong)
->update(['sts_lelong' => 2]);
$cawlelong = CawanganLelong::where('lelong_id','=',$this->id)->get();
foreach($cawlelong as $cawlel) //save old harga asas
{
// $cawlel->masatamat_lelong = $currenttime;
$cawlel->status_online = 0; //start lelong
$cawlel->save();
}
$hapuscart = Cart::truncate();
$getnoajk = User::where('user_type', 3)->get();
foreach($getnoajk as $notifikasi){
$mobile_no = '6'.$notifikasi->notelbimbit;
+61
View File
@@ -0,0 +1,61 @@
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use App\Models\Cawangan;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Artisan;
class WhatsappPengesahanPembida implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $user_notelbimbit;
public $user_namapembida;
// protected $notisid;
// protected $cawid;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($user_notelbimbit,$user_namapembida)
{
$this->user_notelbimbit = $user_notelbimbit;
$this->user_namapembida = $user_namapembida;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$mobile_no = ltrim($this->user_notelbimbit, '+');
$message = 'AR-RAHN PKB: Terima Kasih '.$this->user_namapembida .', Pembayaran Anda Telah Disahkan, Sila Ke Cawangan Berkenaan Untuk Tuntutan Barang Bidaan Anda Hari Ini.';
if(config('app.env') != 'production'){
$mobile_no = config('app.admin_phone_number');
}
$response = Http::get(env('WABOT_API'), [
'number' => $mobile_no,
'type' => 'text',
'message' => $message,
'instance_id' => env('WABOT_INSTANCES_ID'),
'access_token' => env('WABOT_TOKEN_KEYS')
]);
Log::info("WABOT - Akaun Telah Sahkan Pembayaran: ".$this->user_namapembida .'' . $response);
}
}
+58
View File
@@ -0,0 +1,58 @@
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use App\Models\LogUser;
use App\Models\User;
use Illuminate\Support\Facades\Http;
class WhatsappTidakSahBayaran implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $user_namapembida;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($user_namapembida)
{
$this->user_namapembida = $user_namapembida;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$getnoajk = User::where('user_type', 3)->get();
foreach($getnoajk as $notifikasi){
$mobile_no = '6'.$notifikasi->notelbimbit;
if(config('app.env') != 'production'){
$mobile_no = config('app.admin_phone_number');
}
$response = Http::get(env('WABOT_API'), [
'number' => $mobile_no,
'type' => 'text',
'message' => 'Bayaran Pembida yang bernama *'.$this->user_namapembida.'* Adalah *Tidak Sah*, Mohon Pihak AJK Lelong Untuk Buat Semakan, Terima Kasih.' ,
'instance_id' => env('WABOT_INSTANCES_ID'),
'access_token' => env('WABOT_TOKEN_KEYS')
]);
}
}
}
+40
View File
@@ -0,0 +1,40 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class LelongBidderTemp extends Model
{
use HasFactory;
protected $table = 'lelongbidder_temp';
protected $fillable = [
'user_id',
'lelongbid_id',
'nama_bidder',
'hargabida',
'notelbimbit',
'nilaimarhun',
'cajlelong',
'status_bidder',
'status_payment',
'masa_bidaan'
];
public function lelongbid() {
return $this->hasOne(LelongBid::class,'id', 'lelongbid_id');
}
public function payment()
{
return $this->hasOne(Payment::class, 'lelongbid_id', 'lelongbid_id')->where('remark', '<>', '');
}
public function scanjual() {
return $this->hasOne(ScanJual::class, 'lelongbid_id', 'lelongbid_id');
}
}
@@ -244,6 +244,7 @@ class CreateLelongsTable extends Migration
$table->string('mora_upah');
$table->integer('fasa')->default(0);
$table->integer('opencash')->default(0);
$table->integer('xlaku')->default(0);
$table->timestamps();
// $table->foreign('caw_id')
@@ -1,35 +0,0 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddPara2ToCawanganTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('cawangan', function (Blueprint $table) {
$table->longText('para2')->nullable();
$table->longText('para3')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('cawangan', function (Blueprint $table) {
$table->dropColumn('para2') ;
$table->dropColumn('para3') ;
});
}
}
@@ -0,0 +1,44 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateLelongbidderTempTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('lelongbidder_temp', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('user_id')->unsigned();
$table->unsignedBigInteger('lelongbid_id')->unsigned();
$table->string('kodcaw')->nullable();
$table->string('nama_bidder');
$table->decimal('hargabida');
$table->string('notelbimbit');
$table->decimal('nilaimarhun');
$table->decimal('cajlelong');
$table->integer('status_bidder')->nullable(); //1 = win
$table->integer('payment_id')->nullable();
$table->integer('status_payment')->nullable(); // 1=paid, 2=memerlukan pengesahan operasi (CDM)
$table->datetime('masa_bidaan');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('lelongbidder_temp');
}
}
+37 -1
View File
@@ -40,6 +40,12 @@
<input type="hidden" name="kodcaw" value="{{ $cawanganDetail->caw_code }}" />
<input type="hidden" name="user_id" value="{{ $user_id }}" />
<input type="hidden" name="senarai_sag" value="{{ $senaraisag }}" />
<input type="hidden" name="jenis_button" value="terima" id="jenis_button" />
<input type="hidden" name="nama_pembida" value="{{ $userdetails['name']}}" />
<input type="hidden" name="nokp_pembida" value="{{ $userdetails['nokp'] }}" />
<input type="hidden" name="notel_pembida" value="{{ $userdetails['notelbimbit'] }}" />
<input type="hidden" name="kodcaw" value="{{ $caw_code }}" />
<table class="table table-bordered text-center" style="width:100%">
{{-- <thead class="bg-primary text-white">
<tr>
@@ -127,7 +133,8 @@
{{-- @if($sag['checking_payment'])
<button type="button" class="btn btn-success" disabled>Berjaya Disahkan</button>
@else --}}
<button type="button" class="btn btn-success" onclick="confirm()" >Sahkan</button>
<button type="button" class="btn btn-success" onclick="confirm(this)" id="sah">Sahkan</button>
<button type="button" class="btn btn-danger" onclick="xsahconfirm(this)" id="tidaksah" >Tidak Sah</button>
{{-- @endif --}}
{{-- @endforeach --}}
</div>
@@ -163,6 +170,7 @@
<script>
function confirm() {
let jenis=event.target.id;
$.confirm({
title: 'Confirmation',
content: 'Anda pasti?',
@@ -172,6 +180,7 @@
Sahkan: {
btnClass: 'btn-warning',
action: function () {
$('#jenis_button').val(jenis);
$("#formsahbayaronline").submit();
}
},
@@ -182,6 +191,33 @@
}
});
}
function xsahconfirm() {
let jenis=event.target.id;
$.confirm({
title: 'Confirmation',
content: 'Anda pasti?',
type: 'orange',
typeAnimated: true,
buttons: {
TidakSah: {
btnClass: 'btn-danger',
action: function () {
$('#jenis_button').val(jenis);
$("#formsahbayaronline").submit();
}
}
,
Batal: {
btnClass: 'btn-default',
action: function () {}
}
}
});
}
var tablekaunter = $('#tablekaunter').DataTable({
"columnDefs": [
{
+34 -1
View File
@@ -35,6 +35,12 @@
<input type="hidden" name="lelong_id" value="{{ $lelong_id }}" />
<input type="hidden" name="user_id" value="{{ $user_id }}" />
<input type="hidden" name="senarai_sag" value="{{ $senaraisag }}" />
<input type="hidden" name="jenis_button" value="terima" id="jenis_button" />
<input type="hidden" name="nama_pembida" value="{{ $userdetails['name']}}" />
<input type="hidden" name="nokp_pembida" value="{{ $userdetails['nokp'] }}" />
<input type="hidden" name="notel_pembida" value="{{ $userdetails['notelbimbit'] }}" />
<input type="hidden" name="kodcaw" value="{{ $caw_code }}" />
<table class="table table-striped table-xl text-center" id="tablekaunter" style="width:100%">
{{-- <thead class="bg-primary text-white">
<tr>
@@ -124,7 +130,8 @@
{{-- @if($sag['checking_payment'])
<button type="button" class="btn btn-success" disabled>Berjaya Disahkan</button>
@else --}}
<button type="button" class="btn btn-success" onclick="confirm()" >Sahkan</button>
<button type="button" class="btn btn-success" onclick="confirm(this)" id="sah">Sahkan</button>
<button type="button" class="btn btn-danger" onclick="xsahconfirm(this)" id="tidaksah" >Tidak Sah</button>
{{-- @endif --}}
{{-- @endforeach --}}
</div>
@@ -160,6 +167,7 @@
<script>
function confirm() {
let jenis=event.target.id;
$.confirm({
title: 'Confirmation',
content: 'Anda pasti?',
@@ -169,6 +177,7 @@
Sahkan: {
btnClass: 'btn-warning',
action: function () {
$('#jenis_button').val(jenis);
$("#formsahbayaronline").submit();
}
},
@@ -179,6 +188,30 @@
}
});
}
function xsahconfirm() {
let jenis=event.target.id;
$.confirm({
title: 'Confirmation',
content: 'Anda pasti?',
type: 'orange',
typeAnimated: true,
buttons: {
TidakSah: {
btnClass: 'btn-danger',
action: function () {
$('#jenis_button').val(jenis);
$("#formsahbayaronline").submit();
}
}
,
Batal: {
btnClass: 'btn-default',
action: function () {}
}
}
});
}
var tablekaunter = $('#tablekaunter').DataTable({
"columnDefs": [
{
+8 -8
View File
@@ -217,7 +217,7 @@
$t_lelong = $myDateTime->format('d-m-Y');
echo($t_lelong);
@endphp</td>
<td class="text-left">
<td class="text-left" style="white-space: nowrap;">
@foreach($lel['detailsinfo'] as $details)
<a href="{{ route('pembida.senaraipemenangbycaw', ['lelong_id'=>$lel['detail']['lelong_id'], 'kodcaw'=>$details['caw_code']]) }} " data-toggle="tooltip" data-placement="top" title="Butiran Bidaan"><i class="far fa-edit"></i></a>
<span class="m-2"><b>{{ $details['caw_name']}}</b>
@@ -267,11 +267,11 @@
@if($winner['jenisbayaran'] != NULL)
{{-- {{ dump($winner['jenisbayaran'])}} --}}
@if($winner['jenisbayaran']['status_payment_opt'] == 1)
TUNAI
<span class="badge badge-pill badge-dark">TUNAI</span>
@elseif($winner['jenisbayaran']['status_payment_opt'] == 2)
FPX
<span class="badge badge-pill badge-primary">FPX</span>
@elseif($winner['jenisbayaran']['status_payment_opt'] == 3)
KAUNTER BANK/CDM
<span class="badge badge-pill badge-secondary">CDM</span>
@endif
@else
@@ -291,15 +291,15 @@
@forelse($details['listwinner'] as $winner)
@if($winner['jenisbayaran'] != NULL)
@if($winner['jenisbayaran']['disahkan_oleh'] != NULL)
SELESAI
<button class="btn btn-sm btn-success" disabled>SELESAI</button>
@elseif($winner['jenisbayaran']['disahkan_oleh'] == NULL)
TUNGGU PENGESAHAN
<span class="badge badge-warning">TUNGGU PENGESAHAN</span>
@else
BELUM SELESAI
<button class="btn btn-sm btn-danger" disabled>BELUM SELESAI</button>
@endif
@else
BELUM SELESAI
<button class="btn btn-sm btn-danger" disabled>BELUM SELESAI</button>
@endif
<br>
@empty
+6
View File
@@ -475,6 +475,9 @@ Route::group(['middleware' => ['permission:pengesahanbayaran'],'prefix'=>'accoun
Route::post('/laporanakaundetailexport',['as'=>'account.laporanakaundetailexport','uses'=>'AccountController@laporanakaundetailexport']);
Route::get('/laporanakaundetailall/{lelong_id}',['as'=>'account.laporanakaundetailall','uses'=>'AccountController@laporanakaundetailall']);
Route::post('/laporanakaundetailallexport',['as'=>'account.laporanakaundetailallexport','uses'=>'AccountController@laporanakaundetailallexport']);
Route::post('/xsahbayaronline', ['as'=>'account.xsahbayaronline','uses'=>'AccountController@xsahbayaronline']);
});
// Pengurus Cawangan
@@ -571,6 +574,9 @@ Route::get('/searchforecastgadaian', ['as'=>'report.searchforecastgadaian','uses
Route::get('/senarailapbidaanresult/{lelong_id}/{kodcaw}',['as' =>'report.senarailapbidaanresult','uses'=>'ReportController@senarailapbidaanresult']);
Route::post('/kemaskinibidaan',['as'=>'report.kemaskinibidaan','uses'=>'ReportController@kemaskinibidaan']);
Route::get('/joybidder',['as'=>'report.joybidder','uses'=>'ReportController@joybidder']);
});
//Report by KALI