105 lines
4.0 KiB
PHP
105 lines
4.0 KiB
PHP
<?php
|
|
|
|
namespace App\Console\Commands;
|
|
|
|
use Illuminate\Console\Command;
|
|
use Illuminate\Support\Facades\DB;
|
|
use App\Http\Requests\LambdaRequest;
|
|
use Illuminate\Support\Facades\Http;
|
|
use Log;
|
|
|
|
class GenerateZips extends Command
|
|
{
|
|
/**
|
|
* The name and signature of the console command.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $signature = 'assets:generatezip';
|
|
|
|
/**
|
|
* The console command description.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $description = 'Command description';
|
|
|
|
/**
|
|
* Create a new command instance.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
}
|
|
|
|
/**
|
|
* Execute the console command.
|
|
*
|
|
* @return int
|
|
*/
|
|
|
|
|
|
public function handle()
|
|
{
|
|
$job = DB::table("export_jobs")->where('status', 'created')->where('type', 'tentcard')->first();
|
|
if(!is_null($job)) {
|
|
$contacts = DB::table("contacts")->select('id', 'name', 'contact_id', 'user_id', 'employee_code', 'rep_name', 'position_name', 'depot_name')->where('status', 0)->whereBetween('created_date', [date("Y-m-d H:i:s", strtotime($job->start_date) + 19800 ), date("Y-m-d H:i:s", strtotime($job->end_date) + 19800 ) ])->get();
|
|
|
|
$users = [];
|
|
$depots = [];
|
|
foreach($contacts as $contact) {
|
|
if(!isset($users[$contact->user_id])) {
|
|
$users[$contact->user_id]['userinfo'] = ['name' => $contact->rep_name, 'employee_code' => $contact->employee_code, 'position_name' => $contact->position_name];
|
|
$users[$contact->user_id]['contacts'] = [];
|
|
}
|
|
if( !in_array($contact->name, $users[$contact->user_id]['contacts']) ) {
|
|
$users[$contact->user_id]['contacts'][] = $contact->name;
|
|
}
|
|
//if(!array_key_exists($contact->user_id, $depots) ){
|
|
$depots[$contact->employee_code] = $contact->depot_name;
|
|
//}
|
|
}
|
|
|
|
print_r($depots);
|
|
$zips = [];
|
|
$folder = storage_path('app/public/'.$job->type);
|
|
foreach($users as $user_id => $user) {
|
|
$files = [];
|
|
if( isset($user['contacts']) && sizeof($user['contacts']) > 0 ) {
|
|
foreach($user['contacts'] as $cont) {
|
|
$fileName = str_replace(' ', '_', $user['userinfo']['employee_code']).'-'.str_replace(' ', '_', $cont).($job->type=='tentcard'?'-Tent-Standee.pdf':'-Sticker.pdf') ;
|
|
if(file_exists($folder .'/'. $fileName)) {
|
|
$files[] = $fileName;
|
|
}
|
|
}
|
|
}
|
|
$zipName = $user['userinfo']['position_name'].'-'.$user['userinfo']['employee_code'].'-'.$user['userinfo']['name'].'.zip';
|
|
$zips[ $depots[ $user['userinfo']['employee_code'] ] ][] = $zipName;
|
|
//print_r('cd '.$folder.'; zip "zips/'.$zipName.'" ' . implode(' ', $files));
|
|
exec('cd '.$folder.'; zip "zips/'.$zipName.'" ' . implode(' ', $files));
|
|
}
|
|
$zipNames = [];
|
|
// $zipss = array_chunk($zips, 100);
|
|
foreach($zips as $depot => $zip) {
|
|
$zipName = $depot . '-' .date("Y-m-d", strtotime($job->start_date)).'-'.date("Y-m-d", strtotime($job->end_date)).'.zip';
|
|
//print_r('cd '.$folder.'/zips; zip "'.$zipName.'" "' . implode('" "', $zip) . '"');
|
|
exec('cd '.$folder.'/zips; zip "'.$zipName.'" "' . implode('" "', $zip) . '"');
|
|
exec('aws s3 cp ' . $folder .'/zips/'. $zipName. ' s3://rapportapp/breathefree/'.$job->type.'/');
|
|
$zipNames[] = 'https://did94hhhcgq1d.cloudfront.net/breathefree/'.$job->type.'/'.$zipName;
|
|
//exec('cd '.$folder.'/zips; rf -rf "' . implode('" "', $zip) . '"');
|
|
|
|
}
|
|
|
|
print_r($zipNames);
|
|
|
|
}
|
|
|
|
|
|
|
|
//print_r($job);
|
|
}
|
|
|
|
}
|