id();
$user = Staff::with('StaffDetail')->find($id);
$site = SiteSetting::first();
return view('officer.setting.memo_index',compact('user','site'));
}
public function memoAdd(){
$id = Auth::guard('ofr')->id();
$user = Staff::with('StaffDetail')->find($id);
$department = Department::where('_id', $user->StaffDetail->jbkod)->first();
$roles = Roles::all();
$site = SiteSetting::first();
return view('officer.setting.memo_detail_add',compact('user','department','roles','site'));
}
public function requestAddMemo(Request $request) {
$id = Auth::guard('ofr')->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('ofr')->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('officer.setting.memo_detail_edit',compact('user','department','roles','memo','faulty','site'));
}
public function requestEditMemo(Request $request) {
$id = Auth::guard('ofr')->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($memo->jenis_data == "manual"){
return $pdf->stream();
}else if($memo->jenis_data == "pdf"){
$pdf->save(public_path().'/'.$destinationPath.'/'.$memo->_id.'.pdf');
$merges = PDFMerger::init();
$merges->addPDF(public_path().'/'.$destinationPath.'/'.$memo->_id.'.pdf', 'all');
foreach($memo->Attachment as $a){
$merges->addPDF(public_path().$a->path,'all');
}
$merges->merge();
$merges->save(public_path().'/'.$destinationPath.'/'.$memo->_id.'.pdf',"browser");
}
}
/**
* Create a notice list controller.
*
* @return json
*/
public function noticeIndex(){
$id = Auth::guard('ofr')->id();
$user = Staff::with('StaffDetail')->find($id);
$site = SiteSetting::first();
return view('officer.setting.template_notice_index', compact('user','site'));
}
public function viewNoticeAdd(){
$id = Auth::guard('ofr')->id();
$user = Staff::with('StaffDetail')->find($id);
$site = SiteSetting::first();
$department = Department::where('_id',$user->StaffDetail->jbkod)->first();
return view('officer.setting.template_notice_add',compact('user','site','department'));
}
public function viewNoticeEdit($_id){
$id = Auth::guard('ofr')->id();
$user = Staff::with('StaffDetail')->find($id);
$site = SiteSetting::first();
$template = TemplateNotice::with('Attachment')->where('_id',$_id)->first();
$seksyen = Faulty::where('jbkod', $user->StaffDetail->jbkod)->where('akkod', $template->akta_kesalahan)->get();
$department = Department::where('_id',$user->StaffDetail->jbkod)->first();
return view('officer.setting.template_notice_edit',compact('user','template','site','seksyen','department'));
}
public function addTemplateNotice(Request $request){
$id = Auth::guard('ofr')->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('_id', $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');
}
}
public function editTemplateNotice(Request $request){
$id = Auth::guard('ofr')->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('_id', $user->StaffDetail->jbkod)->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');
}
}
}