From ea5fe73361b0f2a86cdbc0e24c9cece9be9a119a Mon Sep 17 00:00:00 2001 From: myuqinurrohman Date: Sat, 8 Mar 2025 15:55:43 +0700 Subject: [PATCH] feat: display media who send proposal --- app/Helpers/CustomHelper.php | 6 ++ .../CooperationRequestController.php | 28 +++++++- .../Dashboard/DatatableController.php | 41 +++++++++--- app/Http/Requests/CooperationRequest.php | 3 +- .../JournalistCooperationProposalRequest.php | 50 ++++++++++++++ app/Models/CooperationProposal.php | 15 +++++ app/Models/Journalist.php | 7 ++ app/Models/JournalistCooperationProposal.php | 24 +++++++ ...ournalists_cooperation_proposals_table.php | 37 +++++++++++ public/assets/dashboard/css/custom.css | 17 ++++- public/assets/dashboard/js/script-wizard.js | 2 +- .../cooperation-requests/index.blade.php | 10 +-- .../media-proposals/index.blade.php | 66 +++++++++++++++++++ .../cooperation-requests/proposal.blade.php | 17 ++--- .../media-cooperations/create.blade.php | 6 +- .../views/partials/app/datatable.blade.php | 2 +- routes/web.php | 1 + 17 files changed, 299 insertions(+), 33 deletions(-) create mode 100644 app/Http/Requests/JournalistCooperationProposalRequest.php create mode 100644 app/Models/JournalistCooperationProposal.php create mode 100644 database/migrations/2025_03_07_153420_create_journalists_cooperation_proposals_table.php create mode 100644 resources/views/dashboard/cooperation-requests/media-proposals/index.blade.php diff --git a/app/Helpers/CustomHelper.php b/app/Helpers/CustomHelper.php index b81a556..c04403e 100644 --- a/app/Helpers/CustomHelper.php +++ b/app/Helpers/CustomHelper.php @@ -148,3 +148,9 @@ function get_cooperation_notif() { } } } + +if (! function_exists('slugify')) { + function slugify($param) { + return Str::slug($param); + } +} diff --git a/app/Http/Controllers/Dashboard/CooperationRequestController.php b/app/Http/Controllers/Dashboard/CooperationRequestController.php index 07128e4..63dc6ae 100644 --- a/app/Http/Controllers/Dashboard/CooperationRequestController.php +++ b/app/Http/Controllers/Dashboard/CooperationRequestController.php @@ -3,7 +3,9 @@ namespace App\Http\Controllers\Dashboard; use App\Http\Controllers\Controller; +use App\Http\Requests\JournalistCooperationProposalRequest; use App\Models\Cooperation; +use App\Models\CooperationProposal; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; @@ -66,12 +68,36 @@ public function accept(Request $request, $id){ } public function proposal($id){ + $cooperation = Cooperation::with(['media'])->findOrFail(decrypt_id($id)); + + $mediaCooperationPivot = $cooperation->media() + ->where('media.id', Auth::user()->company->media->id) + ->first()->pivot; + return view('dashboard.cooperation-requests.proposal', [ 'title' => 'Ajukan Kerjasama', - 'user' => Auth::user() + 'user' => Auth::user(), + 'cooperation' => $cooperation, + 'mediaCooperationPivot' => $mediaCooperationPivot ]); } + public function proposalAction(JournalistCooperationProposalRequest $request, $id){ + $validatedData = $request->validated(); + $validatedData['cooperation_id'] = decrypt_id($id); + $validatedData['media_id'] = Auth::user()->company->media->id; + $validatedData['attachment'] = store_file($validatedData['attachment'], '/uploads/cooperation-proposals', 'public')['randomFileName']; + + $createdCooperationProposal = CooperationProposal::create($validatedData); + $createdCooperationProposal->journalists()->attach($validatedData['journalist_ids']); + + if ($createdCooperationProposal->journalists()->count() > 0) { + return redirect()->back()->with('success-status', 'Berhasil melakukan pengajuan kerjasama.'); + } else { + return redirect()->back()->with('failed-status', 'Gagal melakukan pengajuan kerjasama'); + } + } + public function reject($id){ $cooperation = Cooperation::with(['media'])->findOrFail(decrypt_id($id)); diff --git a/app/Http/Controllers/Dashboard/DatatableController.php b/app/Http/Controllers/Dashboard/DatatableController.php index ba744b5..c7bfdd0 100644 --- a/app/Http/Controllers/Dashboard/DatatableController.php +++ b/app/Http/Controllers/Dashboard/DatatableController.php @@ -8,6 +8,7 @@ use App\Models\Company; use App\Models\ContentRecap; use App\Models\Cooperation; +use App\Models\CooperationProposal; use App\Models\GovernmentAgency; use App\Models\IssueManagement; use App\Models\Journalist; @@ -783,14 +784,17 @@ public function cooperationMedia(Request $request, $id){ ->addColumn('classification', function ($data) { return ucfirst($data->classification); }) - ->addColumn('status', function ($data) { + ->addColumn('status', function ($data) use ($cooperation) { switch($data->pivot->status){ case 0: return 'Menunggu'; case 1: $status = 'Menerima
'; - if(true){ + $isCooperationProposalExists = CooperationProposal::where('cooperation_id', '=', $cooperation->id) + ->where('media_id', '=', $data->id)->exists(); + + if(!$isCooperationProposalExists){ $status .= 'Belum Pengajuan'; }else{ $status .= 'Sudah Pengajuan'; @@ -852,12 +856,19 @@ public function cooperationRequest(Request $request){ $mediaId = $user->company->media->id; $media = Media::with('cooperations')->findOrFail($mediaId); - // $currentDate = Carbon::now()->format('Y-m-d'); $data = $media->cooperations() - ->where('start_date', '<=', Carbon::now()->locale('id')->toDateString()) - ->where('end_date', '>=', Carbon::now()->locale('id')->toDateString()) - ->get(); + ->where(function ($query) { + $query->where('media_cooperations.status', '!=', 0) + ->orWhere(function ($q) { + $q->where('media_cooperations.status', 0) + ->where('cooperations.end_date', '>=', now()->toDateString()); + }); + }) + ->where('cooperations.start_date', '<=', now()->toDateString()) + ->get(); + + return DataTables::of($data) ->addIndexColumn() @@ -873,14 +884,17 @@ public function cooperationRequest(Request $request){ ->addColumn('posted_at', function ($data) { return idn_date($data->created_at, 'l, d F Y'); }) - ->addColumn('status', function ($data){ + ->addColumn('status', function ($data) use ($media){ + $isCooperationProposalExists = CooperationProposal::where('cooperation_id', '=', $data->id) + ->where('media_id', '=', $media->id)->exists(); + switch($data->pivot->status){ case '0': return 'Menunggu'; case 1: $status = 'Menerima
'; - if(true){ + if(!$isCooperationProposalExists){ $status .= 'Belum Mengajukan'; }else{ $status .= 'Sudah Mengajukan'; @@ -894,7 +908,11 @@ public function cooperationRequest(Request $request){ } }) - ->addColumn('action', function ($data) { + ->addColumn('action', function ($data) use ($media) { + + $isCooperationProposalExists = CooperationProposal::where('cooperation_id', '=', $data->id) + ->where('media_id', '=', $media->id)->exists(); + $showUrl = route('dashboard.cooperations.requests.show', ['id' => encrypt_id($data->id)]); // $editUrl = route('dashboard.cooperations.edit', ['id' => encrypt_id($data->id)]); @@ -913,7 +931,10 @@ public function cooperationRequest(Request $request){ - @endif --}} + @endif
diff --git a/resources/views/dashboard/cooperation-requests/media-proposals/index.blade.php b/resources/views/dashboard/cooperation-requests/media-proposals/index.blade.php new file mode 100644 index 0000000..eef9f94 --- /dev/null +++ b/resources/views/dashboard/cooperation-requests/media-proposals/index.blade.php @@ -0,0 +1,66 @@ +@include('partials.dashboard.head') +@include('partials.dashboard.sidebar', ['page' => 'cooperation_requests']) +@include('partials.dashboard.header') + +
+
+
+
+
+
+
+

{{$title}}

+
+ @if (is_role(['3'])) +
+
+ +
+ +
+
+
+ @endif +
+
+
+
+
+
+ + + + + + + + + + + + +
NoNama KegiatanTanggal MulaiTanggal SelesaiDibuat PadaStatus
+
+
+
+
+
+
+
+
+ +@include('partials.dashboard.footer' ,['datatable' => 'cooperation_request']) diff --git a/resources/views/dashboard/cooperation-requests/proposal.blade.php b/resources/views/dashboard/cooperation-requests/proposal.blade.php index c8efb91..cb8eaa0 100644 --- a/resources/views/dashboard/cooperation-requests/proposal.blade.php +++ b/resources/views/dashboard/cooperation-requests/proposal.blade.php @@ -14,7 +14,8 @@
-
+ + @csrf
Data Perusahaan
@@ -258,7 +259,7 @@ @foreach ($user->company->media->journalists as $journalist)
  • - +