middleware('auth'); $this->table = new TemplateProgram; } public function index () { $data = $this->table->orderBy('id')->get(); $roles = Role::whereNotIn('akses',Role::SPECIAL_ACCESS)->get(); return view('pembuatan-program/pembuatan-program',compact('data','roles')); } public function detail($id) { $nama = Auth::user()->name; $input = ItemProgram::INPUT_TYPE_VARIABLE; $data = $this->table->with('itemProgram')->find($id); return view('pembuatan-program/detail', compact('nama', 'id','input','data')); } public function edit($id) { $nama = Auth::user()->name; $input = ItemProgram::INPUT_TYPE_VARIABLE; $masterOption = MasterOption::where('status',1)->get(); $data = $this->table->with('templateProgramDetail.itemProgram')->find($id); return view('pembuatan-program/edit', compact('nama', 'id','input','data','masterOption')); } public function subprogram(int $id_template_program, int $id_template_program_detail) { $data = TemplateProgramDetail::with('itemProgram')->find($id_template_program_detail); if(!$data){ return redirect()->back(); } $input = ItemProgram::INPUT_TYPE_VARIABLE; $masterOption = MasterOption::where('status',1)->get(); return view('pembuatan-program/subprogram', compact('data', 'input','data','masterOption')); } public function add(Request $request) { $input = ItemProgram::INPUT_TYPE_VARIABLE; $masterOption = MasterOption::where('status',1)->get(); $nama = Auth::user()->name; return view('pembuatan-program/add', compact('nama','input','masterOption')); } public function update($id,Request $request) { $query = $this->table->find($id); $query->nama = strtoupper($request->nama); $query->tipe = $request->tipe; $query->is_required = !empty($request->is_required)?$request->is_required:0; if(!empty($request->file('logo'))){ $fileName = time().'.'.$request->file('logo')->extension(); $move = $request->file('logo')->move(public_path('assets/images/template/'), $fileName); if($move){ $query->logo = $fileName; } } if($query->save()){ Session::flash('info', $query->nama); Session::flash('colors', 'green'); Session::flash('icons', 'fas fa-clipboard-check'); Session::flash('alert', 'Berhasil Menyimpan Data!'); return redirect()->back(); }else{ Session::flash('info', $query->nama); Session::flash('colors', 'red'); Session::flash('icons', 'fas fa-times'); Session::flash('alert', 'Gagal Menyimpan Data!'); return redirect()->back(); } } public function updateSubprogram($id_template_program,$id_template_program_detail,Request $request) { $query = TemplateProgramDetail::find($id_template_program_detail); $query->nama = strtoupper($request->nama); if($query->save()){ $itemProgramIds = []; if($request->has('total_label') && $request->total_label != ""){ $total_label = explode(",",$request->total_label); $total_tipe_kolom = explode(",",$request->total_tipe_kolom); $total_required = explode(",",$request->total_required); $total_description = explode(",",$request->total_description); $total_master_option = explode(",",$request->total_master_option); $tmp_master_option = 0; //delete unused data $total_description_filtered = array_filter($total_description); $item_program_selected = ItemProgram::where('id_template_program_detail',$query->id)->whereNotIn('id',$total_description_filtered); //delete existing metadata_program data //............... $item_program_selected->delete(); foreach($total_label as $key => $row){ $attribute['order_by'] = ($key+1); $attribute['label'] = $row; $attribute['tipe_kolom'] = $total_tipe_kolom[$key]; $attribute['is_required'] = $total_required[$key]=="true"?1:0; $attribute['id_template'] = $id_template_program; $id = !empty($total_description[$key])?$total_description[$key]:null; //special case for tipe_kolom select if($attribute['tipe_kolom'] == 'select'){ $attribute['id_master_option'] = $total_master_option[$tmp_master_option]; $tmp_master_option++; } if(empty($id)){ $kolom = $this->checkAvabilityColumn($query->id,$attribute['tipe_kolom']); $attribute['kolom'] = $kolom; } $qItemProgram = $query->itemProgram()->updateOrCreate(['id'=>$id],$attribute); $itemProgramIds[] = $qItemProgram->id; } } if($query){ Session::flash('info', $query->nama); Session::flash('colors', 'green'); Session::flash('icons', 'fas fa-clipboard-check'); Session::flash('alert', 'Berhasil Menyimpan Data!'); return redirect()->back(); }else{ Session::flash('info', $query->nama); Session::flash('colors', 'red'); Session::flash('icons', 'fas fa-times'); Session::flash('alert', 'Gagal Menyimpan Data!'); return redirect()->back(); } }else{ Session::flash('info', $query->nama); Session::flash('colors', 'red'); Session::flash('icons', 'fas fa-times'); Session::flash('alert', 'Gagal Menyimpan Data!'); return redirect()->back(); } } public function assignRole(Request $request) { $query = $this->table->find($request->id_template_program); if(!empty($query)){ $roles = Role::whereNotIn('akses',Role::SPECIAL_ACCESS)->get(); $ids = []; foreach($roles as $role){ if($request->has('id_role_'.$role->id)){ $attributes = [ 'id_role' => $role->id, 'id_template_program' => $query->id ]; $ids[] = $query->templateProgramRole()->updateOrCreate($attributes,$attributes)->id; } } $query->templateProgramRole()->whereNotIn('id',$ids)->delete(); if($query){ Session::flash('info', $query->nama); Session::flash('colors', 'green'); Session::flash('icons', 'fas fa-clipboard-check'); Session::flash('alert', 'Berhasil Menyimpan Data!'); return redirect()->back(); }else{ Session::flash('info', $query->nama); Session::flash('colors', 'red'); Session::flash('icons', 'fas fa-times'); Session::flash('alert', 'Gagal Menyimpan Data!'); return redirect()->back(); } }else{ Session::flash('info', $query->nama); Session::flash('colors', 'red'); Session::flash('icons', 'fas fa-times'); Session::flash('alert', 'Gagal Menyimpan Data!'); return redirect()->back(); } } //function to check avability column function checkAvabilityColumn($id,$tipe_kolom){ $templateProgramDetail = TemplateProgramDetail::find($id); $selected = $templateProgramDetail->itemProgram->pluck('kolom')->toArray(); $masterColumn = ItemProgram::COLUMN_CLASSIFICATION_VARIABLE[$tipe_kolom]; foreach($masterColumn as $row){ if(!in_array($row,$selected)){ return $row; } } } public function createSubprogram(Request $request){ $attribute = [ 'id_template_program' => $request->id_template_program, 'nama' => strtoupper($request->nama), ]; $query = TemplateProgramDetail::create($attribute); if($query){ Session::flash('info', $query->nama); Session::flash('colors', 'green'); Session::flash('icons', 'fas fa-clipboard-check'); Session::flash('alert', 'Berhasil Menyimpan Data!'); return redirect()->back(); }else{ Session::flash('info', $query->nama); Session::flash('colors', 'red'); Session::flash('icons', 'fas fa-times'); Session::flash('alert', 'Gagal Menyimpan Data!'); return redirect()->back(); } } public function create(Request $request){ $query = $this->table; $query->nama = strtoupper($request->nama); $query->tipe = $request->tipe; $query->is_required = !empty($request->is_required)?$request->is_required:0; if(!empty($request->file('logo'))){ $fileName = time().'.'.$request->file('logo')->extension(); $move = $request->file('logo')->move(public_path('assets/images/template/'), $fileName); if($move){ $query->logo = $fileName; } } if($query->save()){ Session::flash('info', $query->nama); Session::flash('colors', 'green'); Session::flash('icons', 'fas fa-clipboard-check'); Session::flash('alert', 'Berhasil Menyimpan Data!'); return redirect('pengaturan/pembuatan-program/edit/'.$query->id); }else{ Session::flash('info', $query->nama); Session::flash('colors', 'red'); Session::flash('icons', 'fas fa-times'); Session::flash('alert', 'Gagal Menyimpan Data!'); return redirect()->back(); } } public function delete($id, Request $request){ $query = $this->table->find($id); if($query->delete()){ Session::flash('info', 'Sukses'); Session::flash('colors', 'green'); Session::flash('icons', 'fas fa-clipboard-check'); Session::flash('alert', 'Berhasil Menghapus Data!'); return redirect('pengaturan/pembuatan-program'); }else{ Session::flash('info', 'Gagal'); Session::flash('colors', 'red'); Session::flash('icons', 'fas fa-times'); Session::flash('alert', 'Gagal Menghapus Data!'); return redirect()->back(); } } }