From 43d6ba991f9de36e0cd0b8dc4e8644baeadb0e59 Mon Sep 17 00:00:00 2001 From: Amir Date: Mon, 3 Apr 2023 11:09:53 +0800 Subject: [PATCH] Update janapemenang --- app/Http/Controllers/LelongController.php | 163 ++++++++++++++++++++ app/Mail/Pemenang.php | 5 +- resources/views/homeoperasi.blade.php | 10 +- resources/views/template/pemenang.blade.php | 4 +- routes/web.php | 2 +- 5 files changed, 179 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/LelongController.php b/app/Http/Controllers/LelongController.php index 6e486f8a..e7f2c34f 100644 --- a/app/Http/Controllers/LelongController.php +++ b/app/Http/Controllers/LelongController.php @@ -51,6 +51,7 @@ use App\Models\TransaksiKeuntungan; use DateTime; // use Nexmo\Laravel\Facade\Nexmo; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; class LelongController extends Controller { @@ -2363,6 +2364,168 @@ class LelongController extends Controller ->with('success', 'Selesai menjana pemenang'); } + public function janapemenangallcaw2($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')->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); + $baki_lelong_bid = $lel_bidder_menang->hargabida - $lel_bid_true->pinjaman - bcdiv($lel_bid_true->bakiupah, 1, 1) - round($caj_lelong_bid); + + $caj_lelong_bid = bcdiv($caj_lelong_bid, 1, 2); + $baki_lelong_bid = bcdiv($baki_lelong_bid, 1, 2); + + $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.'; + + $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') + ]); + + $res_json = $response->json(); + if ($res_json['status'] == "error") { + $message = "WABOT: " . $res_json['message'] . " - " . $res_json['data']; + Log::error($message); + } else { + $message = "WABOT: Success " . $res_json['data']['key']['remoteJid'] . " - " . $res_json['data']['message']['extendedTextMessage']['text']; + Log::info($message); + } + } + + Invoice::insert($invoice_array); + + $lelong->sts_lelong = 3; + $lelong->save(); + + return redirect()->route('lelong.senarailelong')->with('success', 'Selesai menjana pemenang'); + } + public function kemaskinidata($lelong_id) { $user = Auth::user(); diff --git a/app/Mail/Pemenang.php b/app/Mail/Pemenang.php index d9c75142..5e819a06 100644 --- a/app/Mail/Pemenang.php +++ b/app/Mail/Pemenang.php @@ -20,13 +20,15 @@ class Pemenang extends Mailable */ public $name; + public $total_bid_win; // public $id; // public $lelong_id; // public $token; - public function __construct($name) + public function __construct($name, $total_bid_win) { $this->name = $name; + $this->total_bid_win = $total_bid_win; // $this->id = $id; // $this->lelong_id = $lelong_id; // $this->token = $token; @@ -40,6 +42,7 @@ class Pemenang extends Mailable { // return $this->view('view.name'); $user['name'] = $this->name; + $user['total_bid_win'] = $this->total_bid_win; // $user['id'] = $this->id; // $user['lelong_id'] = $this->lelong_id; // $user['token'] = $this->token; diff --git a/resources/views/homeoperasi.blade.php b/resources/views/homeoperasi.blade.php index bf497034..952699f3 100644 --- a/resources/views/homeoperasi.blade.php +++ b/resources/views/homeoperasi.blade.php @@ -92,7 +92,7 @@ @elseif ($lel['info']['sts_lelong'] == 2) Jana Pemenang @else - + Senarai Pemenang @endif
@@ -372,6 +372,14 @@ btnClass: 'btn-success', action: function() { location.href = this.$target.attr('href'); + $.dialog({ + icon: 'fa fa-spinner fa-spin', + title: 'Dalam Proses !', + content: 'Halaman akan dikemaskini selepas proses selesai.', + closeIcon: false, + boxWidth: '500px', + useBootstrap: false, + }); } }, } diff --git a/resources/views/template/pemenang.blade.php b/resources/views/template/pemenang.blade.php index c742eb78..96909bac 100644 --- a/resources/views/template/pemenang.blade.php +++ b/resources/views/template/pemenang.blade.php @@ -50,10 +50,10 @@

- Kepada {{ $user ? $user['name'] : '' }}, + Kepada {{ $user ? strtoupper($user['name']) : '' }},

- Tahniah, Anda Telah Berjaya Dalam Bidaan Emas Hari Ini, Sila Semak Bidaan Anda Dalam Pautan ini. + Tahniah, Anda Telah Berjaya Menang Bidaan Sebanyak RM{{ $user ? $user['total_bid_win'] : '' }}, Sila Semak Maklumat Dalam Pautan ini.

diff --git a/routes/web.php b/routes/web.php index 0aad0d10..d15b5214 100644 --- a/routes/web.php +++ b/routes/web.php @@ -248,7 +248,7 @@ Route::group(['prefix'=>'lelong'], function () { Route::get('/janapemenang/{id}',['as'=>'lelong.janapemenang','uses'=>'LelongController@janapemenang']); Route::get('/listcawangan',['as'=>'lelong.listcawangan','uses'=>'LelongController@listcawangan']); Route::get('/janapemenangbycaw/{lelong_id}/{cawid}',['as'=>'lelong.janapemenangbycaw','uses'=>'LelongController@janapemenangbycaw']); - Route::get('/janapemenangallcaw/{lelong_id}',['as'=>'lelong.janapemenangallcaw','uses'=>'LelongController@janapemenangallcaw']); + Route::get('/janapemenangallcaw/{lelong_id}',['as'=>'lelong.janapemenangallcaw','uses'=>'LelongController@janapemenangallcaw2']); Route::get('/listpemenang',['as'=>'lelong.listpemenang','uses'=>'LelongController@listpemenang']); Route::get('/senaraipemenang/{lelong_id}/{caw_code}',['as'=>'pemenang.senaraipemenang','uses'=>'LelongController@senaraipemenang']);