'Kerjasama' ]); } public function create(){ return view('dashboard.media-cooperations.create', [ 'title' => 'Tambah Kerjasama', 'media' => Media::all() ]); } public function store(CooperationRequest $request){ $validatedData = $request->validated(); $validatedData['enhancer_id'] = Auth::id(); $validatedData['banner'] = store_file($validatedData['banner'], '/uploads/cooperations', 'public')['randomFileName']; $validatedData['offer_file_template'] = store_file($validatedData['offer_file_template'], '/uploads/cooperations', 'public')['randomFileName']; $createdCooperation = Cooperation::create($validatedData); $createdCooperation->media()->attach($validatedData['media_ids']); if ($createdCooperation->media()->count() > 0) { return redirect()->route('dashboard.cooperations.index')->with('success-status', 'Berhasil menambahkan kerjasama.'); } else { return redirect()->back()->with('failed-status', 'Gagal menambahkan kerjasama'); } } public function edit($id){ $cooperation = Cooperation::with(['media'])->findOrFail(decrypt_id($id)); return view('dashboard.media-cooperations.edit', [ 'title' => 'Ubah Kerjasama', 'cooperation' => $cooperation, 'media' => Media::all(), 'selectedMediaIds' => $cooperation->media->pluck('id')->toArray() ]); } public function update(CooperationRequest $request, $id){ $validatedData = $request->validated(); $cooperation = Cooperation::with(['media'])->findOrFail(decrypt_id($id)); $validatedData['enhancer_id'] = Auth::id(); if($request->hasFile('banner')){ delete_file('app/public/uploads/cooperations/'.$cooperation->banner); $validatedData['banner'] = store_file($validatedData['banner'], '/uploads/cooperations', 'public')['randomFileName']; }else{ $validatedData['banner'] = $cooperation->banner; } if($request->hasFile('offer_file_template')){ delete_file('app/public/uploads/cooperations/'.$cooperation->offer_file_template); $validatedData['offer_file_template'] = store_file($validatedData['offer_file_template'], '/uploads/cooperations', 'public')['randomFileName']; }else{ $validatedData['offer_file_template'] = $cooperation->offer_file_template; } $cooperation->update($validatedData); if ($request->has('media_ids')) { $cooperation->media()->sync($validatedData['media_ids']); } if ($cooperation->media()->count() > 0) { return redirect()->back()->with('success-status', 'Berhasil mengubah kerjasama.'); } else { return redirect()->back()->with('failed-status', 'Gagal mengubah kerjasama'); } } public function show($id){ $mediaCooperation = Cooperation::with(['media'])->findOrFail(decrypt_id($id)); return view('dashboard.media-cooperations.show', [ 'title' => 'Detail Kerjasama', 'mediaCooperation' => $mediaCooperation ]); } public function mediaProposal($id){ $mediaCooperation = Cooperation::with(['media'])->findOrFail(decrypt_id($id)); return view('dashboard.media-cooperations.media-proposals.index', [ 'title' => 'Data Pengajuan Kerjasama', 'mediaCooperation' => $mediaCooperation ]); } public function mediaProposalShow($id, $proposalId){ $proposal = CooperationProposal::with(['cooperation', 'media', 'journalists'])->findOrFail(decrypt_id($proposalId)); return view('dashboard.media-cooperations.media-proposals.show',[ 'title' => 'Detail Ajuan Kerjasama', 'proposal' => $proposal ]); } public function mediaProposalAccept($id, $proposalId){ $proposal = CooperationProposal::with(['cooperation', 'media', 'journalists'])->findOrFail(decrypt_id($proposalId)); $acceptedProposal = $proposal->update([ 'status' => '1' ]); if ($acceptedProposal) { return redirect()->back()->with('success-status', 'Berhasil menyetujui pengajuan kerjasama.'); } else { return redirect()->back()->with('failed-status', 'Gagal menyetujui pengajuan kerjasama'); } } public function mediaProposalReject($id, $proposalId){ $proposal = CooperationProposal::with(['cooperation', 'media', 'journalists'])->findOrFail(decrypt_id($proposalId)); return view('dashboard.media-cooperations.media-proposals.reject',[ 'title' => 'Tolak Ajuan Kerjasama', 'proposal' => $proposal ]); } public function mediaProposalRejectAction(Request $request, $id, $proposalId){ $validatedData = $request->validate([ 'rejection_reason' => ['required'], ], [ 'rejection_reason.required' => 'Alasan penolakan wajib diisi.', ]); $proposal = CooperationProposal::with(['cooperation', 'media', 'journalists'])->findOrFail(decrypt_id($proposalId)); $rejectedProposal = $proposal->update([ 'status' => '2', 'rejection_reason' => $validatedData['rejection_reason'] ]); if ($rejectedProposal) { return redirect()->back()->with('success-status', 'Berhasil menolak pengajuan kerjasama.'); } else { return redirect()->back()->with('failed-status', 'Gagal menolak pengajuan kerjasama'); } } public function process($id, $process, $paramMediaId = null){ $mediaCooperation = Cooperation::with(['media', 'mediaOrder.media'])->findOrFail(decrypt_id($id)); $data = [ 'title' => 'Detail Kerjasama', 'process' => $process, 'mediaCooperation' => $mediaCooperation, ]; if($process === 'cooperation'){ $data['title'] = 'Detail Kerjasama'; $data['mediaOrder'] = $mediaCooperation->mediaOrder; if(is_role(['3'])){ $mediaId = Auth::user()->company->media->id; $mediaOrder = $mediaCooperation->mediaOrder; $mediaOrderSafe = $mediaOrder ? $mediaOrder->media->where('id', $mediaId)->first() : null; if($mediaOrderSafe){ $data['mediaOrderPivot'] = $mediaOrderSafe->pivot; } $data['isHaveReports'] = false; $data['isAllReportsWaiting'] = true; } return view('dashboard.media-cooperations.processes.cooperations.index', $data); }else if($process === 'media-order'){ $data['title'] = 'Media Order'; if(is_role(['3'])){ $data['mediaOrder'] = $mediaCooperation->mediaOrder; $mediaId = Auth::user()->company->media->id; $data['mediaOrderPivot'] = $mediaCooperation->mediaOrder->media->where('id', $mediaId)->first()->pivot; $data['isHaveReports'] = false; $data['isAllReportsWaiting'] = true; }else{ $data['mediaOrder'] = $mediaCooperation->mediaOrder; } return view('dashboard.media-cooperations.processes.media-orders.index', $data); }else if($process === 'reports'){ $data['title'] = 'Media Order'; if(is_role(['3'])){ $mediaOrderModel = $mediaCooperation->mediaOrder; $data['mediaOrder'] = $mediaOrderModel; $mediaId = Auth::user()->company->media->id; $data['mediaOrderPivot'] = $mediaOrderModel->media->where('id', $mediaId)->first()->pivot; $data['reporterMediaId'] = Auth::user()->company->media->id; $report = $mediaOrderModel->reports->filter(function ($report) use ($data) { return $report->media_id == Auth::user()->company->media->id; }); if(filled($report)){ $isAllReportsAccepted = $report->every(function ($item) { return $item->status === '1'; }); }else{ $isAllReportsAccepted = false; } $reportCount = $report->count(); $data['isHaveReports'] = $reportCount != 0; $data['isAllReportsAccepted'] = $isAllReportsAccepted; $data['reportCount'] = $reportCount; if($reportCount === $mediaOrderModel->required_reports){ $data['isReportsCompleted'] = true; }else{ $data['isReportsCompleted'] = false; } return view('dashboard.media-cooperations.processes.reports.index-media', $data); }else{ $data['mediaOrder'] = $mediaCooperation->mediaOrder; $data['reporterMedia'] = $paramMediaId ? Media::findOrFail(decrypt_id($paramMediaId)) : null; $data['reporterMediaId'] = $paramMediaId ? decrypt_id($paramMediaId) : null; if(!$paramMediaId){ return view('dashboard.media-cooperations.processes.reports.index-admin', $data); }else{ return view('dashboard.media-cooperations.processes.reports.index-media', $data); } } } } public function destroy(){} }