ClauseController.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use App\Models\Clause;
  5. use Illuminate\Http\JsonResponse;
  6. use Illuminate\Support\Facades\DB;
  7. use Ramsey\Uuid\Uuid;
  8. use App\Models\StatTree;
  9. use App\Models\StatTreeLine;
  10. use App\Models\StatTreeLineClause;
  11. class ClauseController extends Controller
  12. {
  13. public function list(){
  14. $clauses = Clause::all();
  15. return view('app.stat-tree.clauses.list', compact('clauses'));
  16. }
  17. public function dashboard(Clause $clause){
  18. return view('app.stat-tree.clauses.single', compact('clause'));
  19. }
  20. // view
  21. public function replaceAllPage(Request $request){
  22. return view('app.stat-tree.clauses.replace-all');
  23. }
  24. // process
  25. public function replaceAll(Request $request){
  26. $data = $request->get('data');
  27. $rows = json_decode($data);
  28. Clause::truncate();
  29. //Should we truncate related data?
  30. StatTree::truncate();
  31. StatTreeLine::truncate();
  32. StatTreeLineClause::truncate();
  33. for($i = 0; $i < count($rows); $i++){
  34. $row = $rows[$i];
  35. $clause = new Clause();
  36. $nextId = DB::select("select nextval('clause_id_seq')");
  37. $clause->id = $nextId[0]->nextval;
  38. $clause->uid = Uuid::uuid4();
  39. $clause->model = $row[0];
  40. $clause->question = $row[1];
  41. $clause->answer = $row[2];
  42. $clause->label = $row[1] . ($row[2] && $row[2] != '-' ? ' ' . $row[2] : '');
  43. $clause->clause_text = $row[3];
  44. $clause->position_index = $i;
  45. $clause->save();
  46. }
  47. return $this->pass();
  48. }
  49. // eps
  50. public function create(Request $request) {
  51. $clause = new Clause();
  52. $nextId = DB::select("select nextval('clause_id_seq')");
  53. $clause->id = $nextId[0]->nextval;
  54. $clause->uid = Uuid::uuid4();
  55. $clause->model = $request->input('model');
  56. $clause->question = $request->input('question');
  57. $clause->answer = $request->input('answer');
  58. $clause->label = $request->input('label');
  59. $clause->clause_text = $request->input('clauseText');
  60. $positionIndex = DB::select('select max(position_index) from clause');
  61. $clause->position_index = is_numeric($positionIndex[0]->max) ? $positionIndex[0]->max + 1 : 1;
  62. $clause->save();
  63. return $this->pass();
  64. }
  65. public function update(Request $request) {
  66. $clause = Clause::where('uid', $request->input('uid'))->first();
  67. if(!$clause) return $this->fail('Clause not found!');
  68. $clause->model = $request->input('model');
  69. $clause->question = $request->input('question');
  70. $clause->answer = $request->input('answer');
  71. $clause->label = $request->input('label');
  72. $clause->clause_text = $request->input('clauseText');
  73. $clause->save();
  74. return $this->pass();
  75. }
  76. public function remove(Request $request) {
  77. $clause = Clause::where('uid', $request->input('uid'))->first();
  78. if(!$clause) return $this->fail('Clause not found!');
  79. // TODO: allow only if this clause isn't used anywhere
  80. DB::select("delete from clause where id = {$clause->id}");
  81. return $this->pass();
  82. }
  83. }