/** * @secured */ public function handleCopyItem($day) { $this->checkDayValue($day); $err = 0; try { $newListingItem = $this->itemFacade->copyListingItemDown($day, $this->listing); } catch (ShiftItemDownException $sd) { $this->presenter->flashMessage('Nelze vytvořit kopii poslední položky ve výčetce.', 'error'); $err++; } catch (DBALException $e) { $this->presenter->flashMessage('Kopie položky nemohla být založena. Zkuste akci opakovat později.', 'error'); $err++; } if ($err !== 0) { if ($this->presenter->isAjax()) { $this->presenter->redrawControl('flashMessages'); } else { $this->redirect('this'); } } if ($this->presenter->isAjax()) { $this['itemsTable']->refreshTable([$newListingItem]); } else { $this->flashMessage('Řádek byl zkopírován.', 'success'); $this->redirect('this#' . $newListingItem->getDay()); } }
public function processSaveItem(Form $form, $values) { $values['day'] = $this->day; $values['listing'] = $this->listing; $values['user'] = $this->listing->getUser(); $this->listingItem = $this->itemsFacade->getByDay($this->day, $this->listing); try { $this->listingItem = $this->itemsFacade->saveListingItem((array) $values, $this->listingItem); } catch (OtherHoursZeroTimeException $zt) { $form->addError(ItemUpdateFormFactory::OTHER_HOURS_ZERO_TIME_ERROR_MSG); return; } catch (NegativeResultOfTimeCalcException $b) { $form->addError('Položku nelze uložit. Musíte mít odpracováno více hodin, než kolik strávíte obědem.'); return; } catch (ShiftEndBeforeStartException $c) { $form->addError('Nelze skončit směnu dřív než začne. Zkontrolujte si začátek a konec směny.'); return; } catch (ListingItemDayAlreadyExistsException $d) { $form->addError('Položku nelze uložit, protože výčetka již obsahuje záznam z tohoto dne.'); return; } catch (\Exception $e) { $form->addError('Položka nebyla uložena. Zkuste akci opakovat později.'); return; } $this->onSuccessItemPersist($this->listingItem); }
public function render() { $template = $this->getTemplate(); $template->setFile(__DIR__ . '/templates/table.latte'); if (!$this->presenter->isAjax()) { $this->items = $this->itemFacade->generateEntireTable($this->listing); } else { $this->items = $this->itemFacade->prepareDisplayableItemsCollection($this->items); } $template->itemsCollection = $this->items; $template->workedDays = $this->workedDays; $template->totalWorkedHours = $this->totalWorkedHours; $template->isTableCaptionVisible = $this->isTableCaptionVisible; $template->showCheckBoxes = $this->showCheckBoxes; $template->showActions = $this->showActions; $template->parameters = $this->parameters; $template->listing = $this->listing; $template->numberOfDaysInMonth = $this->listing->getNumberOfDaysInMonth(); $template->render(); }