| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286 |
- <?php
- namespace App\Http\Controllers\Core;
- use App\Http\Controllers\Controller;
- use Illuminate\Support\Facades\Crypt;
- use Illuminate\Http\Request;
- use App\Model\Privillage\Role;
- use App\Model\Inspeksi\Inspeksi;
- use App\Model\ItemProgram;
- use App\Model\TemplateProgram;
- use App\Model\MasterOption;
- use App\Model\TemplateProgramDetail;
- use Auth;
- use Session;
- class PembuatanProgramController extends Controller
- {
- public function __construct()
- {
- $this->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();
- }
- }
- }
|