1: <?php
2: namespace Budovy;
3:
4: class PeriodicTaskRealizationPresenter extends BasePresenter {
5:
6: public $periodicTaskRepository;
7:
8:
9: public $periodicTaskRealizationRepository;
10:
11:
12: public $documentRepository;
13:
14:
15: public $documentFactory;
16:
17:
18: public $periodicTaskRealizationFactory;
19:
20:
21: public $contactBindingRepository;
22:
23:
24: public $unitRepository;
25:
26:
27: public $operationRepository;
28:
29:
30: public $httpRequest;
31:
32: protected function createComponentGrid() {
33: $session = $this->getSession()->getSection('history');
34: $session->secpttask = (string)$this->getHttpRequest()->getUrl();
35:
36: return $this->periodicTaskRealizationFactory->createDataGrid();
37: }
38:
39: protected function createComponentDocumentsGrid() {
40: return $this->documentFactory->createDocumentsDataGrid();
41: }
42:
43: public function actionEdit($id) {
44: $item = $this->periodicTaskRealizationRepository->findById($id);
45:
46: if ($id > 0 && $item === false) {
47: $this->redirect('default');
48: }
49:
50: if ($id > 0) {
51: $this['editForm']['base']->setDefaults($item);
52: } else {
53: $this['editForm']['base']->setDefaults(array('date' => new \DateTime(), 'price' => 0));
54: }
55:
56: $this->template->id = $id;
57: }
58:
59: public function actionDocuments($id) {
60: $item = $this->periodicTaskRealizationRepository->findById($id);
61:
62: if ($item === false) {
63: $this->redirect('default');
64: }
65:
66: $assigned = array();
67:
68: foreach ($this->periodicTaskRealizationRepository->getAssignedDocuments($item->id) as $row) {
69: $assigned[] = $row->id;
70: }
71:
72: $this['documentsGrid']->setId($item->id);
73: $this['documentsGrid']->setAssigned($assigned);
74:
75: $session = $this->getSession()->getSection('history');
76:
77: if (isset($session->secpttask)) {
78: $this->template->backlink = $session->secpttask;
79: } else {
80: $this->template->backlink = $this->link('default');
81: }
82:
83: $this->template->id = $item->id;
84: }
85:
86: public function renderPreview($id) {
87: $item = $this->periodicTaskRealizationRepository->findById($id);
88:
89: if ($item === false) {
90: $this->redirect('default');
91: }
92:
93: $task = $this->periodicTaskRepository->findById($item->id_periodictask);
94:
95: $this->template->data = $item;
96: $this->template->documentRepository = $this->documentRepository;
97: $this->template->task = $task;
98: $this->template->unit = $this->unitRepository->findById($task->id_unit);
99: $this->template->operation = $this->operationRepository->findById($task->id_operation);
100: $this->template->contact = $this->periodicTaskRealizationRepository->getAssignedContact($item->id);
101: $this->template->documents = $this->periodicTaskRealizationRepository->getAssignedDocuments($item->id);
102: }
103:
104: protected function createComponentEditForm() {
105: $session = $this->getSession()->getSection('history');
106:
107: if (isset($session->secpttask)) {
108: $backlink = $session->secpttask;
109: } else {
110: $backlink = $this->link('default');
111: }
112:
113: $form = $this->periodicTaskRealizationFactory->createEditForm($backlink);
114: $form->onSuccess[] = $this->editFormSubmitted;
115:
116: return $form;
117: }
118:
119: public function editFormSubmitted($form) {
120: $fdata = $form['base']->getValues();
121:
122: $id = $this->getParameter('id');
123: $contact = $fdata->id_contact;
124:
125: unset($fdata->id_contact);
126:
127: if ($id > 0) {
128: $this->periodicTaskRealizationRepository->updateById($id, $fdata);
129:
130: $this->flashMessage("Záznam byl upraven.", "success");
131: } else {
132: $data = $this->periodicTaskRealizationRepository->insertData($fdata);
133:
134: $id = $data->id;
135:
136: $this->flashMessage("Záznam byl vložen.", "success");
137: }
138:
139: 140: 141:
142: $filedatas = $form['document']->getValues();
143:
144: foreach ($filedatas->files as $file) {
145: if ($file->isOk()) {
146: $data = new \Nette\ArrayHash;
147: $data->name = $file->getName();
148: $data->filename = $file->getName();
149: $data->id_documenttype = $filedatas->id_documenttype;
150: $data->mime = $file->getContentType();
151: $data->data = $file->getContents();
152: $data->lastmod = date('Y-m-d H:i:s');
153:
154: $document = $this->documentRepository->insertData($data);
155:
156: $this->periodicTaskRealizationRepository->assignDocument($id, $document->id);
157: }
158: }
159:
160: 161: 162:
163: if ($contact > 0) {
164: $this->periodicTaskRealizationRepository->assignContact($id, $contact);
165: } else {
166: $this->periodicTaskRealizationRepository->removeAssignedContact($id);
167: }
168:
169: $session = $this->getSession()->getSection('history');
170:
171: if (isset($session->secpttask)) {
172: $backlink = $session->secpttask;
173: } else {
174: $backlink = $this->link('default');
175: }
176:
177: $this->redirectUrl($backlink);
178: }
179:
180: public function handleDelete($id) {
181: try {
182: $this->periodicTaskRealizationRepository->deleteById($id);
183: $this->flashMessage("Záznam byl smazán.", "success");
184: } catch (\PDOException $e) {
185: $this->flashMessage("Záznam nelze smazat!", "error");
186: }
187:
188: $this->redirect('this');
189: }
190:
191: public function handleAssign($id, $document) {
192: $this->periodicTaskRealizationRepository->assignDocument($id, $document);
193:
194: $this->redirect('this');
195: }
196:
197: public function handleUnassign($id, $document) {
198: $this->periodicTaskRealizationRepository->removeAssignedDocument($id, $document);
199:
200: $this->redirect('this');
201: }
202: }