update kemaskiniLelong job, add xlaku, add owner bidder

This commit is contained in:
Nur Izzati Zulkifli
2023-10-29 12:55:24 +08:00
parent d72361c2b3
commit 3e5b83915c
6 changed files with 514 additions and 30 deletions
+228 -21
View File
@@ -52,6 +52,8 @@ use DateTime;
// use Nexmo\Laravel\Facade\Nexmo;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use App\Jobs\HantarMail;
use App\Jobs\WhatsappPemenang;
class LelongController extends Controller
{
@@ -2376,16 +2378,46 @@ class LelongController extends Controller
$current = $current_default->toDateString();
$lelong = Lelong::find($lelong_id, ['id', 'cajlelong']);
$lelong_bid_all = LelongBid::select('id', 'pinjaman', 'bakiupah')->where('lelong_id', '=', $lelong_id)->where('status_jual', '=', 0)->get();
$lelong_bid_all = LelongBid::select('id','norujukan', 'pinjaman', 'bakiupah','kodcaw')
->where('lelong_id', '=', $lelong_id)->where('status_jual', '=', 0)->get();
foreach($lelong_bid_all as $index7=>$gadai){
$kodcaw = $gadai->kodcaw;
$norujukan = $gadai->norujukan;
$datanokp = Gadai::on($kodcaw)->where('norujukan', $norujukan)
->select('nokp')
->orderBy('norujukan','ASC')
->first();
$lelong_bid_all[$index7]['nokp_owner'] = $datanokp->nokp;
}
// dd($lelong_bid_all[$index7]['nokp_owner']);
$lelong_bid_all_pluck_id = $lelong_bid_all->pluck('id');
$lelong_bid_all_key_by_id = $lelong_bid_all->keyBy('id');
$lelong_bidder_all = LelongBidder::whereIn('lelongbid_id', $lelong_bid_all_pluck_id)
->select('id', 'lelongbid_id', 'hargabida', 'user_id')
->leftJoin('users','users.id','=','lelongbidder.user_id')
->join('lelongbid','lelongbid.id','=','lelongbidder.lelongbid_id')
->select('lelongbidder.id', 'lelongbid_id', 'hargabida', 'lelongbidder.user_id','users.nokp','lelongbid.kodcaw','lelongbid.norujukan')
->where('masa_bidaan', 'LIKE', '%' . $current . '%')
->orderBy('masa_bidaan', 'ASC')
->get();
// dd($lelong_bidder_all);
$lelong_bid_all_key_by_norujukan_2 = $lelong_bid_all->keyBy('norujukan');
// dd($lelong_bid_all_key_by_norujukan_2);
foreach($lelong_bidder_all as $index7=>$lelong_bidder2){
// dump(($lelong_bid_all_key_by_norujukan_2[$lelong_bidder2->norujukan]));
if($lelong_bid_all_key_by_norujukan_2[$lelong_bidder2->norujukan]){
$owner_true = $lelong_bid_all_key_by_norujukan_2[$lelong_bidder2->norujukan];
// dump($lelong_bidder2->norujukan, $lelong_bidder2->nokp == $owner_true->nokp_owner);
if($lelong_bidder2->nokp == $owner_true->nokp_owner){
$lelong_bidder_all[$index7]['owner'] = true;
}else{
$lelong_bidder_all[$index7]['owner'] = false;
}
}
}
$lelong_bidder_group_by_lelong_bid_id = $lelong_bidder_all->groupBy('lelongbid_id');
@@ -2393,16 +2425,24 @@ class LelongController extends Controller
foreach ($lelong_bidder_group_by_lelong_bid_id as $lelong_bidders) {
$bidder_paling_tinggi = new LelongBidder();
foreach ($lelong_bidders as $lelong_bidder) {
if ($bidder_paling_tinggi->hargabida == null) {
if($lelong_bidder->owner == true){
$bidder_paling_tinggi = $lelong_bidder;
} else {
if ($lelong_bidder->hargabida > $bidder_paling_tinggi->hargabida) {
$bidder_paling_tinggi = $lelong_bidder;
}
break;
}
else if($lelong_bidder->owner == false){
if($bidder_paling_tinggi->hargabida == null) {
$bidder_paling_tinggi = $lelong_bidder;
}
else {
if ($lelong_bidder->hargabida > $bidder_paling_tinggi->hargabida) {
$bidder_paling_tinggi = $lelong_bidder;
}
}
}
}
$collection_lelong_bidder_menang->add($bidder_paling_tinggi);
}
//dd($collection_lelong_bidder_menang);
$cases_update_caj_lelong = '';
$cases_update_baki_lelong = '';
@@ -2494,23 +2534,30 @@ class LelongController extends Controller
$total_bid_win = $pemenang->sum('hargabida');
$total_bid_win_converted = number_format($total_bid_win, 2, '.', ',');
$user_email = $user_true->email;
$user_name = $user_true->name;
$user_notelbimbit = $user_true->notelbimbit;
Mail::to($user_true->email)->send(new Pemenang($user_true->name, $total_bid_win_converted));
HantarMail::dispatch($user_email, $user_name, $total_bid_win_converted);
$mobile_no = ltrim($user_true->notelbimbit, '+');
$message = 'AR-RAHN PKB: Tahniah Anda Menang Bidaan Sebanyak RM' . $total_bid_win_converted . '. Sila Semak Melalui Sistem ArrahnBid. Terima Kasih.';
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')
]);
// Mail::to($user_true->email)->send(new Pemenang($user_true->name, $total_bid_win_converted));
Log::info("WABOT - menang bidaan " . $response);
//$mobile_no = ltrim($user_notelbimbit, '+');
// $message = 'AR-RAHN PKB: Tahniah Anda Menang Bidaan Sebanyak RM' . $total_bid_win_converted . '. Sila Semak Melalui Sistem ArrahnBid. Terima Kasih.';
// 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')
// ]);
WhatsappPemenang::dispatch($user_notelbimbit, $total_bid_win_converted);
// Log::info("WABOT - menang bidaan " . $response);
}
Invoice::insert($invoice_array);
@@ -3537,12 +3584,16 @@ class LelongController extends Controller
// dd($datalelbid);
foreach($data_chunk as $data)
{
$savedata = $data->replicate();
$savedata->setTable('lelongbid_xlaku');
$savedata->save();
//dd($simulasi->id);
$caw_lelsag = LelongBid::where('norujukan', $data->norujukan)
->where('status_jual','=', 0)->first();
// dd($caw_lelsag);
$caw_lelsag->lelong_id = $lelong1->id;
$caw_lelsag->t_lelong = $request->tarikhlelongbaru;
$caw_lelsag->xlaku = '1';
$caw_lelsag->update();
}
@@ -7703,6 +7754,162 @@ class LelongController extends Controller
}
public function janapemenangallcaw22($lelong_id)
{
$current_default = new Carbon();
$day = $current_default->day;
$month = $current_default->month;
$year = $current_default->format('y');
$current = $current_default->toDateString();
$lelong = Lelong::find($lelong_id, ['id', 'cajlelong']);
$lelong_bid_all = LelongBid::select('id', 'pinjaman', 'bakiupah')->where('lelong_id', '=', $lelong_id)->where('status_jual', '=', 0)->get();
$lelong_bid_all_pluck_id = $lelong_bid_all->pluck('id');
$lelong_bid_all_key_by_id = $lelong_bid_all->keyBy('id');
$lelong_bidder_all = LelongBidder::whereIn('lelongbid_id', $lelong_bid_all_pluck_id)
->select('id', 'lelongbid_id', 'hargabida', 'user_id')
->where('masa_bidaan', 'LIKE', '%' . $current . '%')
->orderBy('masa_bidaan', 'ASC')
->get();
$lelong_bidder_group_by_lelong_bid_id = $lelong_bidder_all->groupBy('lelongbid_id');
$collection_lelong_bidder_menang = collect();
foreach ($lelong_bidder_group_by_lelong_bid_id as $lelong_bidders) {
$bidder_paling_tinggi = new LelongBidder();
foreach ($lelong_bidders as $lelong_bidder) {
if ($bidder_paling_tinggi->hargabida == null) {
$bidder_paling_tinggi = $lelong_bidder;
} else {
if ($lelong_bidder->hargabida > $bidder_paling_tinggi->hargabida) {
$bidder_paling_tinggi = $lelong_bidder;
}
}
}
$collection_lelong_bidder_menang->add($bidder_paling_tinggi);
}
$cases_update_caj_lelong = '';
$cases_update_baki_lelong = '';
$cases_update_harga_jual = '';
$cases_update_t_jual = '';
$cases_update_no_pembeli = '';
$cases_update_status_jual = '';
$lelong_bid_array = [];
foreach ($collection_lelong_bidder_menang as $lel_bidder_menang) {
array_push($lelong_bid_array, $lel_bidder_menang->lelongbid_id);
if ($lelong_bid_all_key_by_id[$lel_bidder_menang->lelongbid_id]) {
$lel_bid_true = $lelong_bid_all_key_by_id[$lel_bidder_menang->lelongbid_id];
$caj_lelong_bid = $lel_bidder_menang->hargabida * ($lelong->cajlelong / 100);
$caj_lelong_bid = round($caj_lelong_bid, 1 ,1);
$baki_lelong_bid = $lel_bidder_menang->hargabida - $lel_bid_true->pinjaman - bcdiv($lel_bid_true->bakiupah, 1, 1) - $caj_lelong_bid;
$cases_update_caj_lelong .= sprintf(' WHEN id = %d THEN %s ', $lel_bid_true->id, $caj_lelong_bid);
$cases_update_baki_lelong .= sprintf(' WHEN id = %d THEN %s ', $lel_bid_true->id, $baki_lelong_bid);
$cases_update_harga_jual .= sprintf(' WHEN id = %d THEN %s ', $lel_bid_true->id, $lel_bidder_menang->hargabida);
$cases_update_t_jual .= sprintf(' WHEN id = %d THEN \'%s\' ', $lel_bid_true->id, $current);
$cases_update_no_pembeli .= sprintf(' WHEN id = %d THEN %s ', $lel_bid_true->id, $lel_bidder_menang->user_id);
$cases_update_status_jual .= sprintf(' WHEN id = %d THEN %s ', $lel_bid_true->id, 1);
}
}
$build_query_update_caj_lelong = sprintf("CASE %s END", $cases_update_caj_lelong);
$build_query_update_baki_lelong = sprintf("CASE %s END", $cases_update_baki_lelong);
$build_query_update_harga_jual = sprintf("CASE %s END", $cases_update_harga_jual);
$build_query_update_t_jual = sprintf("CASE %s END", $cases_update_t_jual);
$build_query_update_no_pembeli = sprintf("CASE %s END", $cases_update_no_pembeli);
$build_query_update_status_jual = sprintf("CASE %s END", $cases_update_status_jual);
LelongBid::query()->whereIn('id', $lelong_bid_array)->update(['cajlelong' => DB::raw($build_query_update_caj_lelong)]);
LelongBid::query()->whereIn('id', $lelong_bid_array)->update(['baki' => DB::raw($build_query_update_baki_lelong)]);
LelongBid::query()->whereIn('id', $lelong_bid_array)->update(['hargajual' => DB::raw($build_query_update_harga_jual)]);
LelongBid::query()->whereIn('id', $lelong_bid_array)->update(['t_jual' => DB::raw($build_query_update_t_jual)]);
LelongBid::query()->whereIn('id', $lelong_bid_array)->update(['nopembeli' => DB::raw($build_query_update_no_pembeli)]);
LelongBid::query()->whereIn('id', $lelong_bid_array)->update(['status_jual' => DB::raw($build_query_update_status_jual)]);
$cases_update_status_bidder = '';
$lelong_bidder_array = [];
foreach ($lelong_bidder_all as $lel_bidder) {
array_push($lelong_bidder_array, $lel_bidder->id);
if ($collection_lelong_bidder_menang->contains('id', $lel_bidder->id)) {
$cases_update_status_bidder .= sprintf(' WHEN id = %d THEN %s ', $lel_bidder->id, 1);
} else {
$cases_update_status_bidder .= sprintf(' WHEN id = %d THEN %s ', $lel_bidder->id, 0);
}
}
$build_query_update_status_bidder = sprintf("CASE %s END", $cases_update_status_bidder);
LelongBidder::query()->whereIn('id', $lelong_bidder_array)->update(['status_bidder' => DB::raw($build_query_update_status_bidder)]);
$users_bid = $collection_lelong_bidder_menang->pluck('user_id')->unique();
$users = User::whereIn('id', $users_bid)->select('id', 'name', 'email', 'notelbimbit')->get()->keyBy('id');
$collection_pemenang = $collection_lelong_bidder_menang->groupBy('user_id');
$invoice_array = [];
$previous_siri = Invoice::select('id')->orderBy('id', 'desc')->first();
if ($previous_siri) {
$nosiri = $previous_siri->id + 1;
} else {
$nosiri = 1;
}
foreach ($collection_pemenang as $index => $pemenang) {
$user_true = $users[$index];
$reference_no = 'iPKB' . $day . $month . $year . sprintf("%08d", $nosiri);
$invoice_to_be_inserted = [
'user_id' => $user_true->id,
'lelong_id' => $lelong_id,
'invoice_no' => $reference_no,
'total_invoice' => $pemenang->sum('hargabida'),
'invoice_type' => 2,
'created_at' => $current_default,
'updated_at' => $current_default,
];
array_push($invoice_array, $invoice_to_be_inserted);
$nosiri += 1;
$total_bid_win = $pemenang->sum('hargabida');
$total_bid_win_converted = number_format($total_bid_win, 2, '.', ',');
Mail::to($user_true->email)->send(new Pemenang($user_true->name, $total_bid_win_converted));
$mobile_no = ltrim($user_true->notelbimbit, '+');
$message = 'AR-RAHN PKB: Tahniah Anda Menang Bidaan Sebanyak RM' . $total_bid_win_converted . '. Sila Semak Melalui Sistem ArrahnBid. Terima Kasih.';
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 - menang bidaan " . $response);
}
Invoice::insert($invoice_array);
$lelong->sts_lelong = 3;
$lelong->save();
return redirect()->route('lelong.senarailelong')->with('success', 'Selesai menjana pemenang');
}