. */ namespace SP\Import; use SP\Core\Exceptions\SPException; use SP\Core\Messages\LogMessage; use SP\Log\Email; use SP\Log\Log; use SP\Storage\DB; defined('APP_ROOT') || die(); /** * Esta clase es la encargada de importar cuentas. */ class Import { /** * @var ImportParams Parámetros de importación */ protected $ImportParams; /** * Import constructor. * * @param ImportParams $ImportParams */ public function __construct(ImportParams $ImportParams) { $this->ImportParams = $ImportParams; } /** * Iniciar la importación de cuentas. * * @param array $fileData Los datos del archivo * @return LogMessage * @throws SPException */ public function doImport(&$fileData) { set_time_limit(0); $LogMessage = new LogMessage(); $LogMessage->setAction(__('Importar Cuentas', false)); $Log = new Log($LogMessage); try { $file = new FileImport($fileData); switch ($file->getFileType()) { case 'text/csv': case 'application/vnd.ms-excel': $Import = new CsvImport($file, $this->ImportParams, $LogMessage); break; case 'text/xml': $Import = new XmlImport($file, $this->ImportParams, $LogMessage); break; default: throw new SPException( SPException::SP_WARNING, sprintf(__('Tipo mime no soportado ("%s")'), $file->getFileType()), __('Compruebe el formato del archivo', false) ); } if (!DB::beginTransaction()) { throw new SPException(SPException::SP_ERROR, __('No es posible iniciar una transacción', false)); } $Import->doImport(); if (!DB::endTransaction()) { throw new SPException(SPException::SP_ERROR, __('No es posible finalizar una transacción', false)); } $LogMessage->addDetails(__('Cuentas importadas'), $Import->getCounter()); } catch (SPException $e) { DB::rollbackTransaction(); $LogMessage->addDescription($e->getMessage()); $LogMessage->addDetails(__('Ayuda', false), $e->getHint()); $Log->setLogLevel(Log::ERROR); $Log->writeLog(); throw $e; } $Log->writeLog(true); Email::sendEmail($LogMessage); $LogMessage->addDescription(__('Importación finalizada', false)); $LogMessage->addDescription(__('Revise el registro de eventos para más detalles', false)); return $LogMessage; } }