diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index 77e76d4b..dda65f4b 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -15,9 +15,21 @@ use App\Models\LelongBid; use App\Models\LelongBidder; use App\Models\Resit; use App\Models\FileResit; +use App\Services\ResitPhotoService; +use App\Models\FileMarhun; +use App\Services\MarhunPhotoService; class AccountController extends Controller { + private $resitPhotoService; + private $marhunPhotoService; + + public function __construct(ResitPhotoService $resitPhotoService, MarhunPhotoService $marhunPhotoService) + { + $this->middleware('auth'); + $this->resitPhotoService = $resitPhotoService; + $this->marhunPhotoService = $marhunPhotoService; + } public function senarailelongan(){ @@ -485,4 +497,144 @@ class AccountController extends Controller return view('account.listbayaranonlinesah',compact('listwinner','lelong_id', 'getkodcaw', 'kodcaw')); } + + public function sahsagcdm($lelong_id, $user_id, $caw_code) + { + $userdetails = User::where('id', $user_id)->first(); + + $senaraisag = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id') + ->join('payment', 'lelongbidder.payment_id', '=', 'payment.id') + ->join('resit', 'payment.resit_id', '=', 'resit.id') + ->where('lelongbid.lelong_id', $lelong_id) + ->where('lelongbidder.user_id', $userdetails['id']) + ->where('lelongbid.kodcaw', $caw_code) + ->where('lelongbidder.status_bidder', 1) + // ->where('payment.status_payment_opt', 3) + // ->orWhere('payment.status_payment_opt', 2) + ->where('lelongbidder.status_payment', 2) + ->select('lelongbidder.id as lelongbidder_id', + 'lelongbidder.user_id', + 'lelongbidder.hargabida', + 'lelongbidder.status_bidder', + 'lelongbidder.status_payment', + 'lelongbidder.masa_bidaan', + 'lelongbid.id as lelongbid_id', + 'lelongbid.lelong_id', + 'lelongbid.caw_id', + 'lelongbid.kodcaw', + 'lelongbid.norujukan', + 'lelongbid.t_lelong', + 'lelongbid.hargaasas', + 'lelongbid.hargajual', + 'lelongbid.t_jual', + 'lelongbid.status_jual', + 'lelongbid.status_payment as sts_payment_lelbid', + 'lelongbid.status_semak', + 'payment.id as payment_id', + 'payment.remark', + 'payment.kodcaw', + 'payment.status_payment_opt', + 'payment.resit_id', + 'payment.status', + 'payment.remark', + 'payment.total_payment', + 'payment.disahkan_pada', + 'payment.disahkan_oleh', + 'resit.reference_no' + ) + ->get(); + + foreach($senaraisag as $index1=>$sag) + { + + if($sag) + { + // dd($sag); + $checking = Payment::join('lelongbid', 'payment.lelong_id', '=', 'lelongbid.lelong_id') + ->where('payment.id', $sag['payment_id']) + ->where('lelongbid.status_jual', 1) + ->where('payment.kodcaw', $caw_code) + ->where('lelongbid.status_payment', 1) + ->whereNotNull('payment.disahkan_pada') + ->whereNotNull('payment.disahkan_pada') + ->first(); + + + $noresit = Resit::where('lelong_id',$lelong_id) + ->where('user_id','=',$user_id) + ->first(); + + $senaraisag[$index1]['checking_payment'] = $checking; + // dd($checking); + } + else + { + // + } + } + + $saggroupbyid = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id') + ->join('payment', 'lelongbidder.payment_id', '=', 'payment.id') + ->where('lelongbid.lelong_id', $lelong_id) + ->where('lelongbidder.user_id', $user_id) + ->where('lelongbid.kodcaw', $caw_code) + ->where('lelongbidder.status_bidder', 1) + ->where('payment.status_payment_opt', 3) + ->orWhere('payment.status_payment_opt', 2) + ->where('lelongbidder.status_payment', 2) + ->select( + 'lelongbidder.payment_id as payment_id' + ) + ->groupBy('lelongbidder.payment_id') + ->get(); + // $payments = Payment::whereIn($saggroupbyid)->get() + $total_payment = Payment::whereIn('id',$saggroupbyid)->sum('total_payment'); + + // $getresit = FileResit::join('payment', 'fileresit.payment_id', '=', 'payment.id') + // ->where('payment.lelong_id', $lelong_id) + // ->where('payment.user_id', $user_id) + // ->where('payment.kodcaw', $caw_code) + // ->get()->toArray(); + + // $array_resit = []; + // foreach($getresit as $index1=>$resit) + // { + // $getresit[$index1]['resit64'] = 'data:image/' . $resit['file_type'] . ';base64' . base64_encode($resit['filename']); + // } + + $fileresit = FileResit::where('lelong_id', $lelong_id) + ->where('user_id', $user_id) + ->where('photo_type', '=', '1') + ->get(); + // dd($fileresit); + foreach ($fileresit as $index => $itemresit) { + // dd($itemresit); + + if (isset($itemresit)) { + $itemresit->fileresit_filename = true; + $itemresit->fileresit_id = $itemresit->id; + } + $fileresit[$index]['itemresit'] = $itemresit->fileresit_id; + } + // $lelongbid = LelongBid::where('id', '=', $sag->lelongbid_id)->first(); + // $filemarhun = FileMarhun::where('lelongbid_id', '=', $lelongbid['id']) + // ->where('photo_type', '=', '1') + // ->first(); + // // dd($filemarhun); + // if (isset($filemarhun)) { + // $lelongbid->filemarhun_filename = true; + // $lelongbid->filemarhun_id = $filemarhun->id; + // } + + + return view('account.sahsagcdm', compact('senaraisag', 'lelong_id', 'user_id', 'total_payment', 'caw_code', 'userdetails', 'fileresit')); + } + + public function showPhotoResit(Request $request) + { + $resit = FileResit::where('id', '=', $request->fileresit_id)->first(); + // dd($this->resitPhotoService->show($request->user_id, $resit)); + return $this->resitPhotoService->show($request->user_id, $resit); + } + } diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 98368cfd..586418f0 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -113,7 +113,7 @@ class HomeController extends Controller ->join('lelongbid','lelongbid.norujukan','=','pengesahan.norujukan') // ->where('sts_lelong', 0) ->where('lelongbid.kodcaw', $user->kodcaw) - ->whereIn('pengesahan.status_ubah', [1,2,3,4,5]) + ->whereIn('pengesahan.status_ubah', [1,2,3,4,5,7,8,9,10]) ->where('disahkan_oleh','=', NULL) ->select('pengesahan.lelong_id','lelong.id','lelong.tarikh_lelong','lelong.masatamat_lelong','lelong.harga_emas_asas','lelong.jbg','lelong.cajlelong','sts_lelong') // ->groupBy('pengesahan.lelong_id') @@ -272,10 +272,7 @@ class HomeController extends Controller // ->where('lelongbidder.status_payment', 2) ->where('payment.status', 2) ->whereNull('payment.disahkan_pada') - ->orWhere(function ($query) { - $query->where('payment.status_payment_opt', 3) - ->where('payment.status_payment_opt', 2); - }) + ->where('payment.status_payment_opt', 2) ->select('lelongbidder.user_id', 'payment.user_id') ->groupBy('lelongbidder.user_id', 'payment.user_id') ->get(); @@ -327,10 +324,103 @@ class HomeController extends Controller array_push($arrayinfoaccount,['detail'=>$details, 'detailsinfo'=>$detailsinfo, 'listwinner'=>$listwinner]); } + + $arrayinfoaccountcdm = []; + $listwinnercdm = []; + $dateTimedummy = date('2022-12-14'); + + $senaraicdm = Lelong::join('cawangan_lelong','lelong.id','=','cawangan_lelong.lelong_id') + ->select('lelong_id','tarikh_lelong','lelong.fasa','sts_lelong') + ->distinct() + ->orderBy('lelong_id') + ->where('lelong.sts_lelong', 3) + ->where('tarikh_lelong', '=', $dateTimedummy) + ->get() + ->toArray(); + // dd($senarai); + + foreach($senaraicdm as $detailscdm) + { + // dd($details['lelong_id']); + $detailsinfocdm = CawanganLelong::join('cawangan','cawangan_lelong.caw_id','=','cawangan.id') + ->select('cawangan_lelong.lelong_id','cawangan_lelong.caw_id','caw_name','cawangan.caw_code','cawangan_lelong.export_data_sts') + ->where('lelong_id',$detailscdm['lelong_id']) + ->distinct() + ->orderBy('lelong_id') + ->get(); + + // dd($detailsinfo); + foreach($detailsinfocdm as $index1=>$details1cdm) + { + // dd($details1['caw_code']); + $listwinnercdm = Payment::join('lelongbid', 'payment.kodcaw', '=', 'lelongbid.kodcaw') + ->join('lelongbidder', 'payment.id', '=', 'lelongbidder.payment_id') + ->where('lelongbidder.status_bidder', 1) + ->where('lelongbid.lelong_id', $details1cdm['lelong_id']) + ->where('payment.kodcaw', $details1cdm['caw_code']) + // ->where('lelongbidder.status_payment', 2) + ->where('payment.status', 2) + ->whereNull('payment.disahkan_pada') + ->where('payment.status_payment_opt', 3) + // ->orWhere(function ($query) { + // $query->where('payment.status_payment_opt', 3); + + // }) + ->select('lelongbidder.user_id', 'payment.user_id') + ->groupBy('lelongbidder.user_id', 'payment.user_id') + ->get(); + + // dd($listwinner); + foreach($listwinnercdm as $index=>$listwincdm) + { + $namawinnercdm = User::where('id', $listwincdm['user_id']) + ->first(); + $total_paymentcdm = 0; + $userdetailscdm = User::where('id', $listwincdm['user_id'])->first(); + $SAGWincdm = LelongBidder::join('lelongbid', 'lelongbidder.lelongbid_id', '=', 'lelongbid.id') + ->where('lelongbid.nopembeli', $listwincdm['user_id']) + ->where('lelongbid.kodcaw', $listwincdm['kodcaw']) + ->where('lelongbidder.status_bidder', 1) + ->where('lelongbid.lelong_id', $listwincdm['lelong_id']) + ->get(); + foreach($SAGWincdm as $index2=>$sagcdm) + { + // dd($detailspayment); + $detailspaymentcdm = null; + if($sagcdm['payment_id'] != null) + { + $detailspaymentcdm = Payment::where('id', $sagcdm['payment_id'])->first(); + $total_paymentcdm = $total_payment + $detailspaymentcdm->total_payment; + // dd($total_payment); + }else + { + $total_paymentcdm = '0.00'; + } + $listwinnercdm[$index]['jenisbayaran'] = $detailspaymentcdm ; + + } + // dd($namawinner); + // $listwinner[$index]['namawinner'] = sizeof($namawinner); + $listwinnercdm[$index]['details'] = $userdetailscdm; + $listwinnercdm[$index]['nama'] = $userdetailscdm['name']; + $listwinnercdm[$index]['caw_code'] = $details1cdm['caw_code']; + $listwinnercdm[$index]['totalPay'] = $total_paymentcdm; + $detailsinfocdm[$index1]['nama'] = $userdetailscdm; + + } + // $detailsinfo[$index1]['nama'] = $namawinner['name']; + $detailsinfocdm[$index1]['listwinner'] = $listwinnercdm; + // dd($listwinner[$index]['nama']); + } + + + + array_push($arrayinfoaccountcdm,['detailcdm'=>$detailscdm, 'detailsinfocdm'=>$detailsinfocdm, 'listwinnercdm'=>$listwinnercdm]); + } //endpaparan untuk account page - return view('home',compact('all_lelong','lelongmutu', 'arrayinfomutu','arrayinfo','sag','semakCountArray','arrayinfomenang','arrayinfoaccount')); + return view('home',compact('all_lelong','lelongmutu', 'arrayinfomutu','arrayinfo','sag','semakCountArray','arrayinfomenang','arrayinfoaccount','arrayinfoaccountcdm')); } diff --git a/app/Models/FileResit.php b/app/Models/FileResit.php index 31e5a576..04cbec24 100644 --- a/app/Models/FileResit.php +++ b/app/Models/FileResit.php @@ -12,6 +12,9 @@ class FileResit extends Model protected $table = 'fileresit'; protected $fillable = [ + 'user_id', + 'lelong_id', + 'payment_id', 'file_type', 'filename', 'deleted_at', diff --git a/app/Services/ResitPhotoService.php b/app/Services/ResitPhotoService.php new file mode 100644 index 00000000..82b8677a --- /dev/null +++ b/app/Services/ResitPhotoService.php @@ -0,0 +1,168 @@ +gambarMarhun->getClientOriginalExtension(); + } catch (Exception $exception) { + $file_type = 'PNG'; + logger($exception); + } + + $addfile = new FileResit(); + $addfile->lelong_id = $request->lelong_id; + $addfile->file_type = $file_type; + if ($request->photo_type == 1) { + $addfile->photo_type = 1; + $addfile->save(); + } elseif ($request->photo_type == 2) { + $addfile->photo_type = 2; + $addfile->lelong_id = $request->lelong_id; + $addfile->save(); + } + + $user_id = LelongBid::select('norujukan')->where('id', $request->lelongbid_id)->first()->norujukan; + $photo_type_name = $request->photo_type === '1' ? 'overall_photo' : 'by_marhun_photo'; + + $directory = "/{$user_id}/{$photo_type_name}/"; + $imageExtension = $file_type; + + $resitImageFileName = "overall"; + + + if (!empty($request->lelongbidmarhun_id)) { + $resitImageFileName = "$request->lelongbidmarhun_id"; + } + + Storage::disk('resit')->putFileAs($directory, $request->gambarMarhun, "${resitImageFileName}.${imageExtension}"); + $stored_path = Storage::disk('marhun')->path("{$directory}{$resitImageFileName}.${imageExtension}"); + + $this->optimizeImageToWebP($stored_path, $directory, $resitImageFileName); + + Storage::disk('resit')->delete("{$directory}${resitImageFileName}.${imageExtension}"); + + $addfile->update([ + 'file_type' => 'webp', + ]); + } + + public function delete(Request $request) + { + $deleteFile = FileResit::where('id', '=', $request->fileresit_id)->first(); + + $user_id = User::select('user_id')->where('id', $request->lelongbid_id)->first()->norujukan; + $photo_type_name = $request->photo_type === '1' ? 'overall_photo' : 'by_marhun_photo'; + + $directory = "/{$user_id}/{$photo_type_name}/"; + $imageExtension = $deleteFile->file_type; + + $resitImageFileName = "overall.{$imageExtension}"; + + $lelongbidmarhun_id = $deleteFile->lelongbidmarhun_id; + + if (!empty($request->lelongbidmarhun_id)) { + $resitImageFileName = "$lelongbidmarhun_id.$imageExtension"; + } + + Storage::disk('marhun')->delete("{$directory}${resitImageFileName}"); + $deleteFile->delete(); + } + + public function show($user_id, $resit) + { + $DS = DIRECTORY_SEPARATOR; + $lelong_id = $resit->lelong_id; + $fileresit_id = $resit->id; + // dd($fileresit_id);; + + // $photo_type_name = $marhun->photo_type === 1 ? 'overall_photo' : 'by_marhun_photo'; + + $directory = $user_id.$DS.$lelong_id.$DS; + // dd($directory); + $imageExtension = $resit->file_type; + // dd($imageExtension); + + // $resitImageFileName = "{$fileresit_id}.{$imageExtension}"; + + if (!empty($fileresit_id)) { + $resitImageFileName = "$fileresit_id.$imageExtension"; + // dd($resitImageFileName); + } + + $filePath = Storage::disk('resit')->path($directory.$resitImageFileName); + // $filePath = 'C:\laragon\www\lelong2\storage\app\resit\20\2\1.webp'; + // dd($filePath); + + // header('Content-Type: ' . mime_content_type($filePath)); + header('Content-Disposition: inline; filename="' . basename($filePath) . '"'); + readfile($filePath); + // dd($filePath); + } + + public function get($user_id, $resit) + { + $lelong_id = $resit->lelong_id; + $fileresit_id = $resit->id; + + // $photo_type_name = $marhun->photo_type === 1 ? 'overall_photo' : 'by_marhun_photo'; + + $directory = "/{$user_id}/{$lelong_id}/"; + $imageExtension = $resit->file_type; + + $resitImageFileName = "overall.{$imageExtension}"; + + if (!empty($fileresit_id)) { + $resitImageFileName = "overall.$imageExtension"; + } + + return Storage::disk('marhun')->get("{$directory}${resitImageFileName}"); + } + + + private function getWebpCompilerByOS() + { + $DS = DIRECTORY_SEPARATOR; + + $cwebp_compilers = [ + 'Windows' => 'binaries' . $DS . 'libwebp-1.2.4-windows-x64' . $DS . 'bin' . $DS . 'cwebp', + 'Linux' => 'binaries' . $DS . 'libwebp-1.2.4-linux-x86-64' . $DS . 'bin' . $DS .'cwebp', + 'Darwin' => [ + 'X86-64' => 'binaries' . $DS . 'libwebp-1.2.4-mac-X86-64' . $DS . 'bin' . $DS . 'cwebp', + 'arm64' => 'binaries' . $DS . 'libwebp-1.2.4-mac-arm64' . $DS . 'bin' . $DS .'cwebp', + ], + ]; + + $server_operating_system = explode(' ', trim(php_uname()))[0]; + $server_processor_architecture = trim(php_uname('m')); + + if ($server_operating_system === 'Darwin') { + return resource_path($cwebp_compilers['Darwin'][$server_processor_architecture]); + } + + if (in_array($server_operating_system, array_keys($cwebp_compilers))) { + return resource_path($cwebp_compilers[$server_operating_system]); + } + } + + private function optimizeImageToWebP($originalFilePath, $directory, $lelongbidmarhun_id) + { + $convertedFilePath = config('filesystems.disks.resit.root') . '/' . "{$directory}{$lelongbidmarhun_id}.webp"; + + $webpCompiler = $this->getWebpCompilerByOS(); + + exec($webpCompiler . ' -preset photo ' . ' -resize 1280 720 ' . ' -mt ' . $originalFilePath . ' -o ' . $convertedFilePath); + } +} diff --git a/config/filesystems.php b/config/filesystems.php index a03e7814..436d1c7f 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -42,6 +42,13 @@ return [ 'visibility' => 'public', ], + 'resit' => [ + 'driver' => 'local', + 'root' => storage_path('app'.DIRECTORY_SEPARATOR.'resit'), + 'url' => env('APP_URL').'/resit_photo', + 'visibility' => 'public', + ], + 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), diff --git a/resources/views/account/sahsagcdm.blade.php b/resources/views/account/sahsagcdm.blade.php new file mode 100644 index 00000000..53dfd65a --- /dev/null +++ b/resources/views/account/sahsagcdm.blade.php @@ -0,0 +1,233 @@ +@extends('layouts.app') + + + +@section('content') + +
{{ $message }}
+Nama Pembida : {{ $userdetails['name'] }}
+No Kad Pengenalan : {{ $userdetails['nokp'] }}
+No Telefon : {{ $userdetails['notelbimbit'] }}
+ {{--No Resit: {{ $noresit['reference_no'] }}
--}} +{{ $message }}
diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 8983eda1..b5166690 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -469,46 +469,56 @@ @endforelse @endforeach - {{--