diff --git a/app/Classes/Jobs/Commands/V2/EmailDoToVTV2CommandJob.php b/app/Classes/Jobs/Commands/V2/EmailDoToVTV2CommandJob.php index 555f1f56..2c4bf7d1 100644 --- a/app/Classes/Jobs/Commands/V2/EmailDoToVTV2CommandJob.php +++ b/app/Classes/Jobs/Commands/V2/EmailDoToVTV2CommandJob.php @@ -37,38 +37,80 @@ class EmailDoToVTV2CommandJob implements ShouldQueue $startDate = Carbon::yesterday(); $endDate = Carbon::yesterday(); - $zip = new ZipArchive(); - if ($zip->open($attachment, ZIPARCHIVE::CREATE | ZipArchive::OVERWRITE)) { + $bookings = \App\Models\Booking::where('status', ApprovalStatus::COMPLETED)->whereDate('updated_at', '>=', $startDate)->whereDate('updated_at', '<=', $endDate) + ->whereHas('transactions', function ($query){ + return $query->where('type', TransactionType::PAYMENT)->whereHas('transactions', function ($query){ + return $query->where('issuer', 2); + }); + })->get(); - $bookings = \App\Models\Booking::where('status', ApprovalStatus::COMPLETED)->whereDate('updated_at', '>=', $startDate)->whereDate('updated_at', '<=', $endDate) - ->whereHas('transactions', function ($query){ - return $query->where('type', TransactionType::PAYMENT)->whereHas('transactions', function ($query){ - return $query->where('issuer', 2); - }); - })->get(); + if(!count($bookings)){ return; } - if(!count($bookings)){ return; } + $filesystemDriver = Storage::getDefaultDriver(); + if($filesystemDriver === 's3'){ + $zip = new ZipArchive(); + if ($zip->open($attachment, ZIPARCHIVE::CREATE | ZipArchive::OVERWRITE)) { + //STEP 1: Go through each of the booking from query + foreach ($bookings as $booking) { + $file = $booking->documents()->where('document_type', DocumentType::SUPPLIER_DELIVER_ORDER)->first()->files()->first(); + $fileContent = Storage::disk('s3')->get('documents/'.$file->file->file_info->original->file); + $zip->addFromString($booking->created_at->format('d_m_Y') . '_' . $booking->marking . '.pdf', $fileContent); + } - foreach ($bookings as $booking) { - $file = $booking->documents()->where('document_type', DocumentType::SUPPLIER_DELIVER_ORDER)->first()->files()->first(); - $zip->addFile(Storage::disk('documents')->path($file->file->file_info->original->file), $booking->created_at->format('d_m_Y').'_'.$booking->marking.'.pdf'); + $zip->close(); + + //STEP 2: Upload the zip file to S3 + $filePathForS3 = 'collections/'.$zip_file; + Storage::disk('s3')->put($filePathForS3, file_get_contents($attachment)); + + Log::info('DownloadBookingDocumentLogic finished processing files to zip count: '.count($bookings)); + + $temporaryUrl = Storage::disk('s3')->temporaryUrl( + $filePathForS3, + Carbon::now()->addMinutes(10) + ); + + //STEP 3: Send Email + Mail::raw( "Attention to VT Admin team:\r\n\r\nKindly refer to the attachment for our DAILY DO COMPILATION ".$startDate->format('d-m-Y')." - ".$endDate->format('d-m-Y').".\r\n\r\n**This is an automatically generated email – please do not reply to it. If you have any queries kindly contact our admin team through Wechat.\r\n\r\n\r\nCIEF WORLDWIDE SDN BHD", function($message) use ($attachment, $startDate, $endDate){ + $message->from('exchange@cief-malaysia.com'); + $message->to(['vtnation16@gmail.com', 'vtnation@gmail.com', 'atvantic04@gmail.com', 'vtnation2@gmail.com']); + $message->cc(['shafiqa_sukeri@cief-malaysia.com', 'frontendcief@gmail.com', 'pm@cief-malaysia.com', 'hasan@cief-malaysia.com', 'shipping_admin@cief-malaysia.com', 'hasanakbar27@gmail.com', 'pmwong2019@gmail.com', 'uldvstar@gmail.com']); + $message->subject('CIEF DO COMPILATION '.$startDate->format('d-m-Y').' - '.$endDate->format('d-m-Y')); + + $message->attach($attachment); + }); + + File::delete($attachment); + Log::info('success'); + + //STEP 4. No Response needed because this is a job + //return response(['src' => $temporaryUrl ]); + } + } + else{ + $zip = new ZipArchive(); + if ($zip->open($attachment, ZIPARCHIVE::CREATE | ZipArchive::OVERWRITE)) { + + foreach ($bookings as $booking) { + $file = $booking->documents()->where('document_type', DocumentType::SUPPLIER_DELIVER_ORDER)->first()->files()->first(); + $zip->addFile(Storage::disk('documents')->path($file->file->file_info->original->file), $booking->created_at->format('d_m_Y').'_'.$booking->marking.'.pdf'); + } + + $zip->close(); + + Mail::raw( "Attention to VT Admin team:\r\n\r\nKindly refer to the attachment for our DAILY DO COMPILATION ".$startDate->format('d-m-Y')." - ".$endDate->format('d-m-Y').".\r\n\r\n**This is an automatically generated email – please do not reply to it. If you have any queries kindly contact our admin team through Wechat.\r\n\r\n\r\nCIEF WORLDWIDE SDN BHD", function($message) use ($attachment, $startDate, $endDate){ + $message->from('exchange@cief-malaysia.com'); + $message->to(['vtnation16@gmail.com', 'vtnation@gmail.com', 'atvantic04@gmail.com', 'vtnation2@gmail.com']); + $message->cc(['shafiqa_sukeri@cief-malaysia.com', 'frontendcief@gmail.com', 'pm@cief-malaysia.com', 'hasan@cief-malaysia.com', 'shipping_admin@cief-malaysia.com', 'hasanakbar27@gmail.com', 'pmwong2019@gmail.com', 'uldvstar@gmail.com']); + $message->subject('CIEF DO COMPILATION '.$startDate->format('d-m-Y').' - '.$endDate->format('d-m-Y')); + + $message->attach($attachment); + }); + + File::delete($attachment); + Log::info('success'); } - - $zip->close(); - - Mail::raw( "Attention to VT Admin team:\r\n\r\nKindly refer to the attachment for our DAILY DO COMPILATION ".$startDate->format('d-m-Y')." - ".$endDate->format('d-m-Y').".\r\n\r\n**This is an automatically generated email – please do not reply to it. If you have any queries kindly contact our admin team through Wechat.\r\n\r\n\r\nCIEF WORLDWIDE SDN BHD", function($message) use ($attachment, $startDate, $endDate){ - $message->from('exchange@cief-malaysia.com'); - $message->to(['vtnation16@gmail.com', 'vtnation@gmail.com', 'atvantic04@gmail.com', 'vtnation2@gmail.com']); - $message->cc(['shafiqa_sukeri@cief-malaysia.com', 'frontendcief@gmail.com', 'pm@cief-malaysia.com', 'hasan@cief-malaysia.com', 'shipping_admin@cief-malaysia.com', 'hasanakbar27@gmail.com', 'pmwong2019@gmail.com', 'uldvstar@gmail.com']); - $message->subject('CIEF DO COMPILATION '.$startDate->format('d-m-Y').' - '.$endDate->format('d-m-Y')); - - $message->attach($attachment); - }); - - File::delete($attachment); - Log::info('success'); - } $end = new Carbon(); diff --git a/resources/assets/vue/components/bookings/elements/BillingComponent.vue b/resources/assets/vue/components/bookings/elements/BillingComponent.vue index f24078ed..ba1ce85c 100644 --- a/resources/assets/vue/components/bookings/elements/BillingComponent.vue +++ b/resources/assets/vue/components/bookings/elements/BillingComponent.vue @@ -85,9 +85,9 @@ export default { supplier: null }, documents: [ - 'INVOICE', - 'PURCHASE_ORDER', - 'DELIVER_ORDER', + 'INVOICE', + 'PURCHASE_ORDER', + 'DELIVER_ORDER', 'SUPPLIER_DELIVER_ORDER', 'INVOICE + PO + DO', 'INVOICE + PO + DO + SDO' @@ -112,12 +112,24 @@ export default { methods: { submitSearch(){ if(!this.validate()){ return; } - window.open(route('documents.download')+'?type='+this.parameters.type+'&startDate='+this.parameters.startDate+'&endDate='+this.parameters.endDate+'&supplier='+this.parameters.supplier, '_blank'); + if(window.LARAVEL_VAPOR_ENABLED){ + this.submit(this.route('documents.download')+'?type='+this.parameters.type+'&startDate='+this.parameters.startDate+'&endDate='+this.parameters.endDate+'&supplier='+this.parameters.supplier, 'get', this.section, false, false); + } + else{ + window.open(route('documents.download')+'?type='+this.parameters.type+'&startDate='+this.parameters.startDate+'&endDate='+this.parameters.endDate+'&supplier='+this.parameters.supplier, '_blank'); + } }, updateDocumentType(documentType) { this.parameters.type = documentType; this.selectedDocumentStatus = !this.selectedDocumentStatus - } + }, + successHandler(response) { + if(window.LARAVEL_VAPOR_ENABLED){ + if (response.src) { + window.location.href = response.src; + } + } + }, }, mixins: [componentHandler] };