UserProNetMediaZaliczkaWniosekConfirm.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. <?php
  2. Lib::loadClass('RouteBase');
  3. Lib::loadClass('DBG');
  4. Lib::loadClass('UI');
  5. Lib::loadClass('User');
  6. class Route_UrlAction_UserProNetMediaZaliczkaWniosekConfirm extends RouteBase {
  7. public function handleAuth() {
  8. if (!User::logged()) {
  9. User::authByRequest();
  10. }
  11. }
  12. public function getActionLabel() { return "Zatwierdź Wniosek"; }
  13. public function getActionDescription() { return "Zatwierdź Wniosek o Zaliczkę"; }
  14. public function getActionArgs() {
  15. return [
  16. 'idZaliczkaWniosek' => 'Nr wniosku o zaliczkę'
  17. ];
  18. }
  19. public function getProps($args) {
  20. $idZaliczkaWniosek = V::get('idZaliczkaWniosek', 0, $_GET, 'int');
  21. if ($idZaliczkaWniosek <= 0) throw new Exception("Missing param idZaliczkaWniosek");
  22. $wniosekAcl = ACL::getStorageByNamespace('default_db/ZALICZKA_WNIOSEK/ZaliczkaWniosek');
  23. $wniosek = $wniosekAcl->getItem($idZaliczkaWniosek);
  24. if (!$wniosek) throw new Exception("Wniosek o numerze {$idZaliczkaWniosek} nie został odnaleziony w bazie danych");
  25. $props = [
  26. 'idZaliczkaWniosek' => $idZaliczkaWniosek,
  27. 'wniosekAcl' => $wniosekAcl,
  28. 'wniosek' => $wniosek,
  29. ];
  30. return $props;
  31. }
  32. public function confirmAction() {
  33. UI::gora();
  34. UI::menu();
  35. UI::startContainer();
  36. try {
  37. $props = $this->getProps([
  38. 'idZaliczkaWniosek' => V::get('idZaliczkaWniosek', 0, $_GET, 'int')
  39. ]);
  40. $affected = $props['wniosekAcl']->updateItem([
  41. 'id' => $props['wniosek']['id'],
  42. 'status' => "Zatwierdzony",
  43. 'approvedBy' => User::getLogin()
  44. ]);
  45. DBG::log(['msg'=>"update Wniosek(affected={$affected})", '$wniosek'=>$wniosek]);
  46. $zaliczkaAcl = ACL::getStorageByNamespace('default_db/ZALICZKA/Zaliczka');
  47. $id = $zaliczkaAcl->addItem([
  48. 'kwota' => $props['wniosek']['kwota'],
  49. 'worker' => [
  50. 'id' => $props['wniosek']['workerID'],
  51. ],
  52. 'uwagi' => $props['wniosek']['uwagi'],
  53. 'approvedBy' => User::getLogin()
  54. ]);
  55. DBG::log(['msg'=>"add Zaliczka(id={$id})"]);
  56. if (!$id) throw new Exception("Nie udało się utworzyć zaliczki");
  57. UI::alert('success', "Wniosek zatwierdzony");
  58. echo $this->viewWniosek($props['wniosek']);
  59. } catch (Exception $e) {
  60. UI::alert('danger', $e->getMessage());
  61. DBG::log($e);
  62. }
  63. UI::endContainer();
  64. UI::dol();
  65. }
  66. public function rejectAction() {
  67. UI::gora();
  68. UI::menu();
  69. UI::startContainer();
  70. try {
  71. $props = $this->getProps([
  72. 'idZaliczkaWniosek' => V::get('idZaliczkaWniosek', 0, $_GET, 'int')
  73. ]);
  74. $affected = $props['wniosekAcl']->updateItem([
  75. 'id' => $props['wniosek']['id'],
  76. 'status' => "Odrzucony",
  77. 'approvedBy' => User::getLogin()
  78. ]);
  79. DBG::log(['msg'=>"update Wniosek(affected={$affected})", '$wniosek'=>$wniosek]);
  80. UI::alert('info', "Wniosek o zaliczkę został odrzucony");
  81. echo $this->viewWniosek($props['wniosek']);
  82. } catch (Exception $e) {
  83. UI::alert('danger', $e->getMessage());
  84. DBG::log($e);
  85. }
  86. UI::endContainer();
  87. UI::dol();
  88. }
  89. public function defaultAction() {
  90. UI::gora();
  91. UI::menu();
  92. UI::startContainer();
  93. try {
  94. $props = $this->getProps([
  95. 'idZaliczkaWniosek' => V::get('idZaliczkaWniosek', 0, $_GET, 'int')
  96. ]);
  97. if ('Anulowany' == $props['wniosek']['status']) throw new Exception("Wniosek o numerze {$props['idZaliczkaWniosek']} został wcześniej anulowany");
  98. if ('Odrzucony' == $props['wniosek']['status']) throw new Exception("Wniosek o numerze {$props['idZaliczkaWniosek']} został wcześniej odrzucony");
  99. if ('Zatwierdzony' == $props['wniosek']['status']) throw new Exception("Wniosek o numerze {$props['idZaliczkaWniosek']} został już wcześniej zatwierdzony");
  100. // if ('Oczekuje zatwierdzenia' !== $props['wniosek']['status']) throw new Exception("Wniosek o numerze {$props['idZaliczkaWniosek']} ma nieznany status");
  101. echo UI::h('h1', [], "Wniosek o wypłatę zaliczki");
  102. DBG::log(['msg'=>'wniosek', 'wniosek'=>$props['wniosek']]);
  103. echo $this->viewWniosek($props['wniosek']);
  104. echo UI::h('div', ['style' => "text-align:center; padding:32px"], [
  105. UI::h('a', [
  106. 'href' => Request::getPathUri() . "?_route=UrlAction_UserProNetMediaZaliczkaWniosekConfirm&idZaliczkaWniosek={$props['idZaliczkaWniosek']}&_task=confirm",
  107. 'class' => "btn btn-lg btn-primary",
  108. 'style' => "margin-left:30px"
  109. ], "Zatwierdź"),
  110. UI::h('a', [
  111. 'href' => Request::getPathUri() . "?_route=UrlAction_UserProNetMediaZaliczkaWniosekConfirm&idZaliczkaWniosek={$props['idZaliczkaWniosek']}&_task=reject",
  112. 'class' => "btn btn-lg btn-danger",
  113. 'style' => "margin-left:30px"
  114. ], "Odrzuć"),
  115. UI::h('a', [
  116. 'href' => $this->getLink('msgs') . "&idZaliczkaWniosek={$props['idZaliczkaWniosek']}",
  117. 'class'=>"btn btn-lg btn-warning",
  118. 'style'=>"margin-left:30px"
  119. ], "Do wyjaśnienia"),
  120. ]);
  121. echo UI::h('hr');
  122. echo UI::h('h3', [], "Pozostałe wnioski pracownika <code>{$props['wniosek']['workerLogin']}</code>:");
  123. Router::getRoute('UrlAction_UserProNetMediaZaliczka')->viewWidgetUserWnioski($props['wniosek']['workerID']);
  124. } catch (Exception $e) {
  125. UI::alert('danger', $e->getMessage());
  126. DBG::log($e);
  127. }
  128. if (!empty($_POST)) echo UI::h('script', [], "history.replaceState(null, '', window.location.href)");
  129. UI::endContainer();
  130. UI::dol();
  131. }
  132. public function viewWniosek($wniosek) {
  133. return UI::h('blockquote', [], [
  134. UI::h('p', [], "Nr: {$wniosek['id']}"),
  135. UI::h('p', [], "Autor: {$wniosek['workerLogin']}"),
  136. UI::h('p', [], "Data zgłoszenia: {$wniosek['created']}"),
  137. UI::h('p', [], "Kwota: <b>" . UI::price($wniosek['kwota']) . "</b>"),
  138. UI::h('p', [], "Uwagi: {$wniosek['uwagi']}"),
  139. ]);
  140. }
  141. public function msgsAction() {
  142. UI::gora();
  143. UI::menu();
  144. try {
  145. $props = $this->getProps([
  146. 'idZaliczkaWniosek' => V::get('idZaliczkaWniosek', 0, $_GET, 'int')
  147. ]);
  148. UI::startContainer();
  149. echo UI::h('h1', [], "Wniosek o wypłatę zaliczki");
  150. DBG::log(['msg'=>'wniosek', 'wniosek'=>$props['wniosek']]);
  151. echo $this->viewWniosek($props['wniosek']);
  152. $idTable = ACL::getStorageByNamespace('default_db/zaliczka_wniosek_info_view')->getID();
  153. Router::getRoute('TableMsgs')->tableRowMsgs($idTable, $props['idZaliczkaWniosek']);
  154. } catch (Exception $e) {
  155. UI::alert('danger', $e->getMessage());
  156. }
  157. UI::dol();
  158. }
  159. }