middleware('auth'); $this->table = new MetadataProgram; } public function index(Request $request){ $raw = TahunProgramDetail::find($request->id); $getStatus = Role::where('id',Auth::user()->role_id)->value('akses'); $tahunProgramDetail = TahunProgramDetail::where('id_template_program',$raw->id_template_program)->where('id_tahun_program',$raw->id_tahun_program)->get(); $template = TemplateProgramDetail::with('itemProgram')->whereIn('id',$tahunProgramDetail->pluck('id_template_program_detail'))->get(); $masterTemplate = TemplateProgram::find($raw->id_template_program); $upt = UPTSModel::distinct('office_id')->get(); $metadata = new MetadataProgram; $provinsi = Provinsi::get(); $kabkot = KabupatenKota::get(); return view('program.metadata_program.core.index',compact('raw','upt','masterTemplate','template','metadata','tahunProgramDetail','provinsi','kabkot','getStatus')); } public function list($id, Request $request){ $getStatus = Role::where('id',Auth::user()->role_id)->value('akses'); $tahunProgramDetail = TahunProgramDetail::find($id); $metadata = new MetadataProgram; $metadata = $metadata->with('upt')->where('id_tb_tahun_program_detail',$tahunProgramDetail->id)->get(); if(!empty($request->dari) && !empty($request->sampai)){ $metadata = $metadata->whereBetween('created_at', array($request->dari, $request->sampai)); } if($getStatus!='administrator'){ $id_upt = Auth::user()->upt; $metadata = $metadata->where('id_upt',$id_upt); }else if(!empty($request->upt)){ $metadata = $metadata->where('id_upt',$request->upt); } if ($request->filled('type') && $request->type = 'WEB') { $metadata = datatables()->of($metadata); $metadata = $metadata->editColumn('id', function($data) { return $data['id']; }); $metadata = $metadata->editColumn('targetPeriode', function($data) { return $data['targetPeriode']; }); $metadata = $metadata->editColumn('periode', function($data) { return $data['periode']; }); $metadata = $metadata->editColumn('upt', function($data) { return (!empty($data['upt']) && !empty($data['upt'][0]))?$data['upt'][0]['office_name']:'-'; }); $rawColumn = []; foreach($tahunProgramDetail->templateProgramDetail->itemProgram->sortBy('order_by') as $key => $row){ if($row->tipe_kolom == 'file'){ $rawColumn[] = $row->kolom; } $metadata = $metadata->editColumn($row->kolom, function($data) use($key,$row) { if(!empty($data[$row->kolom])){ if($row->tipe_kolom=='file'){ return ''; }else{ return $data[$row->kolom]; } }else{ return '-'; } }); } $metadata = $metadata->rawColumns($rawColumn)->make(true); return $metadata; } } public function create(Request $request){ $raw = TahunProgramDetail::find($request->id_tahun_program_detail); $masterTemplate = TemplateProgram::find($raw->id_template_program); $tahunProgramDetail = TahunProgramDetail::with('templateProgramDetail.itemProgram')->where('id_template_program',$raw->id_template_program)->where('id_tahun_program',$raw->id_tahun_program)->get(); $tahun_program = TahunProgramDetail::with('tahunProgram')->find($request->id_tahun_program_detail); if(empty($tahun_program->tahunProgram) || (!empty($tahun_program->tahunProgram) && $tahun_program->tahunProgram->status!=1)){ Session::flash('info', 'Gagal Menyimpan Data'); Session::flash('colors', 'red'); Session::flash('icons', 'fas fa-times'); Session::flash('alert', 'Tahun Program belum aktif/sudah berakhir. silakan hubungi administrator Anda!'); return redirect()->back(); } foreach($tahunProgramDetail as $parent){ $template = TemplateProgramDetail::with('itemProgram')->find($parent->id_template_program_detail); $attribute = [ 'id_tb_tahun_program_detail' => $parent->id, 'id_upt' => !empty(Auth::user())?Auth::user()->upt:null, ]; if($masterTemplate->is_required == 1 || $template->id==$request->selected_program){ foreach($template->itemProgram as $row){ if($row->tipe_kolom=='file'){ if(!empty($request->file('value_'.$row->kolom.'_'.$template->id))){ $fileName = time().'.'.$request->file('value_'.$row->kolom.'_'.$template->id)->extension(); $move = $request->file('value_'.$row->kolom.'_'.$template->id)->move(public_path('assets/images/attachment'), $fileName); if($move){ $attribute[$row->kolom] = $fileName; } } }else{ // $attribute[$row->kolom] = $request->get('value_'.$row->kolom.'_'.$template->id); $inputValue = $request->get('value_'.$row->kolom.'_'.$template->id); $attribute[$row->kolom] = $inputValue === "-" ? null : $inputValue; } } $attribute['periode'] = $parent->total_periode_active+1; $query = MetadataProgram::create($attribute); if(!$query){ Session::flash('info', $template->nama); Session::flash('colors', 'red'); Session::flash('icons', 'fas fa-times'); Session::flash('alert', 'Gagal Menyimpan Data!'); return redirect()->back(); } //insert notification if success $message = Auth::user()->name.' telah berhasil menambahkan data '.$template->nama; $this->createNotification($query,$message); } } Session::flash('info', $template->nama); Session::flash('colors', 'green'); Session::flash('icons', 'fas fa-clipboard-check'); Session::flash('alert', 'Berhasil Menyimpan Data!'); return redirect()->back(); } function createNotification(MetadataProgram $data, string $message){ config(['app.locale' => 'id']); Carbon::setLocale('id'); date_default_timezone_set('Asia/Jakarta'); $tahunProgramDetail = TahunProgramDetail::find($data->id_tb_tahun_program_detail); $notif = [ 'message' => $message, 'id_tahun_program' => $tahunProgramDetail->id_tahun_program, 'id_template_program' => $tahunProgramDetail->id_template_program, 'id_template_program_detail' => $tahunProgramDetail->id_template_program_detail, 'id_upt' => $data->id_upt, 'readable_admin' => 1, 'readable' => 1, 'created_by' => Auth::user()->id, 'updated_by' => Auth::user()->id, ]; $query = MetadataProgramNotification::create($notif); return $query; } public function update($id, Request $request){ $tahun_program_detail = TahunProgramDetail::with('tahunProgram')->find($request->value_id_tahun_program_detail); if(empty($tahun_program_detail->tahunProgram) || (!empty($tahun_program_detail->tahunProgram) && $tahun_program_detail->tahunProgram->status!=1)){ Session::flash('info', 'Gagal Menyimpan Data'); Session::flash('colors', 'red'); Session::flash('icons', 'fas fa-times'); Session::flash('alert', 'Tahun Program belum aktif/sudah berakhir. silakan hubungi administrator Anda!'); return redirect()->back(); } $template = TemplateProgramDetail::with('itemProgram')->find($request->value_id_template_program_detail); $attribute = [ 'id_tb_tahun_program_detail' => $tahun_program_detail->id, 'id_upt' => !empty(Auth::user())?Auth::user()->upt:null, ]; foreach($template->itemProgram as $row){ if($row->tipe_kolom=='file'){ if(!empty($request->file('value_'.$row->kolom.'_'.$template->id))){ $fileName = time().'.'.$request->file('value_'.$row->kolom.'_'.$template->id)->extension(); $move = $request->file('value_'.$row->kolom.'_'.$template->id)->move(public_path('assets/images/attachment'), $fileName); if($move){ $attribute[$row->kolom] = $fileName; } } }else{ $attribute[$row->kolom] = $request->get('value_'.$row->kolom.'_'.$template->id); } } $query = MetadataProgram::find($id)->update($attribute); if($query){ //insert notification $query = MetadataProgram::find($id); $message = Auth::user()->name.' telah berhasil mengubah data '.$template->nama; $this->createNotification($query,$message); Session::flash('info', $template->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', $template->nama); Session::flash('colors', 'red'); Session::flash('icons', 'fas fa-times'); Session::flash('alert', 'Gagal Menyimpan Data!'); return redirect()->back(); } } public function delete($id){ $query = MetadataProgram::with('tbTahunProgramDetail')->find($id); if(!empty($query->tbTahunProgramDetail)){ $template = TemplateProgram::find($query->tbTahunProgramDetail->id_template_program); //insert notification $message = Auth::user()->name.' telah berhasil menghapus data '.$template->nama; $this->createNotification($query,$message); } if(!empty($query) && $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()->back(); }else{ Session::flash('info', 'Gagal'); Session::flash('colors', 'red'); Session::flash('icons', 'fas fa-times'); Session::flash('alert', 'Gagal Menghapus Data!'); return redirect()->back(); } } public function export(Request $request){ $push = []; $raw = TahunProgramDetail::find($request->id); $tahunProgramDetail = TahunProgramDetail::where('id_template_program',$raw->id_template_program)->where('id_tahun_program',$raw->id_tahun_program)->get(); $filename = !empty($raw->templateProgram)?$raw->templateProgram->nama:'-'; //cleanup invalid character $filename = preg_replace('/[^a-zA-Z0-9_ () -]/s', '', $filename); return (new MetadataProgramExport($request))->download($filename.'.xlsx'); } }