proposals->where('status', '1')->pluck('media_id'); return view('dashboard.media-orders.create', [ 'title' => 'Buat Media Order', 'cooperation' => $cooperation, 'media' => Media::all(), 'acceptedMedia' => $media, ]); } public function store(OrderRequest $request, $id) { $validatedData = $request->validated(); try { if ($request->hasFile('image')) { $validatedData['image'] = store_file($validatedData['image'], '/uploads/media-orders')['randomFileName']; } else { $validatedData['image'] = null; } $cooperation = Cooperation::findOrFail(decrypt_id($id)); $validatedData['cooperation_id'] = $cooperation->id; $createdOrder = DB::transaction(function () use ($validatedData, $cooperation) { $createdOrder = Order::create($validatedData); $createdOrder->media()->attach($validatedData['media_ids']); // Announcements $userId = []; foreach ($validatedData['media_ids'] as $mediaId) { $userId[] = Media::find($mediaId)->company->user->id; } $announcementData = [ 'headline' => '

Admin telah menerbitkan media order kerja sama '.$cooperation->name.'

', 'content' => '

Admin telah menerbitkan media order kerja sama '.$cooperation->name.'

', 'enhancer_id' => Auth::id(), ]; $createdAnnouncement = Announcement::create($announcementData); $createdAnnouncement->users()->attach($userId, ['category' => 'system']); // End Announcements return $createdOrder; }); if ($createdOrder->media()->count() > 0) { return redirect()->route('dashboard.cooperations.process', ['id' => encrypt_id($cooperation->id), 'process' => 'media-order'])->with('success-status', 'Berhasil membuat media order.'); } else { return redirect()->back()->with('failed-status', 'Gagal membuat media order'); } } catch (\Exception $e) { return redirect()->back()->with('failed-status', 'Gagal membuat media order'); } } public function edit($id) { // $cooperation = Cooperation::findOrFail(decrypt_id($id)); $mediaOrder = Order::findOrFail(decrypt_id($id)); $media = $mediaOrder->cooperation->proposals->where('status', '1')->pluck('media_id'); // dd($mediaOrder->media->pluck('id')); return view('dashboard.media-orders.edit', [ 'title' => 'Buat Media Order', 'cooperation' => $mediaOrder->cooperation, 'mediaOrder' => $mediaOrder, 'media' => Media::all(), 'acceptedMedia' => $media, 'acceptedMediaNow' => $mediaOrder->media->pluck('id'), ]); } public function update(OrderRequest $request, $id) { $validatedData = $request->validated(); try { $mediaOrder = Order::findOrFail(decrypt_id($id)); $validatedData['cooperation_id'] = $mediaOrder->cooperation_id; if ($request->hasFile('image')) { $validatedData['image'] = store_file($validatedData['image'], '/uploads/media-orders')['randomFileName']; delete_file('app/public/uploads/media-orders/'.$mediaOrder->image); } else { $validatedData['image'] = $mediaOrder->image; } $mediaOrder->update($validatedData); if ($request->has('media_ids')) { $mediaOrder->media()->sync($validatedData['media_ids']); } if ($mediaOrder->media()->exists()) { return redirect()->back()->with('success-status', 'Berhasil mengubah media order.'); } else { return redirect()->back()->with('failed-status', 'Gagal mengubah media order'); } } catch (\Exception $e) { return redirect()->back()->with('failed-status', 'Gagal mengubah media order'); } } public function accept(Request $request, $id) { if (! Auth::check() || Auth::user()->role_id !== 3) { return abort(403, 'Unauthorized action.'); } $order = Order::with('media')->findOrFail(decrypt_id($id)); $mediaOrder = $order->media() ->where('media.id', Auth::user()->company->media->id) ->first(); if (! $mediaOrder) { return abort(404, 'Media not found for the cooperation.'); } if ($mediaOrder->pivot->status == '0') { $affectedRows = $order->media()->updateExistingPivot($mediaOrder->id, [ 'status' => '1', ]); // Announcements $announcementData = [ 'headline' => 'Media '.$mediaOrder->name.' telah menerima media order kerja sama '.$order->cooperation->name.'', 'content' => 'Media '.$mediaOrder->name.' telah menerima media order kerja sama '.$order->cooperation->name.'', 'enhancer_id' => Auth::id(), ]; $adminIds = User::where('role_id', 1)->pluck('id')->mapWithKeys(function ($id) { return [$id => ['category' => 'system']]; })->toArray(); $createdAnnouncement = Announcement::create($announcementData); $createdAnnouncement->users()->attach($adminIds); // End Announcements if ($affectedRows > 0) { return redirect()->back()->with('success-status', 'Berhasil menerima media order.'); } else { return redirect()->back()->with('failed-status', 'Gagal menerima media order.'); } } else { return redirect()->back()->with('failed-status', 'Kerja sama sudah diterima sebelumnya.'); } } public function reject(Request $request, $id) { $validatedData = $request->validate([ 'rejection_reason' => ['required'], ], [ 'rejection_reason.required' => 'Alasan penolakan wajib diisi.', ]); try { $order = Order::with('media')->findOrFail(decrypt_id($id)); $mediaOrder = $order->media() ->where('media.id', Auth::user()->company->media->id) ->first(); if (! $mediaOrder) { return abort(404, 'Media not found for the cooperation.'); } if ($mediaOrder->pivot->status == '0') { $affectedRows = $order->media()->updateExistingPivot($mediaOrder->id, [ 'status' => '2', 'rejection_reason' => $validatedData['rejection_reason'], ]); // Announcements $announcementData = [ 'headline' => 'Media '.$mediaOrder->name.' menolak media order kerja sama '.$order->cooperation->name.'', 'content' => 'Media '.$mediaOrder->name.' menolak media order kerja sama '.$order->cooperation->name.'

Alasan:
'.$validatedData['rejection_reason'].'

', 'enhancer_id' => Auth::id(), ]; $adminIds = User::where('role_id', 1)->pluck('id')->mapWithKeys(function ($id) { return [$id => ['category' => 'system']]; })->toArray(); $createdAnnouncement = Announcement::create($announcementData); $createdAnnouncement->users()->attach($adminIds); // End Announcements if ($affectedRows > 0) { return redirect()->back()->with('success-status', 'Berhasil menolak media order.'); } else { return redirect()->back()->with('failed-status', 'Gagal menolak media order.'); } } else { return redirect()->back()->with('failed-status', 'Kerja sama sudah diterima sebelumnya.'); } } catch (\Exception $e) { return redirect()->back()->with('failed-status', 'Gagal menolak media order.'); } } }