PenentuanTargetController.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <?php
  2. namespace App\Http\Controllers\Core;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Support\Facades\Crypt;
  5. use Illuminate\Http\Request;
  6. use App\Model\Privillage\Role;
  7. use App\Model\Inspeksi\Inspeksi;
  8. use App\Model\TahunProgram;
  9. use App\Model\TemplateProgram;
  10. use App\Model\TahunProgramDetail;
  11. use App\Model\UPTSModel;
  12. use App\Model\TahunProgramDetailUpt;
  13. use Auth;
  14. use Session;
  15. class PenentuanTargetController extends Controller
  16. {
  17. public function __construct()
  18. {
  19. $this->middleware('auth');
  20. $this->table = new TahunProgramDetail;
  21. }
  22. public function index () {
  23. $data = $this->table->whereHas('tahunProgram',function($q){
  24. $q->where('status',1);
  25. });
  26. $getStatus = Role::where('id',Auth::user()->role_id)->value('akses');
  27. if($getStatus!='administrator'){
  28. $data = $data->whereHas('templateProgram',function($qTemplateProgram){
  29. $qTemplateProgram->whereHas('templateProgramRole',function($qTemplateProgramRole){
  30. $qTemplateProgramRole->where('id_role',Auth::user()->role_id);
  31. });
  32. });
  33. }
  34. $data = $data->orderBy('id')->get();
  35. return view('penentuan-target/index',compact('data'));
  36. }
  37. public function edit($id) {
  38. $data = $this->table->with('tahunProgram','templateProgram','tahunProgramDetailUpt')->find($id);
  39. $upt = UPTSModel::distinct('office_id')->get();
  40. return view('penentuan-target/edit', compact('id','data','upt'));
  41. }
  42. public function detail($id) {
  43. $data = $this->table->with('tahunProgram','templateProgram','tahunProgramDetailUpt')->find($id);
  44. $upt = UPTSModel::distinct('office_id')->get();
  45. return view('penentuan-target/detail', compact('id','data','upt'));
  46. }
  47. public function update($id,Request $request){
  48. ini_set('max_input_vars',10000);
  49. $upt = UPTSModel::distinct('office_id')->get();
  50. $query = $this->table->find($id);
  51. $query->tipe_target = $request->tipe_target;
  52. $query->satuan_target = $request->satuan_target;
  53. $tmp = null;
  54. // dd($request->all());
  55. if($query->save()){
  56. //0 = spesifik upt; 1 = semua;
  57. if($request->tipe_target==0){
  58. $periode = $request->periode;
  59. $attributes = [];
  60. foreach($upt as $row){
  61. $attr = new TahunProgramDetailUpt;
  62. $attr->id_upt = $row->office_id;
  63. $attr->periode = $request->get('spesifik_periode_'.$periode.'_'.$row->office_id);
  64. $attr->target = $request->get('spesifik_target_'.$periode.'_'.$row->office_id);
  65. $attributes[] = $attr;
  66. }
  67. //for redirect to previous periode
  68. $tmp = $periode;
  69. $query->tahunProgramDetailUpt()->where('periode',$periode)->delete();
  70. $query->tahunProgramDetailUpt()->saveMany($attributes);
  71. }else{
  72. $attributes = [];
  73. for($periode=1;$periode<=($query->jumlah);$periode++){
  74. foreach($upt as $row){
  75. $attr = new TahunProgramDetailUpt;
  76. $attr->id_upt = $row->office_id;
  77. $attr->periode = $request->get('semua_periode_'.$periode);
  78. $attr->target = $request->get('semua_target_'.$periode);
  79. $attributes[] = $attr;
  80. }
  81. }
  82. $query->tahunProgramDetailUpt()->delete();
  83. $query->tahunProgramDetailUpt()->saveMany($attributes);
  84. }
  85. if($query){
  86. Session::flash('info', 'Penentuan Target Tahun '.$query->value);
  87. Session::flash('colors', 'green');
  88. Session::flash('icons', 'fas fa-clipboard-check');
  89. Session::flash('alert', 'Berhasil Menyimpan Data!');
  90. Session::flash('previous_periode', $tmp);
  91. }else{
  92. Session::flash('info', 'Penentuan Target Tahun '.$query->value);
  93. Session::flash('colors', 'red');
  94. Session::flash('icons', 'fas fa-times');
  95. Session::flash('alert', 'Gagal Menyimpan Data!');
  96. }
  97. }else{
  98. Session::flash('info', 'Penentuan Target Tahun '.$query->value);
  99. Session::flash('colors', 'red');
  100. Session::flash('icons', 'fas fa-times');
  101. Session::flash('alert', 'Gagal Menyimpan Data!');
  102. }
  103. //return to previous page
  104. return redirect()->back();
  105. }
  106. }