From 382c066c2fe369f7b2a0c85556c16d5a8c860e6b Mon Sep 17 00:00:00 2001 From: myuqinurrohman Date: Thu, 13 Mar 2025 13:22:02 +0700 Subject: [PATCH] feat: media order --- .../CooperationRequestController.php | 10 +- .../Dashboard/DatatableController.php | 99 ++++++++- .../Dashboard/MediaCooperationController.php | 39 ++++ .../Dashboard/MediaOrderController.php | 154 ++++++++++++++ app/Http/Requests/OrderRequest.php | 35 +++ app/Models/Cooperation.php | 4 + app/Models/Media.php | 16 +- app/Models/MediaOrder.php | 26 +++ app/Models/Order.php | 35 +++ .../2025_03_11_072327_create_orders_table.php | 37 ++++ ...03_11_072416_create_media_orders_table.php | 33 +++ database/seeders/OrderSeeder.php | 17 ++ public/assets/dashboard/css/custom.css | 5 +- .../dashboard/announcements/read.blade.php | 2 +- .../dashboard/announcements/show.blade.php | 2 +- ...al.blade.php => create-proposal.blade.php} | 0 .../cooperation-requests/reject.blade.php | 6 +- .../cooperation-requests/show.blade.php | 6 +- .../issue-managements/create.blade.php | 4 +- .../issue-managements/edit.blade.php | 4 +- .../issue-managements/show.blade.php | 6 +- .../media-cooperations/index.blade.php | 5 +- .../processes/cooperations/index.blade.php | 177 +++++++++++++++ .../processes/media-orders/index.blade.php | 201 ++++++++++++++++++ .../processes/tab.blade.php | 44 ++++ .../media-cooperations/show.blade.php | 12 +- .../media-monitorings/show.blade.php | 4 +- .../dashboard/media-orders/create.blade.php | 117 ++++++++++ .../dashboard/media-orders/edit.blade.php | 118 ++++++++++ .../views/partials/app/datatable.blade.php | 34 ++- .../views/partials/app/sweetalert.blade.php | 11 + .../partials/dashboard/sidebar.blade.php | 4 +- routes/web.php | 31 ++- 33 files changed, 1250 insertions(+), 48 deletions(-) create mode 100644 app/Http/Controllers/Dashboard/MediaOrderController.php create mode 100644 app/Http/Requests/OrderRequest.php create mode 100644 app/Models/MediaOrder.php create mode 100644 app/Models/Order.php create mode 100644 database/migrations/2025_03_11_072327_create_orders_table.php create mode 100644 database/migrations/2025_03_11_072416_create_media_orders_table.php create mode 100644 database/seeders/OrderSeeder.php rename resources/views/dashboard/cooperation-requests/{proposal.blade.php => create-proposal.blade.php} (100%) create mode 100644 resources/views/dashboard/media-cooperations/processes/cooperations/index.blade.php create mode 100644 resources/views/dashboard/media-cooperations/processes/media-orders/index.blade.php create mode 100644 resources/views/dashboard/media-cooperations/processes/tab.blade.php create mode 100644 resources/views/dashboard/media-orders/create.blade.php create mode 100644 resources/views/dashboard/media-orders/edit.blade.php diff --git a/app/Http/Controllers/Dashboard/CooperationRequestController.php b/app/Http/Controllers/Dashboard/CooperationRequestController.php index 7483df1..e2a1a81 100644 --- a/app/Http/Controllers/Dashboard/CooperationRequestController.php +++ b/app/Http/Controllers/Dashboard/CooperationRequestController.php @@ -66,7 +66,7 @@ public function accept(Request $request, $id){ // dd($mediaCooperation->pivot); // Pastikan data yang ingin diperbarui ada dan statusnya belum '3' - if ($mediaCooperation->pivot->status != '3') { + if ($mediaCooperation->pivot->status == '0') { $affectedRows = $cooperation->media()->updateExistingPivot($mediaCooperation->id, [ 'status' => '1', ]); @@ -74,7 +74,7 @@ public function accept(Request $request, $id){ if ($affectedRows > 0) { return redirect()->back()->with('success-status', 'Berhasil menerima kerjasama.'); } else { - return redirect()->back()->with('failed-status', 'Gagal menerima kerjasama'); + return redirect()->back()->with('failed-status', 'Gagal menerima kerjasama.'); } } else { return redirect()->back()->with('failed-status', 'Kerjasama sudah diterima sebelumnya.'); @@ -82,14 +82,14 @@ public function accept(Request $request, $id){ } - public function proposal($id){ + public function createProposal($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', [ + return view('dashboard.cooperation-requests.create-proposal', [ 'title' => 'Ajukan Kerjasama', 'user' => Auth::user(), 'cooperation' => $cooperation, @@ -97,7 +97,7 @@ public function proposal($id){ ]); } - public function proposalAction(JournalistCooperationProposalRequest $request, $id){ + public function storeProposal(JournalistCooperationProposalRequest $request, $id){ $validatedData = $request->validated(); $validatedData['cooperation_id'] = decrypt_id($id); $validatedData['media_id'] = Auth::user()->company->media->id; diff --git a/app/Http/Controllers/Dashboard/DatatableController.php b/app/Http/Controllers/Dashboard/DatatableController.php index ce17373..a1be8b0 100644 --- a/app/Http/Controllers/Dashboard/DatatableController.php +++ b/app/Http/Controllers/Dashboard/DatatableController.php @@ -16,7 +16,9 @@ use App\Models\Location; use App\Models\Media; use App\Models\MediaMonitoring; +use App\Models\MediaOrder; use App\Models\News; +use App\Models\Order; use App\Models\Role; use App\Models\SubClassification; use App\Models\SubLocation; @@ -812,7 +814,16 @@ public function journalist(Request $request){ public function cooperation(Request $request){ if ($request->ajax()) { - $data = Cooperation::with(['media'])->get(); + if(is_role(['1'])){ + $data = Cooperation::with(['media', 'mediaOrder'])->get(); + }else if(is_role(['3'])){ + $mediaId = Auth::user()->company->media->id; + $media = Media::findOrFail($mediaId); + $data = $media->cooperations->filter(function ($cooperation) use ($mediaId){ + // Filter cooperation berdasarkan status proposal yang 1 + return $cooperation->proposals->where('status', 1)->where('media_id', $mediaId)->isNotEmpty(); + }); + } return DataTables::of($data) @@ -820,18 +831,33 @@ public function cooperation(Request $request){ ->addColumn('name', function ($data) { return '
' . $data->name . '
'; }) - ->addColumn('start_date', function ($data) { - return idn_date($data->start_date, 'l, d F Y'); - }) - ->addColumn('end_date', function ($data) { - return idn_date($data->end_date, 'l, d F Y'); - }) + // ->addColumn('start_date', function ($data) { + // return idn_date($data->start_date, 'l, d F Y'); + // }) + // ->addColumn('end_date', function ($data) { + // return idn_date($data->end_date, 'l, d F Y'); + // }) ->addColumn('posted_at', function ($data) { return idn_date($data->created_at, 'l, d F Y'); }) + ->addColumn('status', function ($data) { + $isHaveMediaOrder = !is_null($data->mediaOrder); + if ($isHaveMediaOrder) { + return 'Media Order
Sudah Media Order'; + }else{ + return 'Pengajuan Kerjasama
Belum Media Order'; + } + }) ->addColumn('action', function ($data) { + + $isHaveMediaOrder = $data->mediaorder; + $showUrl = route('dashboard.cooperations.show', ['id' => encrypt_id($data->id)]); + $processUrl = route('dashboard.cooperations.process', ['id' => encrypt_id($data->id), 'process' => 'cooperation']); + + $createMediaOrderUrl = route('dashboard.media.orders.create', ['id' => encrypt_id($data->id)]); + $proposalsUrl = route('dashboard.cooperations.media.proposal', ['id' => encrypt_id($data->id)]); $editUrl = route('dashboard.cooperations.edit', ['id' => encrypt_id($data->id)]); @@ -844,6 +870,14 @@ public function cooperation(Request $request){