UserProNetMediaZaliczkaWniosekConfirm.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  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::getAclByNamespace('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::getAclByNamespace('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. } catch (Exception $e) {
  82. UI::alert('danger', $e->getMessage());
  83. DBG::log($e);
  84. }
  85. UI::endContainer();
  86. UI::dol();
  87. }
  88. public function defaultAction() {
  89. UI::gora();
  90. UI::menu();
  91. UI::startContainer();
  92. try {
  93. $props = $this->getProps([
  94. 'idZaliczkaWniosek' => V::get('idZaliczkaWniosek', 0, $_GET, 'int')
  95. ]);
  96. $idZaliczkaWniosek = $props['idZaliczkaWniosek'];
  97. $wniosekAcl = $props['wniosekAcl'];
  98. $wniosek = $props['wniosek'];
  99. if ('Anulowany' == $wniosek['status']) throw new Exception("Wniosek o numerze {$idZaliczkaWniosek} został wcześniej anulowany");
  100. if ('Odrzucony' == $wniosek['status']) throw new Exception("Wniosek o numerze {$idZaliczkaWniosek} został wcześniej odrzucony");
  101. if ('Zatwierdzony' == $wniosek['status']) throw new Exception("Wniosek o numerze {$idZaliczkaWniosek} został już wcześniej zatwierdzony");
  102. // if ('Oczekuje zatwierdzenia' !== $wniosek['status']) throw new Exception("Wniosek o numerze {$idZaliczkaWniosek} ma nieznany status");
  103. echo UI::h('h1', [], "Wniosek o wypłatę zaliczki");
  104. echo UI::h('div', ['style' => "text-align:center; padding:32px"], [
  105. UI::h('a', [
  106. 'href' => Request::getPathUri() . "?_route=UrlAction_UserProNetMediaZaliczkaWniosekConfirm&idZaliczkaWniosek={$idZaliczkaWniosek}&_task=confirm",
  107. 'class' => "btn btn-lg btn-primary",
  108. 'style' => "margin-right:24px"
  109. ], "Zatwierdź"),
  110. UI::h('a', [
  111. 'href' => Request::getPathUri() . "?_route=UrlAction_UserProNetMediaZaliczkaWniosekConfirm&idZaliczkaWniosek={$idZaliczkaWniosek}&_task=reject",
  112. 'class' => "btn btn-lg btn-danger",
  113. 'style' => "margin-left:24px"
  114. ], "Odrzuć"),
  115. ]);
  116. echo UI::h('hr');
  117. DBG::log(['msg'=>'$wniosek', '$wniosek'=>$wniosek]);
  118. echo $this->viewWniosek($wniosek);
  119. echo UI::h('hr');
  120. echo UI::h('h3', [], "Pozostałe wnioski pracownika <code>{$wniosek['workerLogin']}</code>:");
  121. Router::getRoute('UrlAction_UserProNetMediaZaliczka')->viewWidgetUserWnioski([
  122. 'idUser' => $wniosek['workerID']
  123. ]);
  124. // $wniosekAcl->updateItem([
  125. // 'id' => $idZaliczkaWniosek,
  126. // 'status' => "Anulowany"
  127. // ]);
  128. // UI::alert('success', "Wniosek anulowany");
  129. } catch (Exception $e) {
  130. UI::alert('danger', $e->getMessage());
  131. DBG::log($e);
  132. }
  133. if (!empty($_POST)) echo UI::h('script', [], "history.replaceState(null, '', window.location.href)");
  134. UI::endContainer();
  135. UI::dol();
  136. }
  137. public function viewWniosek($wniosek) {
  138. return UI::h('blockquote', [], [
  139. UI::h('p', [], "Nr: {$wniosek['id']}"),
  140. UI::h('p', [], "Autor: {$wniosek['workerLogin']}"),
  141. UI::h('p', [], "Data zgłoszenia: {$wniosek['created']}"),
  142. UI::h('p', [], "Kwota: <b>" . UI::price($wniosek['kwota']) . "</b>"),
  143. UI::h('p', [], "Uwagi: {$wniosek['uwagi']}"),
  144. ]);
  145. }
  146. }