HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/ipsremont-demo/app/Http/Controllers/ErrorsController.php
<?php


namespace App\Http\Controllers;


use App\Http\Requests\Errors\IndexRequest;
use App\Http\Requests\ImportRequest;
use App\Http\Requests\UploadRequest;
use App\Models\ErrorCodes;
use App\Models\Permission;
use App\Services\Errors\ErrorsService;
use PhpOffice\PhpSpreadsheet\IOFactory;

class ErrorsController extends Controller
{
    protected ErrorsService $service;

    public function __construct()
    {
        parent::__construct();

        $this->service = new ErrorsService();
    }

    public function index(IndexRequest $request)
    {
        $data = $this->service->search($request);
        $columns = ErrorCodes::columns();

        return view('errors.list', compact('data', 'columns'));
    }

    public function form()
    {
        return view('errors.import');
    }

    public function upload(UploadRequest $request)
    {
        if (!can(Permission::servicesImport)) {
            redirect()->route('errors.index');
        }

        $file = $request->file('file')->store('app/public/import');
        return response()->json(['success' => $file]);
    }

    public function import(ImportRequest $request)
    {
        $file = storage_path() . '/' . $request->filePath[0];

        if (!file_exists($file)) {
            return redirect()->route('errors.index', $request->id)
                ->with("messageError", __('errors.wrongFile'));
        }

        try {
            $reader = IOFactory::createReaderForFile($file);
            $reader->setReadDataOnly(true);
            $spreadsheet = $reader->load($file);

            $worksheet = $spreadsheet->getActiveSheet();

            foreach ($worksheet->getRowIterator() as $row) {
                $cellIterator = $row->getCellIterator();
                $cellIterator->setIterateOnlyExistingCells(FALSE);

                $data = [];
                foreach ($cellIterator as $cell) {
                    array_push($data, $cell->getValue());
                }
                if($data[0] && is_numeric($data[0]) && $data[0] != 0 && trim($data[1]) && $data[1] != 'не используется') {
                    ErrorsService::fillStorage($data);
                }
            }

            return redirect()->route('errors.index')
                ->with("messageSuccess", __('errors.successfulImport'));
        } catch (\Exception $e) {
            return redirect()->route('errors.index')
                ->with("messageError", __('errors.wrongFile'));
        }
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param int $id
     * @return \Illuminate\Http\RedirectResponse
     */
    public function delete($id)
    {
        ErrorsService::delete($id);

        return redirect()->route('errors.index')
            ->with('messageSuccess', __('errors.messageDelete'));
    }

}