ids,true);
$products = Product::query()->whereIn('id', $ids)->orderBy('series', 'asc')->get();
$vars_for_template = [];
$i = 1;
foreach ($products as $product){
switch ($request->descr) {
case 1:
$descr = $product->characteristics . "\r\n" . $product->tech_description_short;
break;
case 2:
$descr = $product->characteristics . "\r\n" . $product->tech_description;
break;
case 3:
$descr = $product->tech_description_short;
break;
case 4:
$descr = $product->tech_description;
break;
case 5:
default:
$descr = $product->characteristics;
break;
}
$vars_for_template = array_merge($vars_for_template, [
'series#' . $i => $product->series,
'product_group#' .$i => $product->product_group,
'num#' . $i => $i,
'name#' . $i => $product->name,
'name_for_form#' . $i => $product->name_for_form,
'price#' . $i => number_format($product->price, 2, '.', ' '),
'image#' . $i => $product->image_path,
'description#' . $i => str_replace("\n", '', $descr),
]);
$i++;
}
// prepared vars - run job
$filename = 'Наш_Двор_' . date('YmdHis') . '.docx';
if($products->count() > 200){
GenerateDocxJob::dispatch($vars_for_template, count($products), $filename, $request->template)->onConnection('database');
} else {
GenerateDocxJob::dispatch($vars_for_template, count($products), $filename, $request->template)->onConnection('sync');
}
Log::notice('Created export job. Execution time: ' . microtime(true) - LARAVEL_START);
$data['filename'] = $filename;
return redirect()->route('wait_export', $data);
}
public function wait_export(Request $request, $filename){
$fn = public_path('exported/docx/' . $filename . '.txt');
if(file_exists($fn)){
$data['percent'] = file_get_contents($fn);
} else {
$data['percent'] = 0;
}
$fn = public_path('exported/docx/' . $filename);
if(file_exists($fn)) {
$data['percent'] = 100;
}
$data['filename'] = $filename;
return view('products.wait', $data);
}
}