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 kerjasama '. $cooperation->name .'
', 'content' => 'Admin telah menerbitkan media order kerjasama '.$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 kerjasama '.$order->cooperation->name. '', 'content' => 'Media '.$mediaOrder->name.' telah menerima media order kerjasama '.$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', 'Kerjasama 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 kerjasama '.$order->cooperation->name. '', 'content' => 'Media '.$mediaOrder->name.' menolak media order kerjasama '.$order->cooperation->name.'Alasan:
'.$validatedData['rejection_reason'].'