Merge branch 'atie' into 'main'

add blast wabot dlm notis lelong (parameter)

See merge request online-sistem1/lelong!455
This commit is contained in:
Nur Izzati Zulkifli
2023-06-07 01:41:26 +00:00
7 changed files with 549 additions and 2 deletions
+89 -1
View File
@@ -37,7 +37,8 @@ use Maatwebsite\Excel\Concerns\FromCollection;
use Excel;
use App\Models\LelongCawangan;
use App\Models\WtdDraft;
use App\Jobs\WhatsappNotisLelongFasa1;
use App\Jobs\WhatsappNotisLelongFasa2;
@@ -2507,6 +2508,93 @@ Sekian, terima kasih.';
}
return view('wtd.listcawanganwtdproses',compact('cawangan_all'));
}
Public function kemaskininotislelwabot(Request $request){
$tetapan = Tetapan::where('id','=',1)->get();
return view('template.notislelwabot',compact('tetapan'));
}
public function storepara2blast(Request $request) {
$tetapan = Tetapan::find(1);
$tetapan->para2blast = $request->para2blast;
$tetapan->update();
$cawangan = Cawangan::all();
foreach($cawangan as $updatecaw){
$update = Cawangan::where('id', $updatecaw['id'])
->update(['para2blast'=>$request->para2blast]);
}
return redirect()->route('parameter.kemaskininotislelwabot')
->with('success','Kemaskini Berjaya');
}
public function storepara3blast(Request $request) {
$tetapan = Tetapan::find(1);
$tetapan->para3blast = $request->para3blast;
$tetapan->update();
$cawangan = Cawangan::all();
foreach($cawangan as $updatecaw){
$update = Cawangan::where('id', $updatecaw['id'])
->update(['para3blast'=>$request->para3blast]);
}
return redirect()->route('parameter.kemaskininotislelwabot')
->with('success','Kemaskini Berjaya');
}
public function blastnotislelongfasa1($lelong_id)
{
$user = Auth::user();
$caw = Cawangan::where('caw_code', '=', $user->kodcaw)->first();
$currentdate = Carbon::now();
$lel = Lelong::find($lelong_id);
WhatsappNotisLelongFasa1::dispatch($user->id, $user->kodcaw, $lelong_id);
//insert loguser
$loguser = new LogUser;
$loguser->user_id = $user->id;
$loguser->date = $currentdate;
$loguser->username = $user->username;
$loguser->nama_user = $user->name;
$loguser->nota = 'BLAST NOTIS LELONG FASA 1: '.$lelong_id;
$loguser->save();
return redirect()->route('jananotis.notislelong')
->with('success','Blast Whatsapp Dalam Proses');
}
public function blastnotislelongfasa2($lelong_id)
{
$user = Auth::user();
$caw = Cawangan::where('caw_code', '=', $user->kodcaw)->first();
$currentdate = Carbon::now();
$lel = Lelong::find($lelong_id);
WhatsappNotisLelongFasa2::dispatch($user->id, $user->kodcaw, $lelong_id);
//insert loguser
$loguser = new LogUser;
$loguser->user_id = $user->id;
$loguser->date = $currentdate;
$loguser->username = $user->username;
$loguser->nama_user = $user->name;
$loguser->nota = 'BLAST NOTIS LELONG FASA 2: '.$lelong_id;
$loguser->save();
return redirect()->route('jananotis.notislelong')
->with('success','Blast Whatsapp Dalam Proses');
}
+164
View File
@@ -0,0 +1,164 @@
<?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 App\Models\Lelong;
use App\Models\LelongCawangan;
use App\Models\LelongBid;
use App\Models\Gadai;
use App\Models\Customer;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Http;
use App\Models\CawanganLelong;
use Illuminate\Support\Facades\Artisan;
use DateTime;
class WhatsappNotisLelongFasa1 implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $user_id;
public $user_kodcaw;
protected $lelong_id;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($user_id, $user_kodcaw, $lelong_id)
{
$this->user_id = $user_id;
$this->user_kodcaw = $user_kodcaw;
$this->lelong_id = $lelong_id;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
// $user = Auth::user();
$caw = Cawangan::where('caw_code', '=', $this->user_kodcaw)->first();
$currentdate = Carbon::now();
$lel = Lelong::with('cawangan')->find($this->lelong_id);
// dd($lel->tarikh_lelong);
$cawanganDetail = $lel->cawangan->find($caw->id);
$lelong_id = $this->lelong_id;
$cawangan = Cawangan::with(["lelongBid" => function($q) use ($lelong_id){
$q->where('lelong_id', '=', $lelong_id)->select('id','caw_id','kodcaw','norujukan','pinjaman','bakiupah','hargaasas','nilaimarhun','cajlelong','baki','t_lelong');
}])
->where('caw_code','=',$cawanganDetail->caw_code)->first();
$lelongbid_data_pluck_norujukan = $cawangan->lelongBid->pluck('norujukan')->toArray();
$gadai_all = Gadai::on($cawanganDetail->caw_code)->whereIn('gadai.norujukan', $lelongbid_data_pluck_norujukan)
->orderBy('nokp', 'asc')
->orderBy('norujukan','ASC')
->get();
$customers_list = $gadai_all->pluck('nokp')->unique();
$customers = Customer::whereIn('kpbaru', $customers_list)
->orWhereIn('kplama', $customers_list)
->select('id','kpbaru','kplama' ,'nama', 'telefon')
->get()->keyBy('id');
$customers_keyBy_noKp = $customers->keyBy(function ($item) {
if ($item->kpbaru != '') {
return $item->kpbaru;
} else if ($item->kplama != '') {
return $item->kplama;
}
});
$customers_pluck_notel = $customers_keyBy_noKp->pluck('telefon');
// dd($customers_pluck_notel);
foreach($customers_pluck_notel as $index1 =>$custphone) {
// dd($custphone);
$special = preg_match('/[\'^£$%&*()}{@#~?><>,|=_+¬-]/', $custphone);
// dump($special);
if($special == 0){
if($custphone == ''){
$newtel = '';
}elseif($custphone <> ''){
$newtel = '6'.$custphone;
}
}
elseif($special == 1){
if($custphone == ''){
$newtel = '';
}elseif($custphone <> ''){
$newtel = '6'.str_replace( array( '-' ), '', $custphone);
}
}
// dump($newtel);
}
$lelong_bid_all_groupby_norujukan = $cawangan->lelongBid->groupBy('norujukan');
$lelong_all_keyBy_norujukan = $gadai_all->keyBy('norujukan');
foreach($lelong_bid_all_groupby_norujukan as $index7=>$lelongbid){
// dd($notis_all_keyBy_norujukan);
if($lelong_all_keyBy_norujukan[$index7]){
$gadai_true = $lelong_all_keyBy_norujukan[$index7];
$gadai_true['data_lelongbid'] = $lelongbid;
}
}
// dd($gadai_all);
foreach ($gadai_all as $index => $suratnotis) {
$datanotisbid = $suratnotis['data_lelongbid'][0]->fasa;
// dd($suratnotis);
if($customers_keyBy_noKp[$suratnotis->nokp])
{
$mobile_no = '60178916936';
// $mobile_no = $newtel;
$user_true = $customers_keyBy_noKp[$suratnotis->nokp];
$nama = $user_true->nama;
$t_lelong = Carbon::parse($lel->tarikh_lelong);
$t_lelongf1 = $t_lelong->format('d-m-Y');
$cawname = $caw->caw_name;
$para2blast = $caw->para2blast;
$myDateTime = DateTime::createFromFormat('Y-m-d', $lel->tarikh_lelong );
$datez = $myDateTime->modify('-3 day')->format('d-m-Y');
// dd($t_matang1);
$message = '*LELONGAN AWAM BARANG GADAIAN PADA '.$t_lelongf1.'*
Nama: *'.$nama.'*
No.KP: *'.$suratnotis->nokp.'*'.'
No.Rujukan: *'.$suratnotis->norujukan.'*
Cawangan: *'.$cawname.'*
Waktu Lelong: *10.30Pagi*
Tuan/Puan adalah dikehendaki untuk membuat urusan berikut dikaunter cawangan pada atau sebelum *'.$datez.'*:-
'.$para2blast.'.
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')
]);
Log::info("WABOT - Notis Lelongan Fasa 1" . $response);
}
sleep(2);
}
}
}
+164
View File
@@ -0,0 +1,164 @@
<?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 App\Models\Lelong;
use App\Models\LelongCawangan;
use App\Models\LelongBid;
use App\Models\Gadai;
use App\Models\Customer;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Http;
use App\Models\CawanganLelong;
use Illuminate\Support\Facades\Artisan;
use DateTime;
class WhatsappNotisLelongFasa2 implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $user_id;
public $user_kodcaw;
protected $lelong_id;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($user_id, $user_kodcaw, $lelong_id)
{
$this->user_id = $user_id;
$this->user_kodcaw = $user_kodcaw;
$this->lelong_id = $lelong_id;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
// $user = Auth::user();
$caw = Cawangan::where('caw_code', '=', $this->user_kodcaw)->first();
$currentdate = Carbon::now();
$lel = Lelong::with('cawangan')->find($this->lelong_id);
// dd($lel->tarikh_lelong);
$cawanganDetail = $lel->cawangan->find($caw->id);
$lelong_id = $this->lelong_id;
$cawangan = Cawangan::with(["lelongBid" => function($q) use ($lelong_id){
$q->where('lelong_id', '=', $lelong_id)->select('id','caw_id','kodcaw','norujukan','pinjaman','bakiupah','hargaasas','nilaimarhun','cajlelong','baki','t_lelong');
}])
->where('caw_code','=',$cawanganDetail->caw_code)->first();
$lelongbid_data_pluck_norujukan = $cawangan->lelongBid->pluck('norujukan')->toArray();
$gadai_all = Gadai::on($cawanganDetail->caw_code)->whereIn('gadai.norujukan', $lelongbid_data_pluck_norujukan)
->orderBy('nokp', 'asc')
->orderBy('norujukan','ASC')
->get();
$customers_list = $gadai_all->pluck('nokp')->unique();
$customers = Customer::whereIn('kpbaru', $customers_list)
->orWhereIn('kplama', $customers_list)
->select('id','kpbaru','kplama' ,'nama', 'telefon')
->get()->keyBy('id');
$customers_keyBy_noKp = $customers->keyBy(function ($item) {
if ($item->kpbaru != '') {
return $item->kpbaru;
} else if ($item->kplama != '') {
return $item->kplama;
}
});
$customers_pluck_notel = $customers_keyBy_noKp->pluck('telefon');
// dd($customers_pluck_notel);
foreach($customers_pluck_notel as $index1 =>$custphone) {
// dd($custphone);
$special = preg_match('/[\'^£$%&*()}{@#~?><>,|=_+¬-]/', $custphone);
// dump($special);
if($special == 0){
if($custphone == ''){
$newtel = '';
}elseif($custphone <> ''){
$newtel = '6'.$custphone;
}
}
elseif($special == 1){
if($custphone == ''){
$newtel = '';
}elseif($custphone <> ''){
$newtel = '6'.str_replace( array( '-' ), '', $custphone);
}
}
// dump($newtel);
}
$lelong_bid_all_groupby_norujukan = $cawangan->lelongBid->groupBy('norujukan');
$lelong_all_keyBy_norujukan = $gadai_all->keyBy('norujukan');
foreach($lelong_bid_all_groupby_norujukan as $index7=>$lelongbid){
// dd($notis_all_keyBy_norujukan);
if($lelong_all_keyBy_norujukan[$index7]){
$gadai_true = $lelong_all_keyBy_norujukan[$index7];
$gadai_true['data_lelongbid'] = $lelongbid;
}
}
// dd($gadai_all);
foreach ($gadai_all as $index => $suratnotis) {
$datanotisbid = $suratnotis['data_lelongbid'][0]->fasa;
// dd($suratnotis);
if($customers_keyBy_noKp[$suratnotis->nokp])
{
$mobile_no = '60178916936';
// $mobile_no = $newtel;
$user_true = $customers_keyBy_noKp[$suratnotis->nokp];
$nama = $user_true->nama;
$t_lelong = Carbon::parse($lel->tarikh_lelong);
$t_lelongf1 = $t_lelong->format('d-m-Y');
$cawname = $caw->caw_name;
$para2blast = $caw->para3blast;
$myDateTime = DateTime::createFromFormat('Y-m-d', $lel->tarikh_lelong );
$datez = $myDateTime->modify('-3 day')->format('d-m-Y');
// dd($t_matang1);
$message = '*LELONGAN AWAM BARANG GADAIAN PADA '.$t_lelongf1.'*
Nama: *'.$nama.'*
No.KP: *'.$suratnotis->nokp.'*'.'
No.Rujukan: *'.$suratnotis->norujukan.'*
Cawangan: *'.$cawname.'*
Waktu Lelong: *10.30Pagi*
Tuan/Puan adalah dikehendaki untuk membuat urusan berikut dikaunter cawangan pada atau sebelum *'.$datez.'*:-
'.$para2blast.'.
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')
]);
Log::info("WABOT - Notis Lelongan Fasa 2" . $response);
}
sleep(2);
}
}
}
@@ -791,6 +791,11 @@
<a href="{{url('parameter/kemaskininotis')}}">Notis Lelong</a>
</li>
</ul>
<ul class="list-unstyled collapse {{ (request()->is('parameter/*')) ? 'show' : '' }}" id="parameterSubmenu">
<li class="{{ (request()->is('parameter/kemaskininotislelwabot/*') || request()->is('parameter/kemaskininotislelwabot') ) ? 'active' : '' }}">
<a href="{{url('parameter/kemaskininotislelwabot')}}">Notis Lelong(Whatsapp)</a>
</li>
</ul>
<ul class="list-unstyled collapse {{ (request()->is('parameter/*')) ? 'show' : '' }}" id="parameterSubmenu">
<li class="{{ (request()->is('parameter/kemaskininotistuntutbaki/*') || request()->is('parameter/kemaskininotistuntutbaki') ) ? 'active' : '' }}">
<a href="{{url('parameter/kemaskininotistuntutbaki')}}">Notis Tuntut Baki</a>
@@ -45,9 +45,10 @@
<a class="btn m-1 btn-primary" href="{{ route('jananotis.senarainotis',$bid->lelong_id) }}" data-toggle="tooltip" data-placement="top" title="Butiran Senarai Notis" ><i class="far fa-edit"></i></a>
@if($bid->fasa == '1')
<a class="confirmrefresh btn m-1 btn-warning" href="{{ route('jananotis.jananotis',$bid->lelong_id) }}" data-toggle="tooltip" data-placement="top" title="Muat Turun Jana Notis Fasa 1" style="margin-right:40px" ><i class="fas fa-download"></i></a>
<a class="confirmrefresh btn m-1 btn-success" href="{{ route('jananotis.blastnotislelongfasa1',$bid->lelong_id) }}" data-toggle="tooltip" data-placement="top" title="Blast Whatsapp Fasa 1" style="margin-right:40px" ><i class="fas fa-phone"></i></a>
@elseif($bid->fasa == '2')
<a class="confirmrefresh btn m-1 btn-warning" href="{{ route('jananotis.jananotisfasa2',$bid->lelong_id) }}" data-toggle="tooltip" data-placement="top" title="Muat Turun Jana Notis Fasa 2" style="margin-right:40px" ><i class="fas fa-download"></i></a>
<a class="confirmrefresh btn m-1 btn-success" href="{{ route('jananotis.blastnotislelongfasa2',$bid->lelong_id) }}" data-toggle="tooltip" data-placement="top" title="Blast Whatsapp Fasa 2" style="margin-right:40px" ><i class="fas fa-phone"></i></a>
@endif
</td>
@@ -0,0 +1,117 @@
@extends('layouts.app')
@section('content')
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.10/css/select2.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.10/js/select2.min.js"></script>
<script src="https://cdn.ckeditor.com/4.16.2/standard/ckeditor.js"></script>
<div class="container-fluid">
<div class="row ">
<div class="col-md-12 mx-auto card">
<h3 class="pt-3">Kemaskini Notis Lelong Fasa 1 (Whatsapp)</h3>
@if ($message = Session::get('failed'))
<div class="alert alert-danger">
<p>{{ $message }}</p>
</div>
@endif
<form action="{{route('parameter.storepara2blast')}}" method="POST">
@csrf
@foreach($tetapan as $notis)
{{-- {{dd($notis->para2)}} --}}
<div class="form-group row">
<div class="col-sm-4" id="para2blast">
<textarea name="para2blast" rows="6" cols="150">
{{$notis->para2blast}}
</textarea>
</div>
</div>
<div class="form-group row">
<div class="col-sm-10">
<button type="submit" class="btn btn-primary">Simpan</button>
</div>
</div>
@endforeach
</form>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row ">
<div class="col-md-12 mx-auto card">
<h3 class="pt-3">Kemaskini Notis Lelong Fasa 2 (Whatsapp)</h3>
@if ($message = Session::get('failed'))
<div class="alert alert-danger">
<p>{{ $message }}</p>
</div>
@endif
<form action="{{route('parameter.storepara3blast')}}" method="POST">
@csrf
@foreach($tetapan as $notis)
{{-- {{dd($notis->para2)}} --}}
<div class="form-group row">
<div class="col-sm-4" id="para3blast">
<textarea name="para3blast" rows="6" cols="150">
{{$notis->para3blast}}
</textarea>
</div>
</div>
<div class="form-group row">
<div class="col-sm-10">
<button type="submit" class="btn btn-primary">Simpan</button>
</div>
</div>
@endforeach
</form>
</div>
</div>
</div>
<script>
CKEDITOR.replace( 'article-ckeditor', {
height: 400,
width: 1500
} );
</script>
<script>
CKEDITOR.replace( 'article-ckeditor2', {
height: 400,
width: 1500
} );
</script>
<script>
$('#caw').select2({
width: '100%',
placeholder: "Pilih Cawangan",
allowClear: true
});
$(document).ready(function () {
$("input[name=fasa]").change(function(){
if($("#fasa1").is(':checked')){
$("#jbg").val('').prop("readonly", false);
}
if($("#fasa2").is(':checked')){
$("#jbg").val('12').prop("readonly", true);
}
});
});
</script>
@endsection
+8
View File
@@ -514,6 +514,10 @@ Route::group(['middleware' => ['permission:jananotis'],'prefix'=>'jananotis'], f
Route::get('/senaraituntutbaki/{lelongid}/{cawid}', ['as'=>'jananotis.senaraituntutbaki','uses'=>'NotisController@senaraituntutbaki']);
Route::get('/surattuntutbakipdf/{lelong_id}',['as'=>'jananotis.surattuntutbakipdf','uses'=>'NotisController@surattuntutbakipdf']);
Route::get('/blastnotistuntutbaki/{lelong_id}/{caw_id}',['as'=>'jananotis.blastnotistuntutbaki','uses'=>'NotisController@blastnotistuntutbaki']);
Route::get('/blastnotislelongfasa1/{lelong_id}',['as'=>'jananotis.blastnotislelongfasa1','uses'=>'NotisController@blastnotislelongfasa1']);
Route::get('/blastnotislelongfasa2/{lelong_id}',['as'=>'jananotis.blastnotislelongfasa2','uses'=>'NotisController@blastnotislelongfasa2']);
});
//Report
@@ -689,6 +693,10 @@ Route::group(['middleware' => ['permission:parameter'],'prefix'=>'parameter'], f
Route::get('/listnotistuntutbaki',['as' =>'parameter.listnotistuntutbaki','uses'=>'NotisController@listnotistuntutbaki']);
Route::get('/listnotistuntutbakidetail/{cawid}',['as'=>'parameter.listnotistuntutbakidetail','uses'=>'NotisController@listnotistuntutbakidetail']);
Route::get('/senaraituntutbaki/{lelongid}/{cawid}', ['as'=>'parameter.senaraituntutbaki','uses'=>'NotisController@senaraituntutbaki']);
Route::get('/kemaskininotislelwabot',['as'=>'parameter.kemaskininotislelwabot','uses'=>'NotisController@kemaskininotislelwabot']);
Route::post('/storepara2blast',['as'=>'parameter.storepara2blast','uses'=>'NotisController@storepara2blast']);
Route::post('/storepara3blast',['as'=>'parameter.storepara3blast','uses'=>'NotisController@storepara3blast']);
});
Route::group(['middleware' => ['permission:WTD'],'prefix'=>'wtd'], function () {