195 lines
7.5 KiB
PHP

<?php
namespace Modules\Admin\App\Http\Controllers;
use Modules\Admin\App\Imports\SatCatalogsImport;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use App\Http\Controllers\Controller;
class SatCatalogController extends Controller
{
/**
* @return \Illuminate\Support\Collection
*/
public function import(Request $request)
{
// Si es una solicitud POST, procesa la importación
if ($request->isMethod('post')) {
$validator = Validator::make($request->all(), [
'file' => ['required', 'mimes:xls,xlsx'],
]);
if ($validator->fails())
return back()->withInput()->withErrors($validator);
$time_start = microtime(true);
$results = [
'details' => [],
'total_rows' => 0,
'total_created' => 0,
'total_updated' => 0,
'total_time' => 0,
];
$import = new SatCatalogsImport();
$filePath = request()->file('file');
$time_sheet_start = microtime(true);
$import->onlySheets('c_FormaPago');
Excel::import($import, $filePath);
$results['details'][] = [
'name' => 'Forma de pago',
'time' => round(microtime(true) - $time_sheet_start, 2),
'created' => session('created'),
'updated' => session('updated'),
];
$results['total_rows'] += session('created') + session('updated');
$results['total_created'] += session('created');
$results['total_updated'] += session('updated');
$time_sheet_start = microtime(true);
$import->onlySheets('c_Moneda');
Excel::import($import, $filePath);
$results['details'][] = [
'name' => 'Moneda',
'time' => round(microtime(true) - $time_sheet_start, 2),
'created' => session('created'),
'updated' => session('updated'),
];
$results['total_rows'] += session('created') + session('updated');
$results['total_created'] += session('created');
$results['total_updated'] += session('updated');
$time_sheet_start = microtime(true);
$import->onlySheets('c_CodigoPostal_Parte_1');
Excel::import($import, $filePath);
$import->onlySheets('c_CodigoPostal_Parte_2');
Excel::import($import, $filePath);
$results['details'][] = [
'name' => 'Código postal',
'time' => round(microtime(true) - $time_sheet_start, 2),
'created' => session('created'),
'updated' => session('updated'),
];
$time_sheet_start = microtime(true);
$import->onlySheets('c_RegimenFiscal');
Excel::import($import, $filePath);
$results['details'][] = [
'name' => 'Regimen fiscal',
'time' => round(microtime(true) - $time_sheet_start, 2),
'created' => session('created'),
'updated' => session('updated'),
];
$results['total_rows'] += session('created') + session('updated');
$results['total_created'] += session('created');
$results['total_updated'] += session('updated');
$time_sheet_start = microtime(true);
$import->onlySheets('c_Pais');
Excel::import($import, $filePath);
$results['details'][] = [
'name' => 'País',
'time' => round(microtime(true) - $time_sheet_start, 2),
'created' => session('created'),
'updated' => session('updated'),
];
$results['total_rows'] += session('created') + session('updated');
$results['total_created'] += session('created');
$results['total_updated'] += session('updated');
$time_sheet_start = microtime(true);
$import->onlySheets('c_UsoCFDI');
Excel::import($import, $filePath);
$results['details'][] = [
'name' => 'Uso de CFDI',
'time' => round(microtime(true) - $time_sheet_start, 2),
'created' => session('created'),
'updated' => session('updated'),
];
$results['total_rows'] += session('created') + session('updated');
$results['total_created'] += session('created');
$results['total_updated'] += session('updated');
$time_sheet_start = microtime(true);
$import->onlySheets('C_Colonia_1');
Excel::import($import, $filePath);
$time_sheet_start = microtime(true);
$import->onlySheets('C_Colonia_2');
Excel::import($import, $filePath);
$time_sheet_start = microtime(true);
$import->onlySheets('C_Colonia_3');
Excel::import($import, $filePath);
$results['details'][] = [
'name' => 'Colonia',
'time' => round(microtime(true) - $time_sheet_start, 2),
'created' => session('created'),
'updated' => session('updated'),
];
$results['total_rows'] += session('created') + session('updated');
$results['total_created'] += session('created');
$results['total_updated'] += session('updated');
$time_sheet_start = microtime(true);
$import->onlySheets('c_Estado');
Excel::import($import, $filePath);
$results['details'][] = [
'name' => 'Estado',
'time' => round(microtime(true) - $time_sheet_start, 2),
'created' => session('created'),
'updated' => session('updated'),
];
$results['total_rows'] += session('created') + session('updated');
$results['total_created'] += session('created');
$results['total_updated'] += session('updated');
$time_sheet_start = microtime(true);
$import->onlySheets('C_Localidad');
Excel::import($import, $filePath);
$results['details'][] = [
'name' => 'Localidad',
'time' => round(microtime(true) - $time_sheet_start, 2),
'created' => session('created'),
'updated' => session('updated'),
];
$results['total_rows'] += session('created') + session('updated');
$results['total_created'] += session('created');
$results['total_updated'] += session('updated');
$time_sheet_start = microtime(true);
$import->onlySheets('C_Municipio');
Excel::import($import, $filePath);
$results['details'][] = [
'name' => 'Municipio',
'time' => round(microtime(true) - $time_sheet_start, 2),
'created' => session('created'),
'updated' => session('updated'),
];
$results['total_rows'] += session('created') + session('updated');
$results['total_created'] += session('created');
$results['total_updated'] += session('updated');
$results['total_time'] = round(microtime(true) - $time_start, 2);
return back()->with('results', $results);
}
return view('system::import-sat.index');
}
}