UserTest.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <?php
  2. Lib::loadClass('RouteBase');
  3. class Route_UserTest extends RouteBase {
  4. public function handleAuth() {
  5. if (!User::logged()) {
  6. User::authByRequest();
  7. }
  8. }
  9. public function defaultAction() {
  10. UI::gora();
  11. UI::menu();
  12. session_write_close();
  13. try {
  14. $procesMenu = ProcesMenu::getInstance();
  15. // $procesMenu->menuAction();// like UI::menu() ?
  16. $acl = Core_AclHelper::getAclByNamespace('default_objects/UserTestStats');// default_objects/UserProcess
  17. $userTestStatsList = $acl->getItems();
  18. UI::setTitle("Testy - Moje");
  19. $this->userTestsView($userTestStatsList);
  20. } catch (Exception $e) {
  21. UI::alert('danger', $e->getMessage());
  22. }
  23. UI::dol();
  24. }
  25. public function adminUserTestAction() {// TODO: replace POST from admin menu to view another user tests
  26. UI::gora();
  27. UI::menu();
  28. session_write_close();
  29. try {
  30. $idUser = V::get('_user_id', 0, $_REQUEST, 'int');
  31. $user = [];// $user = Core_AclHelper::getAclByNamespace('default_db/ADMIN_USERS')->getItem($idUser);
  32. $user['name'] = "TODO: user name({$idUser})";
  33. $acl = Core_AclHelper::getAclByNamespace('default_objects/UserTestStats');// default_objects/UserProcess
  34. $acl->setIdUser($idUser);
  35. $userTestStatsList = $acl->getItems();
  36. UI::setTitle("Testy - pracownika {$user['name']}");
  37. $this->userTestsView($userTestStatsList);
  38. } catch (Exception $e) {
  39. UI::alert('danger', $e->getMessage());
  40. }
  41. UI::dol();
  42. }
  43. public function userTestsView($userTestStatsList) {
  44. $activeFiltrProcessId = User::getAcl()->getPermsFiltrProcesId();
  45. ?>
  46. <style type="text/css">
  47. .tbl-wyniki-testow {}
  48. .tbl-wyniki-testow td {vertical-align:top;font-size:small;}
  49. .tbl-wyniki-testow .proces-box {padding:0 6px;background:#f00;color:#fff;font-weight:bold;font-family:arial;text-decoration:none}
  50. .tbl-wyniki-testow .proces-title {padding:0 3px;}
  51. .tbl-wyniki-testow .wynik-cell .wyniki-cell-header {height:56px;overflow:hidden;}
  52. .tbl-wyniki-testow .wynik-cell {padding:0 3px;}
  53. .tbl-wyniki-testow .wynik-BRAK_TESTU .proces-box {background-color:silver;}
  54. .tbl-wyniki-testow .wynik-BRAK_PYTAN .proces-box {background-color:#51B7D5;}
  55. .tbl-wyniki-testow .wynik-DOBRY .proces-box {background-color:lightgreen;}
  56. .tbl-wyniki-testow .wynik-DOSTATECZNY .proces-box {background-color:#FFFFB1; color:#777;}
  57. .tbl-wyniki-testow .wynik-NIEDOSTATECZNY .proces-box {background-color:#FC5151;}
  58. .tbl-wyniki-testow .wynik-IDEALNY .proces-box {background-color:gold;}
  59. .tbl-wyniki-testow .wynik-NIEAKTUALNY .proces-box {background-color:silver;}
  60. </style>
  61. <?php
  62. $procesyInitList = [];
  63. foreach ($userTestStatsList as $row) {
  64. $procesyInitList[ $row['ID'] ] = $row['nazwa'];
  65. }
  66. $parentIdList = [];
  67. foreach ($userTestStatsList as $row) {
  68. $parentIdList[ $row['PARENT_ID'] ] = true;
  69. }
  70. $sqlProcesyInitIds = (!empty($parentIdList)) ? implode(",", array_keys($parentIdList)) : '';
  71. $parentProcessList = DB::getPDO()->fetchAll("
  72. select p.ID, p.PARENT_ID, p.DESC as nazwa
  73. from CRM_PROCES as p
  74. where p.ID in({$sqlProcesyInitIds})
  75. ");
  76. foreach ($parentProcessList as $parentProcess) {
  77. UI::startContainer(['class'=>"tbl-wyniki-testow page-header"]);
  78. $linkProcessTree = "procesy5.php?task=CRM_PROCES&amp;filtr_id={$parentProcess['ID']}";
  79. UI::tag('h3', [], "{$parentProcess['nazwa']} <small><a href=\"{$linkProcessTree}\">{{$parentProcess['ID']}}</a></small>");
  80. UI::endContainer();
  81. UI::startContainer(['class'=>"tbl-wyniki-testow"]);
  82. UI::startTag('div', ['class'=>"row"]);
  83. $i = 0;
  84. foreach ($userTestStatsList as $testStats) {
  85. if ($testStats['PARENT_ID'] != $parentProcess['ID']) continue;
  86. UI::startTag('div', ['class'=>"col-md-3 wynik-cell wynik-{$testStats['wynik_teoretyczny']}"]);
  87. UI::startTag('div', ['class'=>"panel panel-default"]);
  88. UI::startTag('div', ['class'=>"panel-heading"]);
  89. UI::tag('span', ['title'=>htmlspecialchars($testStats['nazwa']), 'data-toggle'=>"tooltip"], V::strShortUtf8($testStats['nazwa'], 80), " ");
  90. $linkProcesView = "procesy5.php?task=PROCES_VIEW&id_proces={$testStats['ID']}";
  91. UI::tag('a', ['href'=>$linkProcesView, 'title'=>"zobacz instrukcję do procesu {$testStats['ID']}", 'target'=>"_blank"], "{{$testStats['ID']}}");
  92. UI::endTag('div');// .panel-heading
  93. UI::startTag('div', ['class'=>"panel-body"]);
  94. UI::startTag('ul', ['style' => "padding-left:20px"]);
  95. UI::startTag('li');
  96. if ($activeFiltrProcessId == $testStats['ID']) {
  97. UI::tag('a', ['href'=>"index.php?FUNCTION_INIT=MENU_SELECT_PROCES&_action=setPermsAll", 'style'=>"font-weight:bold"], "Wyłącz filtr uprawnien dla", " ");
  98. } else {
  99. UI::tag('a', ['href'=>"index.php?FUNCTION_INIT=MENU_SELECT_PROCES&_action=setPermsByProces&id_proces={$testStats['ID']}"], "Uruchom filtr uprawnien dla", " ");
  100. }
  101. echo "{$testStats['ID']}";
  102. UI::endTag('li');
  103. UI::startTag('li');
  104. UI::tag('a', ['href'=>"procesy5.php?task=CRM_TESTY__ADD_TEST&test_type=TEORETYCZNY&proces_id={$testStats['ID']}"], "Wykonaj test teoretyczny dla", " ");
  105. echo "{$testStats['ID']}";
  106. UI::endTag('li');
  107. UI::startTag('li');
  108. echo "Test teoretyczny: ";
  109. UI::startTag('span', ['class'=>"proces-box"]);
  110. echo " {$testStats['wynik_teoretyczny']} ";
  111. if ($testStats['wynik_teoretyczny_value']) UI::tag('em', null, $testStats['wynik_teoretyczny_value']);
  112. UI::endTag('span');
  113. UI::endTag('li');
  114. UI::tag('li', ['class'=>"wynik-{$testStats['wynik_praktyczny']}"], "Test praktyczny: {$testStats['wynik_praktyczny']}");
  115. UI::endTag('ul');
  116. $tagFixTest = ($testStats['link_popraw_test'])
  117. ? "<a class=\"btn btn-xs btn-primary\" href=\"{$testStats['link_popraw_test']}\">popraw</a>"
  118. : '';
  119. if ($testStats['wynik_unactual']) {
  120. UI::alert('danger', "
  121. <b>Uwaga! Test nieaktualny:</b>
  122. {$tagFixTest}
  123. <br>" . substr($testStats['last_test_end'], 0, 10) . " - zakończenie testu
  124. <br>" . substr($testStats['last_update_date'], 0, 10) . " - ostatnia zmiana w procesie
  125. ");
  126. }
  127. UI::endTag('div');// .panel-body
  128. UI::endTag('div');// .panel
  129. UI::endTag('div');// .wynik-cell
  130. if (++$i >= 4) {
  131. $i = 0;
  132. UI::endTag('div');// .row
  133. UI::startTag('div', ['class'=>"row"]);
  134. }
  135. }
  136. UI::endTag('div');// .row
  137. UI::endContainer();
  138. }
  139. }
  140. }