Kufrik/app/UI/Firma/FirmaPresenter.php

128 lines
3.9 KiB
PHP

<?php
namespace App\UI\Firma;
use App\UI\BasePresenter;
use Nette\Application\UI\Form;
use Nette\Database\Explorer;
class FirmaPresenter extends BasePresenter
{
/**
* Vstříkne se dynamický klientský Explorer
*/
public function __construct(
private Explorer $kufrikExplorer
) {
parent::__construct();
}
public function actionEdit(): void
{
$firmaId = $this->getUser()->getIdentity()->firma_id ?? null;
if (!$firmaId) {
$this->flashMessage('K účtu není přiřazena žádná aktivní firma.', 'danger');
$this->redirect('Home:');
}
$firma = $this->kufrikExplorer->table('FIRMA')->get($firmaId);
if (!$firma) {
$this->flashMessage('Firma nebyla v databázi nalezena.', 'danger');
$this->redirect('Home:');
}
// Predvyplnění formuláře
$this['firmaForm']->setDefaults([
'nazev' => $firma->NAZEV,
'ic' => $firma->IC,
'dic' => $firma->DIC,
'platce_dph' => (bool) $firma->PLATCE_DPH,
'telefon' => $firma->TELEFON,
'email' => $firma->EMAIL,
'ulice' => $firma->ULICE,
'mesto' => $firma->MESTO,
'psc' => $firma->PSC,
'cislo_uctu' => $firma->CISLO_UCTU,
'banka_kod' => $firma->BANKA_KOD,
'iban' => $firma->IBAN,
'bic' => $firma->BIC,
]);
}
protected function createComponentFirmaForm(): Form
{
$form = new Form();
// Základní údaje
$form->addText('nazev', 'Název firmy / OSVČ:')
->setRequired('Zadejte název firmy nebo Vaše jméno.');
$form->addText('ic', 'IČO:')
->setMaxLength(8);
$form->addText('dic', 'DIČ:')
->setMaxLength(12);
$form->addCheckbox('platce_dph', 'Jsem plátce DPH');
// Kontakty
$form->addText('telefon', 'Telefon:');
$form->addEmail('email', 'E-mail:');
// Sídlo
$form->addText('ulice', 'Ulice a ČP:');
$form->addText('mesto', 'Město:');
$form->addText('psc', 'PSČ:');
// Bankovní spojení
$form->addText('cislo_uctu', 'Číslo účtu:');
$form->addText('banka_kod', 'Kód banky:');
$form->addText('iban', 'IBAN:');
$form->addText('bic', 'BIC / SWIFT:');
$form->addSubmit('send', 'Uložit firmu');
$form->onSuccess[] = [$this, 'firmaFormSucceeded'];
return $form;
}
public function firmaFormSucceeded(Form $form, \stdClass $data): void
{
$firmaId = $this->getUser()->getIdentity()->firma_id;
try {
$this->kufrikExplorer->table('FIRMA')
->where('ID', $firmaId)
->update([
'NAZEV' => $data->nazev,
'IC' => $data->ic,
'DIC' => $data->dic,
'PLATCE_DPH' => $data->platce_dph ? 1 : 0,
'TELEFON' => $data->telefon,
'EMAIL' => $data->email,
'ULICE' => $data->ulice,
'MESTO' => $data->mesto,
'PSC' => $data->psc,
'CISLO_UCTU' => $data->cislo_uctu,
'BANKA_KOD' => $data->banka_kod,
'IBAN' => $data->iban,
'BIC' => $data->bic,
]);
// Potvrzení s časovým razítkem uložení
$casUlozeni = (new \DateTime())->format('H:i:s');
$this->flashMessage("Údaje firmy byly úspěšně uloženy v {$casUlozeni}.", 'success');
} catch (\Nette\Application\AbortException $e) {
throw $e;
} catch (\Throwable $e) {
$form->addError('Chyba při ukládání firmy: ' . $e->getMessage());
return;
}
$this->redirect('this');
}
}