id(); $user = Staff::with('StaffDetail')->find($id); $site = SiteSetting::first(); return view('main-dashboard.setting.memo_index',compact('user','site')); } public function memoAdd(){ $id = Auth::guard('sadmin')->id(); $user = Staff::with('StaffDetail')->find($id); $department = Department::all(); $roles = Roles::all(); $site = SiteSetting::first(); return view('main-dashboard.setting.memo_detail_add',compact('user','department','roles','site')); } public function requestAddMemo(Request $request) { $id = Auth::guard('sadmin')->id(); $user = Staff::with('StaffDetail')->find($id); $validator = Validator::make($request->all(), [ 'tawaran' => ['required','regex:/^100+%$|[0-9]+%/'], 'attachment.*' => 'mimes:pdf|max:2048', ]); if ($validator->fails()) { return redirect()->back()->withInput()->withErrors($validator); } $kesalahan = $request->get('kesalahan'); if(!empty($kesalahan)){ $sahkan = ''; if($user->StaffDetail->roles_access == "Ketua Jabatan"){ $sahkan = $user->_id; } $faulty = Faulty::where('itkod', $request->get('kesalahan'))->first(); if(!empty($faulty)){ if($request->hasfile('attachment')){ $memo = Memo::create([ 'itkod' => $request->get('kesalahan'), 'modul' => $request->get('kategori_modul'), 'jenis_memo' => $request->get('jenis_memo'), 'no_rujukan' => $request->get('no_rujukan'), 'tawaran_kompaun' => $request->get('tawaran'), 'tarikh_mula' => $request->get('tarikh_mula'), 'tarikh_akhir' => $request->get('tarikh_akhir'), 'dikeluarkan' => $user->_id, 'disahkan' => $sahkan, 'jenis_data' => 'pdf', 'subjek' => $request->get('subjek'), 'penerangan' => $request->get('penerangan'), ]); $upload = []; foreach($request->file('attachment') as $f){ $upload[] = [ 'name' => 'file[]', 'contents' => fopen( $f->getPathname(), 'r' ), 'filename' => $f->getClientOriginalName() ]; } $upload [] = [ 'name' => 'type', 'contents' => 'mbip' ]; $client = new \GuzzleHttp\Client(); $result = $client->request('POST', 'https://files.sipadu.my/api/upload/memo/pdf', [ 'multipart' => $upload ]); $response = json_decode($result->getBody()->getContents()); if($response->success == true){ foreach ($response->data as $key => $d) { $attach = new Attachment(); $attach->path = $d; $memo->attachment()->save($attach); } }else if($response->success == false){ return redirect()->back()->with('error_msg', 'Gagal! memuatnaik pdf'); } if($sahkan != ''){ $kpd = 'null'; $this->dispatch(new UpdateCompoundPrice($kpd)); } return redirect()->back()->with('success_msg', 'Berjaya! Simpan rekod memo di kategori akta kesalahan ('.$faulty->nama.')'); }else{ $memo = Memo::create([ 'itkod' => $request->get('kesalahan'), 'modul' => $request->get('kategori_modul'), 'jenis_memo' => $request->get('jenis_memo'), 'no_rujukan' => $request->get('no_rujukan'), 'tawaran_kompaun' => $request->get('tawaran'), 'tarikh_mula' => $request->get('tarikh_mula'), 'tarikh_akhir' => $request->get('tarikh_akhir'), 'dikeluarkan' => $user->_id, 'disahkan' => $sahkan, 'jenis_data' => 'manual', 'subjek' => $request->get('subjek'), 'penerangan' => $request->get('penerangan'), ]); if($sahkan != ''){ $kpd = 'null'; $this->dispatch(new UpdateCompoundPrice($kpd)); } return redirect()->back()->with('success_msg', 'Berjaya! Simpan rekod memo di kategori akta kesalahan ('.$faulty->nama.')'); } }else{ return redirect()->back()->withInput()->with('error_msg','Tidak Berjaya Simpan Rekod! Rekod Akta Kesalahan '.$request->get('kesalahan').' tidak ditemui'); } }else { return redirect()->back()->withInput()->with('error_msg','Tidak Berjaya Simpan Rekod! Pastikan anda pilih ketegori/akta kesalahan untuk memo berjalan dengan lancar'); } } public function memoEdit($_id){ $id = Auth::guard('sadmin')->id(); $user = Staff::with('StaffDetail')->find($id); $department = Department::all(); $roles = Roles::all(); $memo = Memo::where('_id',$_id)->first(); $faulty = Faulty::where('itkod',$memo->itkod)->first(); $site = SiteSetting::first(); return view('main-dashboard.setting.memo_detail_edit',compact('user','department','roles','memo','faulty','site')); } public function requestEditMemo(Request $request) { $id = Auth::guard('sadmin')->id(); $user = Staff::with('StaffDetail')->find($id); $validator = Validator::make($request->all(), [ 'tawaran' => ['required','regex:/^100+%$|[0-9]+%/'], 'attachment.*' => 'mimes:pdf|max:2048', ]); if ($validator->fails()) { return redirect()->back()->withInput()->withErrors($validator); } $sahkan = ''; if($user->StaffDetail->roles_access == "Ketua Jabatan"){ $sahkan = $user->_id; } $memo = Memo::with('Attachment')->where('_id',$request->memo_id)->first(); $now = Carbon::now(); $gDate = $now->format('F Y'); if(!empty($memo)){ $faulty = Faulty::where('itkod', $memo->itkod)->first(); if(!empty($faulty)){ if($request->hasfile('attachment')){ $uploadNew = false; if($memo->jenis_data == "pdf"){ foreach ($memo->Attachment as $m) { $m->delete(); } $uploadNew = true; }else if($memo->jenis_data == "manual"){ $uploadNew = true; } if($uploadNew == true){ $memo->jenis_memo = $request->get('jenis_memo'); $memo->no_rujukan = $request->get('no_rujukan'); $memo->tawaran_kompaun = $request->get('tawaran'); $memo->tarikh_mula = $request->get('tarikh_mula'); $memo->tarikh_akhir = $request->get('tarikh_akhir'); $memo->dikeluarkan = $user->_id; $memo->jenis_data = 'pdf'; $memo->subjek = $request->get('subjek'); $memo->penerangan = $request->get('penerangan'); $memo->save(); $upload = []; foreach($request->file('attachment') as $f){ $upload[] = [ 'name' => 'file[]', 'contents' => fopen( $f->getPathname(), 'r' ), 'filename' => $f->getClientOriginalName() ]; } $upload [] = [ 'name' => 'type', 'contents' => 'mbip' ]; $client = new \GuzzleHttp\Client(); $result = $client->request('POST', 'https://files.sipadu.my/api/upload/memo/pdf', [ 'multipart' => $upload ]); $response = json_decode($result->getBody()->getContents()); if($response->success == true){ foreach ($response->data as $key => $d) { $attach = new Attachment(); $attach->path = $d; $memo->attachment()->save($attach); } }else if($response->success == false){ return redirect()->back()->with('error_msg', 'Gagal! memuatnaik pdf'); } $compound = Compound::with('ConfidentialFile')->where('seksyen_kesalahan', $memo->itkod)->get(); $faulty = Faulty::where('itkod', $memo->itkod )->first(); if(count($compound) > 0){ $historyData = [ 'tarikh_kumpulan' => $gDate, ]; foreach($compound as $c){ $subHistory = [ 'no_siri' => $c->ConfidentialFile->no_siri, 'tajuk' => "Kemaskini Memo[ ".$memo->no_rujukan." ] : ".$memo->subjek, 'huraian' => "Memo ini telah dikemaskini oleh ".$user->roles_access." _id."/profile'>".$user->StaffDetail->full_name.".", ]; $groupByDate = History::where('tarikh_kumpulan', $gDate)->first(); if(!empty($groupByDate)){ $groupByDate->subhistory()->create($subHistory); $c->ConfidentialFile->history()->attach($groupByDate); }else{ $history = History::create($historyData); $history->subhistory()->create($subHistory); $c->ConfidentialFile->history()->attach($history); } } } if($memo->disahkan != ''){ $kpd = 'null'; $this->dispatch(new UpdateCompoundPrice($kpd)); } return redirect()->back()->with('success_msg', 'Berjaya! Kemaskini rekod memo di kategori akta kesalahan ('.$faulty->nama.')'); } }else{ $uploadNew = false; if($memo->jenis_data == "pdf"){ foreach ($memo->Attachment as $m) { $m->delete(); } $uploadNew = true; }else if($memo->jenis_data == "manual"){ $uploadNew = true; } if($uploadNew == true){ $memo->jenis_memo = $request->get('jenis_memo'); $memo->no_rujukan = $request->get('no_rujukan'); $memo->tawaran_kompaun = $request->get('tawaran'); $memo->tarikh_mula = $request->get('tarikh_mula'); $memo->tarikh_akhir = $request->get('tarikh_akhir'); $memo->dikeluarkan = $user->_id; $memo->jenis_data = 'manual'; $memo->subjek = $request->get('subjek'); $memo->penerangan = $request->get('penerangan'); $memo->save(); $compound = Compound::with('ConfidentialFile')->where('seksyen_kesalahan', $memo->itkod)->get(); $faulty = Faulty::where('itkod', $memo->itkod )->first(); if(count($compound) > 0){ $historyData = [ 'tarikh_kumpulan' => $gDate, ]; foreach($compound as $c){ $subHistory = [ 'no_siri' => $c->ConfidentialFile->no_siri, 'tajuk' => "Kemaskini Memo[ ".$memo->no_rujukan." ] : ".$memo->subjek, 'huraian' => "Memo ini telah dikemaskini oleh ".$user->roles_access." _id."/profile'>".$user->StaffDetail->full_name.".", ]; $groupByDate = History::where('tarikh_kumpulan', $gDate)->first(); if(!empty($groupByDate)){ $groupByDate->subhistory()->create($subHistory); $c->ConfidentialFile->history()->attach($groupByDate); }else{ $history = History::create($historyData); $history->subhistory()->create($subHistory); $c->ConfidentialFile->history()->attach($history); } } } if($memo->disahkan != ''){ $kpd = 'null'; $this->dispatch(new UpdateCompoundPrice($kpd)); } return redirect()->back()->with('success_msg', 'Berjaya! Kemaskini rekod memo di kategori akta kesalahan ('.$faulty->nama.')'); } } }else{ return redirect()->back()->withInput()->with('error_msg','Tidak Berjaya Kemaskini Rekod! Rekod Akta Kesalahan '.$request->get('kesalahan').' tidak ditemui'); } }else{ return redirect()->back()->withInput()->with('error_msg','Tidak Berjaya Kemaskini Rekod! Rekod memo tidak ditemui'); } } public function requestViewMemoPdf($_id) { $site = SiteSetting::first(); $memo = Memo::with('Attachment')->where('_id',$_id)->first(); $staffD = Staff::with('StaffDetail')->where('_id',$memo->dikeluarkan)->first(); $staffS = Staff::with('StaffDetail')->where('_id',$memo->disahkan)->first(); $kesalahan = Faulty::where('itkod', $memo->itkod)->first(); $dikeluarkan = ''; $disahkan = ''; $faulty = ''; $modul = ''; if(!empty($staffD)){ $dikeluarkan = $staffD->StaffDetail->full_name; } if(!empty($staffS)){ $disahkan = $staffD->StaffDetail->full_name; } if(!empty($kesalahan)){ $faulty ='['.$kesalahan->itkod.'] '.$kesalahan->nama; } if($memo->modul != '-'){ $r = Roles::where('kod',$memo->modul)->first(); if(!empty($r)){ $modul = $r->name; } } $update = Carbon::parse($memo->updated)->toDateTimeString(); $mula = date('d/m/Y h:i a', strtotime($memo->tarikh_mula)); $akhir = date('d/m/Y', strtotime($memo->tarikh_akhir)); $pdf = PDF::loadView('pdf.memo', compact('memo','dikeluarkan','disahkan','update','mula','akhir','faulty','modul','site')); $pdf->setPaper('A4', 'potrait'); $destinationPath = 'document/memo'; if(!File::exists(public_path().'/'.$destinationPath)) { File::makeDirectory(public_path().'/'.$destinationPath, $mode = 0777, true, true); } if($memo->jenis_data == "manual"){ return $pdf->stream(); }else if($memo->jenis_data == "pdf"){ $pdf->save(public_path().'/'.$destinationPath.'/'.$memo->_id.'.pdf'); $availablePDF[] = public_path().'/'.$destinationPath.'/'.$memo->_id.'.pdf'; $merges = PDFMerger::init(); foreach($memo->Attachment as $key => $a){ $temp = file_put_contents(public_path().'/'.$destinationPath.'/temp-'.$memo->_id.'-'.$key.'.pdf', fopen($a->path, 'r')); $availablePDF[] = public_path().'/'.$destinationPath.'/temp-'.$memo->_id.'-'.$key.'.pdf'; } foreach($availablePDF as $a){ $merges->addPDF($a, 'all'); } $merges->merge(); foreach($availablePDF as $i => $in){ File::delete($in); } File::deleteDirectory(public_path().'/'.$destinationPath); $merges->save(public_path().'/'.$destinationPath.'/'.$memo->_id.'.pdf',"browser"); } } /** * Create a memo list controller. * * @return json */ public function noticeIndex(){ $id = Auth::guard('sadmin')->id(); $user = Staff::with('StaffDetail')->find($id); $site = SiteSetting::first(); return view('main-dashboard.setting.template_notice_index', compact('user','site')); } public function viewNoticeAdd(){ $id = Auth::guard('sadmin')->id(); $user = Staff::with('StaffDetail')->find($id); $department = Department::all(); $site = SiteSetting::first(); return view('main-dashboard.setting.template_notice_add',compact('user', 'department','site')); } public function viewNoticeEdit($_id){ $id = Auth::guard('sadmin')->id(); $user = Staff::with('StaffDetail')->find($id); $department = Department::all(); $template = TemplateNotice::with('Attachment')->where('_id',$_id)->first(); $de = Department::where('_id', $template->department_id)->first(); $seksyen = Faulty::where('jbkod', $de->jbkod)->where('akkod', $template->akta_kesalahan)->get(); return view('main-dashboard.setting.template_notice_edit',compact('user','template','department','seksyen')); } public function addTemplateNotice(Request $request){ $id = Auth::guard('sadmin')->id(); $user = Staff::with('StaffDetail')->find($id); $validator = Validator::make($request->all(), [ 'attachment' => 'mimes:jpeg,jpg|max:2048', ]); if ($validator->fails()) { return redirect()->back()->withInput()->withErrors($validator); } $dataTemplate = [ 'akta_kesalahan' => $request->acts, 'seksyen_kesalahan' => $request->seksyen, 'jenis_amaran' => $request->jenis_amaran, 'tempoh_hantar' => $request->tempoh, 'no_rujukan' => $request->no_rujukan, 'subjek' => $request->subjek, 'kandungan' => $request->kandungan, // 'nama_pengirim' => $request->nama_pengirim, // 'jawatan_pengirim' => $request->jawatan_pengirim, 'status' => 'tidak aktif' ]; $department = Department::where('jbkod', $request->department)->first(); if(!empty($department)){ $template = TemplateNotice::create($dataTemplate); $department->templatenotice()->save($template); return redirect()->back()->with('success_msg', 'Berjaya! Simpan rekod templat notis amaran'); }else{ return redirect()->back()->withInput()->with('error_msg', 'Tidak Berjaya! Simpan rekod templat notis amaran'); } // if($request->hasfile('attachment')){ // $destinationPath = 'document/notis-amaran'; // $uploaded = public_path().'/'.$destinationPath; // $allowedfileExtension = ['jpg','jpeg']; // $a = $request->file('attachment'); // $extension = $a->getClientOriginalExtension(); // $check=in_array($extension,$allowedfileExtension); // if($check) { // $filename = $template->_id; // $a->move($destinationPath, $filename.'.'.$extension); // $pathImage = '/'.$destinationPath.'/'.$filename.'.'.$extension; // $attach = new Attachment(); // $attach->path = $pathImage; // $template->attachment()->save($attach); // } // }else{ // return redirect()->back()->withInput()->with('error_msg', 'Tidak Berjaya! Simpan rekod templat notis amaran'); // } } public function editTemplateNotice(Request $request){ $id = Auth::guard('sadmin')->id(); $user = Staff::with('StaffDetail')->find($id); $validator = Validator::make($request->all(), [ 'attachment' => 'mimes:jpeg,jpg|max:2048', ]); if ($validator->fails()) { return redirect()->back()->withInput()->withErrors($validator); } $template = TemplateNotice::where('_id',$request->_id)->first(); if(!empty($template)){ $department = Department::where('jbkod', $request->department)->first(); if(!empty($department)){ $template->department_id = $department->_id; $template->akta_kesalahan = $request->acts; $template->seksyen_kesalahan = $request->seksyen; $template->jenis_amaran = $request->jenis_amaran; $template->tempoh_hantar = $request->tempoh; $template->no_rujukan = $request->no_rujukan; $template->subjek = $request->subjek; $template->kandungan = $request->kandungan; $template->status = 'tidak aktif'; $template->save(); return redirect()->back()->with('success_msg', 'Berjaya! Kemaskini rekod templat notis amaran. Anda boleh "aktifkan" notis amaran ini di "Senarai Templat Notis Amaran"'); }else{ return redirect()->back()->withInput()->with('error_msg', 'Tidak Berjaya! rekod jabatan tidak ditemui'); } }else{ return redirect()->back()->withInput()->with('error_msg', 'Tidak Berjaya! rekod templat notis amaran tidak ditemui'); } } public function viewLetterPDF($_id,$kpd){ $compound = Compound::where('kpd',$kpd)->first(); $site = SiteSetting::first(); $template = TemplateNotice::where('_id',$_id)->first(); if(!empty($template)){ $now = Carbon::now()->format('d/m/Y h:i:s A'); $pdf = PDF::loadView('pdf.template_letter', compact('template','now','compound','site')); $pdf->setPaper('A4', 'potrait'); return $pdf->stream(); }else{ $template = LetterNotice::with('Attachment')->where('_id',$_id)->first(); if(!empty($template)){ $now = Carbon::now()->format('d/m/Y h:i:s A'); $pdf = PDF::loadView('pdf.template_letter', compact('template','now','compound','site')); $pdf->setPaper('A4', 'potrait'); return $pdf->stream(); } } } public function updatePosNumber(Request $request){ $letter = LetterNotice::where('_id',$request->letter_id)->first(); if(!empty($letter)){ $compound = Compound::with('ConfidentialFile')->where('_id', $letter->compound_id)->first(); if($request->hasFile('gambar_pos')){ $validator = Validator::make($request->all(), [ 'gambar_pos' => 'mimes:jpg,jpeg', ]); if ($validator->fails()) { return redirect()->back()->withInput()->withErrors($validator); } $path = ''; $destinationPath = 'document/'.$compound->ConfidentialFile->no_siri.'/notice'; $a = $request->file('gambar_pos'); $extension = $a->getClientOriginalExtension(); $filename = 'pos_notice_'.$letter->_id; $a->move($destinationPath,$filename.'.'.$extension); $path = $destinationPath.'/'.$filename.'.'.$extension; $letter->no_pos = $request->no_pos; $letter->save(); $attach = new Attachment(); $attach->path = $path; $letter->attachment()->save($attach); return redirect()->back()->with('success_msg', 'Berjaya! simpan nombor pos'); }else{ return redirect()->back()->withInput()->with('error_msg', 'Tidak Berjaya! sila masukkan gamabr pos sekali'); } }else{ return redirect()->back()->withInput()->with('error_msg', 'Tidak Berjaya! rekod surat notis amaran tidak ditemui'); } } /** * Laman web controller. * * @return json */ public function generalSetting(){ $id = Auth::guard('sadmin')->id(); $user = Staff::with('StaffDetail')->find($id); $site = SiteSetting::first(); return view('main-dashboard.setting.general_setting', compact('user','site')); } public function letterSetting(){ $id = Auth::guard('sadmin')->id(); $user = Staff::with('StaffDetail')->find($id); $site = SiteSetting::first(); return view('main-dashboard.setting.letter_setting', compact('user','site')); } public function compoundSetting(){ $id = Auth::guard('sadmin')->id(); $user = Staff::with('StaffDetail')->find($id); $site = SiteSetting::first(); return view('main-dashboard.setting.compound_setting', compact('user','site')); } public function updateSettingVariables(Request $request){ $site = SiteSetting::first(); if($request->umum == "true"){ $site->site_title = $request->site_title; $site->site_tagline = $request->site_tagline; $site->save(); if($request->hasFile('favicon')){ $path = ''; $validator = Validator::make($request->all(), [ 'favicon' => 'mimes:png|dimensions:width=32,height=32', ]); if ($validator->fails()) { return redirect()->back()->withInput()->withErrors($validator); } $destinationPath = 'uploads'; $a = $request->file('favicon'); $extension = $a->getClientOriginalExtension(); $filename = 'favicon'; $a->move($destinationPath,$filename.'.'.$extension); $path = $destinationPath.'/'.$filename.'.'.$extension; $site->favicon = $path; $site->save(); } if($request->hasFile('logo')){ $path = ''; $validator = Validator::make($request->all(), [ 'logo' => 'mimes:png|dimensions:width=614,height=167', ]); if ($validator->fails()) { return redirect()->back()->withInput()->withErrors($validator); } $destinationPath = 'uploads'; $a = $request->file('logo'); $extension = $a->getClientOriginalExtension(); $filename = 'logo'; $a->move($destinationPath,$filename.'.'.$extension); $path = $destinationPath.'/'.$filename.'.'.$extension; $site->logo = $path; $site->save(); } return redirect()->back()->with('success_msg', 'Berjaya! simpan perubahan'); } if($request->letter == "true"){ $site->building_name = $request->building_name; $site->address = $request->address; $site->state_code = $request->postcode; $site->no_tel = $request->no_tel; $site->no_fax = $request->no_faks; $site->email = $request->email; $site->save(); if($request->hasFile('letter_head')){ $path = ''; $validator = Validator::make($request->all(), [ 'letter_head' => 'mimes:png|dimensions:max_width=700,max_height=109', ]); if ($validator->fails()) { return redirect()->back()->withInput()->withErrors($validator); } $destinationPath = 'uploads'; $a = $request->file('letter_head'); $extension = $a->getClientOriginalExtension(); $filename = 'letter_head'; $a->move($destinationPath,$filename.'.'.$extension); $path = $destinationPath.'/'.$filename.'.'.$extension; $site->letter_head = $path; $site->save(); } return redirect()->back()->with('success_msg', 'Berjaya! simpan perubahan'); } if($request->compound == "true"){ if($request->hasFile('bg_compound')){ $path = ''; $validator = Validator::make($request->all(), [ 'bg_compound' => 'mimes:png|dimensions:width=450,height=450', ]); if ($validator->fails()) { return redirect()->back()->withInput()->withErrors($validator); } $destinationPath = 'uploads'; $a = $request->file('bg_compound'); $extension = $a->getClientOriginalExtension(); $filename = 'bg_compound'; $a->move($destinationPath,$filename.'.'.$extension); $path = $destinationPath.'/'.$filename.'.'.$extension; $site->bg_compound = $path; $site->save(); } return redirect()->back()->with('success_msg', 'Berjaya! simpan perubahan'); } } /** * Api Integration controller. * * @return json */ public function viewApiKey(){ $id = Auth::guard('sadmin')->id(); $user = Staff::with('StaffDetail')->find($id); $site = SiteSetting::first(); return view('main-dashboard.api.view_api_key', compact('user','site')); } public function viewApiIntegration(){ $id = Auth::guard('sadmin')->id(); $user = Staff::with('StaffDetail')->find($id); $site = SiteSetting::first(); $api = ApiKey::all(); return view('main-dashboard.api.view_api_integration_index', compact('user','site','api')); } public function addApiKey(Request $request){ $id = Auth::guard('sadmin')->id(); $user = Staff::with('StaffDetail')->find($id); $scopes = array(); if($request->has('compound_search')){ array_push($scopes, 'compound.search'); } if($request->has('compound_update')){ array_push($scopes, 'compound.update.status'); } do { $api_key = str_random(7); } while (ApiKey::where("key_prefix", "=", $api_key)->first() instanceof Api); $data = [ 'name' => $request->name, 'key_prefix' => $api_key, 'scopes' => $scopes ]; $api = ApiKey::create($data); return redirect()->back()->with('success_msg', 'Successfully store new Api Key'); } public function addIntegrasi(Request $request){ $id = Auth::guard('sadmin')->id(); $user = Staff::with('StaffDetail')->find($id); $api = ApiKey::where('_id',$request->type_api)->first(); if(!empty($api)){ $api_key = $api->key_prefix.'.'.str_random(32); $data = [ 'client' => $request->client, 'key' => $api_key, 'status' => 'active' ]; $apiI = $api->apiintegrasi()->create($data); return redirect()->back()->with('success_msg', 'Successfully store clients'); } } }