' . $data->media->name . '
';
+ })
+ ->addColumn('send_proposal_at', function ($data) {
+ return idn_date($data->created_at, 'l, d F Y');
+ })
+ ->addColumn('status', function ($data){
+
+ switch($data->status){
+ case '0':
+ return '
@@ -825,13 +868,12 @@ class="text-dark"
- Detail
';
- if (is_role([1])) {
- $dropdown .= '- Ubah
';
+ if (is_role(['1']) && $data->status === '0') {
+ $dropdown .= '- Terima
';
}
- if (is_role([1])) {
- $dropdown .= '- Hapus
';
-
+ if (is_role([1]) && $data->status === '0') {
+ $dropdown .= '- Tolak
';
}
$dropdown .= '
@@ -841,7 +883,7 @@ class="text-dark"
return $dropdown;
})
- ->rawColumns(['link', 'address', 'status', 'status_edit', 'action'])
+ ->rawColumns(['status', 'name', 'action'])
->make(true);
}
@@ -849,6 +891,7 @@ class="text-dark"
}
+ // media (ajuan kerjassama)
public function cooperationRequest(Request $request){
if ($request->ajax()) {
@@ -966,6 +1009,82 @@ public function cooperationRequest(Request $request){
}
+ // media (pengajuan saya)
+ public function mediaProposal(Request $request){
+ if ($request->ajax()) {
+
+ $user = User::findOrFail(Auth::id());
+ $mediaId = $user->company->media->id;
+
+
+ $data = CooperationProposal::with(['cooperation'])->where('media_id', '=', $mediaId)->get();
+
+
+ return DataTables::of($data)
+ ->addIndexColumn()
+ ->addColumn('name', function ($data) {
+ return '
' . $data->cooperation->name . '
';
+ })
+ ->addColumn('start_date', function ($data) {
+ return idn_date($data->cooperation->start_date, 'l, d F Y');
+ })
+ ->addColumn('end_date', function ($data) {
+ return idn_date($data->cooperation->end_date, 'l, d F Y');
+ })
+ ->addColumn('send_proposal_at', function ($data) {
+ return idn_date($data->created_at, 'l, d F Y');
+ })
+ ->addColumn('status', function ($data){
+
+ switch($data->status){
+ case '0':
+ return '
Menunggu';
+ case 1:
+ return '
Diterima ';
+ case '2':
+ return '
Ditolak';
+ default:
+ return '
Tidak Diketahui';
+
+ }
+ })
+ ->addColumn('action', function ($data) {
+
+ $showUrl = route('dashboard.cooperations.requests.media.proposals.show', ['id' => encrypt_id($data->id)]);
+
+ $editUrl = route('dashboard.cooperations.edit', ['id' => encrypt_id($data->id)]);
+
+ $deleteUrl = route('dashboard.cooperations.destroy', ['id' => encrypt_id($data->id)]);
+
+ $dropdown = '
';
+
+ return $dropdown;
+ })
+
+ ->rawColumns(['status', 'name', 'action'])
+ ->make(true);
+ }
+
+ return response()->json(['error' => 'Unauthorized'], 401);
+
+ }
+
public function contentRecap(Request $request){
if ($request->ajax()) {
diff --git a/app/Http/Controllers/Dashboard/MediaCooperationController.php b/app/Http/Controllers/Dashboard/MediaCooperationController.php
index 5b4cb66..2bf8cc6 100644
--- a/app/Http/Controllers/Dashboard/MediaCooperationController.php
+++ b/app/Http/Controllers/Dashboard/MediaCooperationController.php
@@ -5,6 +5,7 @@
use App\Http\Controllers\Controller;
use App\Http\Requests\CooperationRequest;
use App\Models\Cooperation;
+use App\Models\CooperationProposal;
use App\Models\Media;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
@@ -94,5 +95,70 @@ public function show($id){
]);
}
+ 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));
+
+ $acceptedProposal = $proposal->update([
+ 'status' => '2',
+ 'rejection_reason' => $validatedData['rejection_reason']
+ ]);
+
+ if ($acceptedProposal) {
+ return redirect()->back()->with('success-status', 'Berhasil menolak pengajuan kerjasama.');
+ } else {
+ return redirect()->back()->with('failed-status', 'Gagal menolak pengajuan kerjasama');
+ }
+
+ }
+
public function destroy(){}
}
diff --git a/app/Models/Cooperation.php b/app/Models/Cooperation.php
index 761c667..d429e24 100644
--- a/app/Models/Cooperation.php
+++ b/app/Models/Cooperation.php
@@ -28,4 +28,8 @@ public function media()
->withPivot(['status', 'rejection_reason'])
->withTimestamps();
}
+
+ public function proposals(){
+ return $this->hasMany(CooperationProposal::class, 'cooperation_id', 'id');
+ }
}
diff --git a/app/Models/CooperationProposal.php b/app/Models/CooperationProposal.php
index f9ee469..5547f75 100644
--- a/app/Models/CooperationProposal.php
+++ b/app/Models/CooperationProposal.php
@@ -7,7 +7,6 @@
class CooperationProposal extends Model
{
- use SoftDeletes;
protected $table = 'cooperation_proposals';
@@ -15,6 +14,7 @@ class CooperationProposal extends Model
'description',
'attachment',
'status',
+ 'rejection_reasons',
'cooperation_id',
'media_id',
];
diff --git a/database/migrations/2025_03_07_072227_create_cooperation_proposals_table.php b/database/migrations/2025_03_07_072227_create_cooperation_proposals_table.php
index c7e4be7..63bb01b 100644
--- a/database/migrations/2025_03_07_072227_create_cooperation_proposals_table.php
+++ b/database/migrations/2025_03_07_072227_create_cooperation_proposals_table.php
@@ -16,12 +16,12 @@ public function up(): void
$table->text('description')->nullable();
$table->string('attachment');
$table->enum('status', ['0', '1', '2'])->default('0');
+ $table->text('rejection_reason')->nullable();
$table->unsignedBigInteger('cooperation_id');
$table->unsignedBigInteger('media_id');
$table->foreign('cooperation_id')->references('id')->on('cooperations');
$table->foreign('media_id')->references('id')->on('media');
$table->timestamps();
- $table->softDeletes();
});
}
diff --git a/resources/views/dashboard/cooperation-requests/index.blade.php b/resources/views/dashboard/cooperation-requests/index.blade.php
index eef9f94..e4da4d6 100644
--- a/resources/views/dashboard/cooperation-requests/index.blade.php
+++ b/resources/views/dashboard/cooperation-requests/index.blade.php
@@ -29,7 +29,7 @@
--}}
-