Rapport-Laravel/app/Console/Commands/GenerateZips.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);
}
}