'Penyelesaian Kerja Sama', 'mediaCollection' => Media::all(), 'media' => $request->input('media', []), 'status' => $request->input('status', null), 'date' => $request->input('date', null), 'from_month' => $request->input('from_month', null), 'to_month' => $request->input('to_month', null), 'year' => $request->input('year', null), ]); } public function store(CooperationCompletionRequest $request, $id){ $validatedData = $request->validated(); try{ $validatedData['payment_request_letter'] = store_file($validatedData['payment_request_letter'], 'uploads/cooperation-completions')['randomFileName']; $validatedData['invoice'] = store_file($validatedData['invoice'], 'uploads/cooperation-completions')['randomFileName']; $validatedData['bank_reference'] = store_file($validatedData['bank_reference'], 'uploads/cooperation-completions')['randomFileName']; $validatedData['electronic_tax_invoice'] = store_file($validatedData['electronic_tax_invoice'], 'uploads/cooperation-completions')['randomFileName']; if(isset($validatedData['other_document'])){ $validatedData['other_document'] = store_file($validatedData['other_document'], 'uploads/cooperation-completions')['randomFileName']; }else{ $validatedData['other_document'] = null; } $validatedData['order_id'] = decrypt_id($id); $validatedData['media_id'] = Auth::user()->company->media->id; CooperationCompletion::create($validatedData); }catch(\Exception $e){ Log::error("CooperationCompletions (store): ". $e); return redirect()->back()->with('failed-status', 'Gagal mengirim formulir.'); } return redirect()->back()->with('success-status', 'Berhasil mengirim formulir.'); } public function show($mediaOrderId, $id){ $cooperationCompletion = CooperationCompletion::findOrFail(decrypt_id($id)); return view('dashboard.cooperation-completions.show', [ 'title' => 'Detail Penyelesaian Kerja Sama', 'cooperationCompletion' => $cooperationCompletion, 'mediaOrderId' => $mediaOrderId ]); } public function showIndex($id){ $cooperationCompletion = CooperationCompletion::findOrFail(decrypt_id($id)); return view('dashboard.cooperation-completions.index.show', [ 'title' => 'Detail Penyelesaian Kerja Sama', 'cooperationCompletion' => $cooperationCompletion ]); } public function processIndex($id){ $cooperationCompletion = CooperationCompletion::findOrFail(decrypt_id($id)); return view('dashboard.cooperation-completions.index.process', [ 'title' => 'Detail Penyelesaian Kerja Sama', 'cooperationCompletion' => $cooperationCompletion ]); } public function accept($id){ try{ $completion = CooperationCompletion::with(['order', 'media'])->findOrFail(decrypt_id($id)); $completion->update([ 'status' => '1' ]); // Announcements $announcementData = [ 'headline' => 'Formulir penyelesaian kerja sama '. $completion->order->cooperation->name .' telah disetujui', 'content' => '

Admin telah menyetujui laporan formulir penyelesaian kerja sama Anda.

', 'enhancer_id' => Auth::id() ]; $createdAnnouncement = Announcement::create($announcementData); $createdAnnouncement->users()->attach($completion->media->company->user->id, ['category' => 'system']); // End Announcements }catch(\Exception $e){ Log::error("CooperationCompletions (accept): ". $e); return redirect()->back()->with('failed-status', 'Gagal menyetujui penyelesaian kerja sama'); } return redirect()->back()->with('success-status', 'Berhasil menyetujui penyelesaian kerja sama.'); } public function reject($mediaOrderId, $id){ $cooperationCompletion = CooperationCompletion::findOrFail(decrypt_id($id)); return view('dashboard.cooperation-completions.reject', [ 'title' => 'Tolak Penyelesaian Kerja Sama', 'cooperationCompletion' => $cooperationCompletion, 'mediaOrderId' => $mediaOrderId ]); } public function rejectAction(Request $request, $mediaOrderId, $id){ try{ $validatedData = $request->validate([ 'rejection_reason' => ['required'], ], [ 'rejection_reason.required' => 'Alasan penolakan wajib diisi.', ]); $completion = CooperationCompletion::with(['order', 'media'])->findOrFail(decrypt_id($id)); $completion->update([ 'status' => '2', 'rejection_reason' => $validatedData['rejection_reason'] ]); // Announcements $announcementData = [ 'headline' => 'Formulir penyelesaian kerja sama '. $completion->order->cooperation->name .' telah ditolak', 'content' => '

Admin telah menolak laporan formulir penyelesaian kerja sama Anda.

', 'enhancer_id' => Auth::id() ]; $createdAnnouncement = Announcement::create($announcementData); $createdAnnouncement->users()->attach($completion->media->company->user->id, ['category' => 'system']); // End Announcements }catch(\Exception $e){ Log::error("CooperationCompletions (rejectAction): ". $e); return redirect()->back()->with('failed-status', 'Gagal menolak penyelesaian kerja sama'); } return redirect()->back()->with('success-status', 'Berhasil menolak penyelesaian kerja sama.'); } public function rejectActionIndex(Request $request, $id){ try{ $validatedData = $request->validate([ 'rejection_reason' => ['required'], ], [ 'rejection_reason.required' => 'Alasan penolakan wajib diisi.', ]); $completion = CooperationCompletion::with(['order', 'media'])->findOrFail(decrypt_id($id)); $completion->update([ 'status' => '2', 'rejection_reason' => $validatedData['rejection_reason'] ]); // Announcements $announcementData = [ 'headline' => 'Formulir penyelesaian kerja sama '. $completion->order->cooperation->name .' telah ditolak', 'content' => '

Admin telah menolak laporan formulir penyelesaian kerja sama Anda.

', 'enhancer_id' => Auth::id() ]; $createdAnnouncement = Announcement::create($announcementData); $createdAnnouncement->users()->attach($completion->media->company->user->id, ['category' => 'system']); // End Announcements }catch(\Exception $e){ Log::error("CooperationCompletions (rejectAction): ". $e); return redirect()->back()->with('failed-status', 'Gagal menolak penyelesaian kerja sama'); } return redirect()->back()->with('success-status', 'Berhasil menolak penyelesaian kerja sama.'); } public function export(Request $request) { try{ $export_type = $request->input('export_type', 'excel'); $status = $request->input('status', null); $media = $request->input('media', null); $year = $request->input('year', null); $from_month = $request->input('from_month', null); $to_month = $request->input('to_month', null); $date = $request->input('date', null); if($export_type === 'excel'){ $formattedNow = Carbon::parse(now())->locale('id')->translatedFormat('d-m-Y'); return Excel::download(new CooperationCompletionExport($media, $status, $year, $from_month, $to_month, $date), 'reports-'.$formattedNow.'.xlsx'); }elseif($export_type === 'pdf'){ if(is_role(['1', '5'])){ $query = CooperationCompletion::with(['media.company']); }else if(is_role(['3'])){ $mediaId = Auth::user()->company->media->id; $query = CooperationCompletion::with(['media.company', 'order.cooperation'])->where('media_id', '=', $mediaId); } if (!empty($media) && is_array($media)) { $query->whereIn('media_id', $media); } if ($status) { switch($status){ case 'waiting': $query->where('status', '0'); break; case 'accepted': $query->where('status', '1'); break; case 'rejected': $query->where('status', '2'); break; } } if ($year) { $query->whereYear('created_at', $year); } if ($from_month && $to_month) { $start = Carbon::parse($from_month)->startOfMonth(); $end = Carbon::parse($to_month)->endOfMonth(); $query->whereBetween('created_at', [$start, $end]); } if ($date) { $query->whereDate('created_at', $date); } $cooperationCompletions = $query->get(); $pdf = Pdf::loadView('dashboard.cooperation-completions.prints.collection', compact('cooperationCompletions')); return $pdf->stream(slugify('laporan bukti tayang ').'.pdf'); } }catch(\Exception $e){ return redirect()->back()->with('failed-status', 'Gagal melakukan proses export data.'); } } public function singlePrint(){ try{ $cooperationCompletion = CooperationCompletion::with(['media.company'])->first(); // dd('hai'); $pdf = Pdf::loadView('dashboard.cooperation-completions.prints.single', compact('cooperationCompletion')); return $pdf->stream(slugify('Penyelesaian kerja sama '. $cooperationCompletion->media->name).'.pdf'); }catch(\Exception $e){ return redirect()->back()->with('failed-status', 'Gagal melakukan proses print data.'); } } }