. */ namespace SP\Modules\Web\Controllers; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; use SP\Core\Acl\ActionsInterface; use SP\Core\Acl\UnauthorizedPageException; use SP\Core\Events\Event; use SP\Core\Events\EventMessage; use SP\Http\JsonResponse; use SP\Http\Request; use SP\Modules\Web\Controllers\Traits\JsonTrait; use SP\Services\Import\FileImport; use SP\Services\Import\ImportParams; use SP\Services\Import\ImportService; /** * Class ConfigImportController * * @package SP\Modules\Web\Controllers */ class ConfigImportController extends SimpleControllerBase { use JsonTrait; /** * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ public function importAction() { if ($this->config->getConfigData()->isDemoEnabled()) { $this->returnJsonResponse(JsonResponse::JSON_WARNING, __u('Ey, esto es una DEMO!!')); } $importParams = new ImportParams(); $importParams->setDefaultUser(Request::analyzeInt('import_defaultuser', $this->session->getUserData()->getId())); $importParams->setDefaultGroup(Request::analyzeInt('import_defaultgroup', $this->session->getUserData()->getUserGroupId())); $importParams->setImportPwd(Request::analyzeEncrypted('importPwd')); $importParams->setImportMasterPwd(Request::analyzeEncrypted('importMasterPwd')); $importParams->setCsvDelimiter(Request::analyzeString('csvDelimiter')); try { $importService = $this->dic->get(ImportService::class); $counter = $importService->doImport($importParams, new FileImport($this->router->request()->files()->get('inFile'))); $this->eventDispatcher->notifyEvent('run.import', new Event($this, EventMessage::factory() ->addDetail(__u('Cuentas importadas'), $counter)) ); if ($counter > 0) { $this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Importación finalizada'), [__u('Revise el registro de eventos para más detalles')]); } else { $this->returnJsonResponse(JsonResponse::JSON_WARNING, __u('No se importaron cuentas'), [__u('Revise el registro de eventos para más detalles')]); } } catch (\Exception $e) { processException($e); $this->eventDispatcher->notifyEvent('exception', new Event($e, EventMessage::factory() ->addDescription($e->getMessage())) ); $this->returnJsonResponseException($e); } } protected function initialize() { try { $this->checkAccess(ActionsInterface::IMPORT_CONFIG); } catch (UnauthorizedPageException $e) { $this->eventDispatcher->notifyEvent('exception', new Event($e)); $this->returnJsonResponseException($e); } } }