ajax()) { if($request->input('filter') === 'deleted'){ $data = Classification::with(['subClassifications'])->onlyTrashed()->get(); }else{ $data = Classification::with(['subClassifications'])->get(); } $newData = $request->input('new_data', null); return DataTables::of($data) ->addIndexColumn() ->addColumn('name', function ($data) use ($newData) { if(filled($newData) && decrypt_id($newData) == $data->id){ return 'Baru'. $data->name; }else{ return $data->name; } }) ->addColumn('status', function ($data) { if(filled($data->deleted_at)){ return 'Dihapus'; }else if ($data->status == '0') { return 'Nonaktif'; }else{ return 'Aktif'; } }) ->addColumn('sub_classifications', function ($data) { $subClassificationCount = $data->subClassifications->count(); if($subClassificationCount > 0){ return $subClassificationCount. ' [Lihat]'; }else{ return $subClassificationCount; } }) ->addColumn('issues', function ($data) { $issueCount = $data->issues->count(); if($issueCount > 0){ return $issueCount. ' [Lihat]'; }else{ return $issueCount; } }) ->addColumn('action', function ($data) { $showUrl = route('dashboard.classifications.show', ['id' => encrypt_id($data->id)]); $addSubClassificationUrl = route('dashboard.sub.classifications.create', ['classification' => encrypt_id($data->id)]); $editUrl = route('dashboard.classifications.edit', ['id' => encrypt_id($data->id)]); $deleteUrl = route('dashboard.classifications.destroy', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['name', 'sub_classifications', 'issues', 'status', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function subClassification(Request $request){ if ($request->ajax()) { if($request->input('filter') === 'deleted'){ $data = SubClassification::with(['classification'])->onlyTrashed()->get(); }else{ $classificationParam = $request->input('classification', null); if ($classificationParam) { $classification = Classification::where('id', '=', decrypt_id($classificationParam))->first(); // Tambahkan pengecekan apakah classification ditemukan if ($classification) { $data = SubClassification::with(['classification' => function($query) { $query->withTrashed(); }])->where('classification_id', '=', $classification->id)->get(); } else { return response()->json(['error' => 'Classification not found'], 404); } } else { $data = SubClassification::with(['classification' => function($query) { $query->withTrashed(); }])->get(); } } $newData = $request->input('new_data', null); return DataTables::of($data) ->addIndexColumn() ->addColumn('name', function ($data) use ($newData) { if(filled($newData) && decrypt_id($newData) == $data->id){ return 'Baru'. $data->name; }else{ return $data->name; } }) ->addColumn('classification', function ($data) { return ''.$data->classification->name.''; }) ->addColumn('status', function ($data) { if(filled($data->deleted_at)){ return 'Dihapus'; }else if ($data->status == '0') { return 'Nonaktif'; }else{ return 'Aktif'; } }) ->addColumn('issues', function ($data) { $issueCount = $data->issues->count(); if($issueCount > 0){ return $issueCount. ' [Lihat]'; }else{ return $issueCount; } }) ->addColumn('action', function ($data) { $showUrl = route('dashboard.sub.classifications.show', ['id' => encrypt_id($data->id)]); $editUrl = route('dashboard.sub.classifications.edit', ['id' => encrypt_id($data->id)]); $deleteUrl = route('dashboard.sub.classifications.destroy', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['name', 'classification', 'issues', 'status', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function location(Request $request){ if ($request->ajax()) { $data = Location::with(['subLocations'])->get(); $newData = $request->input('new_data', null); return DataTables::of($data) ->addIndexColumn() ->addColumn('name', function ($data) use ($newData) { if(filled($newData) && decrypt_id($newData) == $data->id){ return 'Baru'. $data->name; }else{ return $data->name; } }) ->addColumn('status', function ($data) { if ($data->status == '0') { return 'Nonaktif'; }else{ return 'Aktif'; } }) ->addColumn('sub_locations', function ($data) { $subLocationsCount = $data->subLocations->count(); if($subLocationsCount > 0){ return $subLocationsCount. ' [Lihat]'; }else{ return $subLocationsCount; } }) ->addColumn('issues', function ($data) { $issueCount = $data->issues->count(); if($issueCount > 0){ return $issueCount. ' [Lihat]'; }else{ return $issueCount; } }) ->addColumn('action', function ($data) { $showUrl = route('dashboard.locations.show', ['id' => encrypt_id($data->id)]); $addSubLocationUrl = route('dashboard.sub.locations.create', ['location' => encrypt_id($data->id)]); $editUrl = route('dashboard.locations.edit', ['id' => encrypt_id($data->id)]); $deleteUrl = route('dashboard.locations.destroy', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['name', 'sub_locations', 'issues', 'status', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function subLocation(Request $request){ if ($request->ajax()) { $locationParam = $request->input('location', null); if($locationParam){ $data = SubLocation::with(['location'])->where('location_id', '=', decrypt_id($locationParam))->get(); }else{ $data = SubLocation::with(['location'])->get(); } $newData = $request->input('new_data', null); return DataTables::of($data) ->addIndexColumn() ->addColumn('name', function ($data) use ($newData) { if(filled($newData) && decrypt_id($newData) == $data->id){ return 'Baru'. $data->name; }else{ return $data->name; } }) ->addColumn('location', function ($data) { return ''.$data->location->name.''; }) ->addColumn('status', function ($data) { if ($data->status == '0') { return 'Nonaktif'; }else{ return 'Aktif'; } }) ->addColumn('issues', function ($data) { $issueCount = $data->issues->count(); if($issueCount > 0){ return $issueCount. ' [Lihat]'; }else{ return $issueCount; } }) ->addColumn('action', function ($data) { $showUrl = route('dashboard.sub.locations.show', ['id' => encrypt_id($data->id)]); $editUrl = route('dashboard.sub.locations.edit', ['id' => encrypt_id($data->id)]); $deleteUrl = route('dashboard.sub.locations.destroy', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['name', 'location', 'issues', 'status', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function governmentAgency(Request $request){ if ($request->ajax()) { $data = GovernmentAgency::with(['issues'])->get(); $newData = $request->input('new_data', null); return DataTables::of($data) ->addIndexColumn() ->addColumn('name', function ($data) use ($newData) { if(filled($newData) && decrypt_id($newData) == $data->id){ return 'Baru'. $data->name; }else{ return $data->name; } }) ->addColumn('short_name', function ($data) { return filled($data->short_name) ? $data->short_name : 'Belum ditambahkan'; }) ->addColumn('issues', function ($data) { $issueCount = $data->issues->count(); if($issueCount > 0){ return $issueCount. ' [Lihat]'; }else{ return $issueCount; } }) ->addColumn('action', function ($data) { $showUrl = route('dashboard.government.agencies.show', ['id' => encrypt_id($data->id)]); $editUrl = route('dashboard.government.agencies.edit', ['id' => encrypt_id($data->id)]); $deleteUrl = route('dashboard.government.agencies.destroy', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['name', 'short_name', 'issues', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function airingProofTheme(Request $request){ if ($request->ajax()) { $data = AiringProofTheme::all(); return DataTables::of($data) ->addIndexColumn() ->addColumn('date_created', function ($data) { return idn_date($data->created_at, 'l, d F Y'); }) ->addColumn('action', function ($data) { $showUrl = route('dashboard.airing.proof.themes.show', ['id' => encrypt_id($data->id)]); $editUrl = route('dashboard.airing.proof.themes.edit', ['id' => encrypt_id($data->id)]); $deleteUrl = route('dashboard.airing.proof.themes.destroy', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function contentRecapClassification(Request $request){ if ($request->ajax()) { $data = ContentRecapClassification::all(); return DataTables::of($data) ->addIndexColumn() ->addColumn('content_recaps', function ($data) { $contentRecapsCount = $data->contentRecaps->count(); if($contentRecapsCount > 0){ return $contentRecapsCount. ' [Lihat]'; }else{ return $contentRecapsCount; } }) ->addColumn('date_created', function ($data) { return idn_date($data->created_at, 'l, d F Y'); }) ->addColumn('action', function ($data) { $showUrl = route('dashboard.content.recap.classifications.show', ['id' => encrypt_id($data->id)]); $editUrl = route('dashboard.content.recap.classifications.edit', ['id' => encrypt_id($data->id)]); $deleteUrl = route('dashboard.content.recap.classifications.destroy', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['content_recaps', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function news(Request $request){ if ($request->ajax()) { $category = $request->input('category', 'all'); $year = $request->input('year', null); $month = $request->input('month', null); $date = $request->input('date', null); $query = News::query(); if($category !== 'all'){ if($category === 'news'){ $query->where('category', '0'); }else if($category === 'announcement'){ $query->where('category', '1'); } } if ($year) { $query->whereYear('created_at', $year); } if ($month) { $monthYear = Carbon::parse($month); $query->whereYear('created_at', $monthYear->year) ->whereMonth('created_at', $monthYear->month); } if ($date) { $query->whereDate('created_at', $date); } $data = $query->get(); return DataTables::of($data) ->addIndexColumn() ->addColumn('title', function ($data) { return $data->title; }) ->addColumn('link', function ($data) { if ($data->link != null) { return ''.$data->link.''; }else{ return 'Tidak ada link'; } }) ->addColumn('category', function ($data) { if ($data->category === '0') { return 'Berita'; }else{ return 'Pengumuman'; } }) ->addColumn('posted_at', function ($data) { return idn_date($data->created_at, 'd F Y'); }) ->addColumn('action', function ($data) { $showUrl = route('dashboard.news.show', ['id' => encrypt_id($data->id)]); $printUrl = route('dashboard.news.data.print', ['slug' => $data->slug]); $editUrl = route('dashboard.news.edit', ['id' => encrypt_id($data->id)]); $deleteUrl = route('dashboard.news.destroy', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['link', 'category', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function announcement(Request $request, $category){ if ($request->ajax()) { $data = Announcement::whereHas('users', function ($query) use ($category){ $query->where('announcements_users.category', $category); }) ->where(function ($query) { $query->whereHas('users', function ($query) { $query->where('announcements_users.category', '!=', 'system'); }) ->orWhere('enhancer_id', '!=', Auth::id()); }) ->get(); return DataTables::of($data) ->addIndexColumn() ->addColumn('sender', function ($data) use ($category) { if ($category === 'system') { return 'Sistem'; }else{ return 'Admin'; } }) ->addColumn('sent_at', function ($data) { return idn_date($data->created_at, 'l, d F Y H:i'); }) ->addColumn('action', function ($data) use ($category){ $showUrl = route('dashboard.announcements.show', ['id' => encrypt_id($data->id)]); $editUrl = route('dashboard.announcements.edit', ['id' => encrypt_id($data->id)]); $deleteUrl = route('dashboard.announcements.destroy', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['headline', 'sender', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function mediaAnnouncement(Request $request, $category){ if ($request->ajax()) { $data = User::with(['announcements' => function($query) use ($category) { $query->wherePivot('category', $category) ->where('enhancer_id', '!=', Auth::id()); }]) ->findOrFail(Auth::user()->id) ->announcements; return DataTables::of($data) ->addIndexColumn() ->addColumn('sent_at', function ($data) { return idn_date($data->created_at, 'l, d F Y H:i'); }) ->addColumn('sender', function ($data) use ($category) { if ($category === 'system') { return 'Sistem'; }else{ return 'Admin'; } }) ->addColumn('status', function ($data) { if ($data->pivot->status == '0') { return 'Belum Dibaca'; }else{ return 'Sudah Dibaca'; } }) ->addColumn('action', function ($data) { $showUrl = route('dashboard.announcements.read', ['id' => encrypt_id($data->id)]); $editUrl = route('dashboard.announcements.edit', ['id' => encrypt_id($data->id)]); $deleteUrl = route('dashboard.announcements.destroy', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['headline', 'sender', 'status', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function company(Request $request){ if ($request->ajax()) { $status = $request->input('status', null); $edit_status = $request->input('edit_status', null); $address = $request->input('address', null); $register_year = $request->input('register_year', null); $register_month = $request->input('register_month', null); $register_date = $request->input('register_date', null); $query = Company::with(['user']); if($status !== 'all'){ if($status === 'waiting'){ $query->whereHas('user', function ($q){ $q->where('status', '0'); }); }else if($status === 'accepted'){ $query->whereHas('user', function ($q){ $q->where('status', '1'); }); }else if($status === 'rejected'){ $query->whereHas('user', function ($q){ $q->where('status', '2'); }); } } if($edit_status !== 'all'){ if($edit_status === 'no-edit'){ $query->where('edit_status', '0'); }elseif($edit_status === 'waiting'){ $query->where('edit_status', '1'); }else if($edit_status === 'accepted'){ $query->where('edit_status', '2'); }else if($edit_status === 'rejected'){ $query->where('edit_status', '3'); } } if ($address) { $query->where('address', 'LIKE', '%'.$address.'%'); } if ($register_year) { $query->whereYear('created_at', $register_year); } if ($register_month) { $monthYear = Carbon::parse($register_month); $query->whereYear('created_at', $monthYear->year) ->whereMonth('created_at', $monthYear->month); } if ($register_date) { $query->whereDate('created_at', $register_date); } $data = $query->get(); return DataTables::of($data) ->addIndexColumn() ->addColumn('status', function ($data) { switch($data->user->status){ case 0: return 'Menunggu'; case 1: return 'Diterima'; case 2: return 'Ditolak'; default: return 'Tidak Diketahui'; } }) ->addColumn('address', function ($data) { return '
' . $data->address . '
'; }) ->addColumn('status_edit', function ($data) { switch($data->edit_status){ case 0: return 'Tidak Ada'; case 1: return 'Menunggu'; case 2: return 'Diterima'; case 3: return 'Ditolak'; default: return 'Tidak Diketahui'; } }) ->addColumn('register_at', function ($data) { return idn_date($data->created_at, 'd F Y'); }) ->addColumn('validated_at', function ($data) { return idn_date($data->validated_at, 'd F Y'); }) ->addColumn('action', function ($data) { $showUrl = route('dashboard.companies.show', ['id' => encrypt_id($data->user->id), 'type' => 'company']); $printUrl = route('dashboard.companies.data.print', ['id' => encrypt_id($data->id)]); $deleteUrl = route('dashboard.companies.destroy', ['id' => encrypt_id($data->id)]); $processAccountCompanyUrl = route('dashboard.companies.process', ['id' => encrypt_id($data->user->id), 'type' => 'company', 'category' => 'account-status']); $processEditRequestCompanyUrl = route('dashboard.companies.process', ['id' => encrypt_id($data->user->id), 'type' => 'company', 'category' => 'edit-request']); $dropdown = ''; return $dropdown; }) ->rawColumns(['status', 'status_edit', 'address', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function media(Request $request){ if ($request->ajax()) { $type = $request->input('type', null); $classification = $request->input('classification', null); $status = $request->input('status', null); $edit_status = $request->input('edit_status', null); $address = $request->input('address', null); $register_year = $request->input('register_year', null); $register_month = $request->input('register_month', null); $register_date = $request->input('register_date', null); $query = Media::with(['company.user']); if($type !== 'all'){ if($type === 'online'){ $query->where('type', 'online'); }elseif($type === 'print'){ $query->where('type', 'cetak'); }else if($type === 'radio'){ $query->where('type', 'radio'); }else if($type === 'television'){ $query->where('type', 'televisi'); } } if($classification !== 'all'){ if($classification === 'local'){ $query->where('classification', 'lokal'); }elseif($classification === 'regional'){ $query->where('classification', 'regional'); }else if($classification === 'national'){ $query->where('classification', 'nasional'); } } if($status !== 'all'){ if($status === 'waiting'){ $query->whereHas('user', function ($q){ $q->where('status', '0'); }); }else if($status === 'accepted'){ $query->whereHas('user', function ($q){ $q->where('status', '1'); }); }else if($status === 'rejected'){ $query->whereHas('user', function ($q){ $q->where('status', '2'); }); } } if($edit_status !== 'all'){ if($edit_status === 'no-edit'){ $query->where('edit_status', '0'); }elseif($edit_status === 'waiting'){ $query->where('edit_status', '1'); }else if($edit_status === 'accepted'){ $query->where('edit_status', '2'); }else if($edit_status === 'rejected'){ $query->where('edit_status', '3'); } } if ($address) { $query->where('address', 'LIKE', '%'.$address.'%'); } if ($register_year) { $query->whereYear('created_at', $register_year); } if ($register_month) { $monthYear = Carbon::parse($register_month); $query->whereYear('created_at', $monthYear->year) ->whereMonth('created_at', $monthYear->month); } if ($register_date) { $query->whereDate('created_at', $register_date); } $data = $query->get(); // $data = ->get(); return DataTables::of($data) ->addIndexColumn() ->addColumn('media_name', function ($data) { return $data->name; }) ->addColumn('company_name', function ($data) { return $data->company->name; }) ->addColumn('type', function ($data) { return ucfirst($data->type); }) ->addColumn('classification', function ($data) { return ucfirst($data->classification); }) ->addColumn('link', function ($data) { if($data->link){ return ''.$data->link.''; }else{ return 'Tidak memiliki link'; } }) ->addColumn('address', function ($data) { return '
' . $data->address . '
'; }) ->addColumn('status', function ($data) { switch($data->company->user->status){ case 0: return 'Menunggu'; case 1: return 'Diterima'; case 2: return 'Ditolak'; default: return 'Tidak Diketahui'; } }) ->addColumn('status_edit', function ($data) { switch($data->edit_status){ case 0: return 'Tidak Ada'; case 1: return 'Menunggu'; case 2: return 'Diterima'; case 3: return 'Ditolak'; default: return 'Tidak Diketahui'; } }) ->addColumn('action', function ($data) { $showUrl = route('dashboard.media.show', ['id' => encrypt_id($data->user->id), 'type' => 'media']); $printUrl = route('dashboard.media.data.print', ['id' => encrypt_id($data->id)]); $deleteUrl = route('dashboard.media.destroy', ['id' => encrypt_id($data->id)]); $processEditRequestCompanyUrl = route('dashboard.media.process', ['id' => encrypt_id($data->user->id), 'type' => 'media', 'category' => 'edit-request']); $dropdown = ''; return $dropdown; }) ->rawColumns(['link', 'address', 'status', 'status_edit', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function journalist(Request $request){ if ($request->ajax()) { $media_ids = $request->input('media_ids', null); $media_ids_array = json_decode(rtrim($media_ids, ';'), true); $status = $request->input('status', null); $edit_status = $request->input('edit_status', null); $address = $request->input('address', null); $register_year = $request->input('register_year', null); $register_month = $request->input('register_month', null); $register_date = $request->input('register_date', null); $query = Journalist::with(['media' => function($q) { $q->withTrashed(); }, 'media.company' => function($q) { $q->withTrashed(); }, 'media.company.user' => function($q) { $q->withTrashed(); }]) ->where('approved_status', '1') ->whereNull('deleted_at'); if (is_array($media_ids_array) && !in_array('all', $media_ids_array)) { $query->whereIn('media_id', array_map('decrypt_id', $media_ids_array)); } if ($status !== 'all') { if ($status === 'waiting') { $query->whereHas('media.company.user', function ($q) { $q->where('status', '0'); // Status waiting di User }); } elseif ($status === 'accepted') { $query->whereHas('media.company.user', function ($q) { $q->where('status', '1'); // Status accepted di User }); } elseif ($status === 'rejected') { $query->whereHas('media.company.user', function ($q) { $q->where('status', '2'); // Status rejected di User }); } } if($edit_status !== 'all'){ if($edit_status === 'no-edit'){ $query->where('edit_status', '0'); }elseif($edit_status === 'waiting'){ $query->where('edit_status', '1'); }else if($edit_status === 'accepted'){ $query->where('edit_status', '2'); }else if($edit_status === 'rejected'){ $query->where('edit_status', '3'); } } if ($address) { $query->where('address', 'LIKE', '%'.$address.'%'); } if ($register_year) { $query->whereYear('created_at', $register_year); } if ($register_month) { $monthYear = Carbon::parse($register_month); $query->whereYear('created_at', $monthYear->year) ->whereMonth('created_at', $monthYear->month); } if ($register_date) { $query->whereDate('created_at', $register_date); } $data = $query->get(); return DataTables::of($data) ->addIndexColumn() ->addColumn('journalist_name', function ($data) { return $data->name; }) ->addColumn('company_name', function ($data) use ($media_ids_array) { return $data->media->company->name; }) ->addColumn('media_name', function ($data) use ($media_ids_array) { return $data->media->name; }) ->addColumn('status', function ($data) { switch($data->media->company->user->status){ case 0: return 'Menunggu'; case 1: return 'Diterima'; case 2: return 'Ditolak'; case 3: return 'Tidak Diketahui'; default: return 'Tidak Diketahui'; } }) ->addColumn('status_edit', function ($data) { switch($data->edit_status){ case 0: return 'Tidak Ada'; case 1: return 'Menunggu'; case 2: return 'Diterima'; case 3: return 'Ditolak'; default: return 'Tidak Diketahui'; } }) ->addColumn('action', function ($data) { $showUrl = route('dashboard.journalists.show', ['id' => encrypt_id($data->id)]); $printUrl = route('dashboard.journalists.data.print', ['id' => encrypt_id($data->id)]); $editUrl = route('dashboard.journalists.edit', ['id' => encrypt_id($data->id)]); $deleteUrl = route('dashboard.journalists.destroy', ['id' => encrypt_id($data->id)]); $processEditRequestCompanyUrl = route('dashboard.journalists.edit.process', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['status', 'status_edit', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function journalistSubmission(Request $request, $role){ if ($request->ajax()) { $data = Journalist::with(['media' => function($query) { $query->withTrashed(); }, 'media.company' => function($query) { $query->withTrashed(); }, 'media.company.user' => function($query) { $query->withTrashed(); }]); if ($role === '1') { $data->where('approved_status', '0') ->whereNull('deleted_at') ->orWhere('approved_status', '2'); } else if($role === '3'){ $data->where('approved_status', '0') ->orWhere('approved_status', '2') ->whereNull('deleted_at') ->where('media_id', Auth::user()->company->media->id); } $data = $data->get(); return DataTables::of($data) ->addIndexColumn() ->addColumn('journalist_name', function ($data) { return $data->name; }) ->addColumn('company_name', function ($data) { return $data->media->company->name; }) ->addColumn('status', function ($data) { switch($data->media->company->user->status){ case 0: return 'Menunggu'; case 1: return 'Diterima'; case 2: return 'Ditolak'; case 3: return 'Tidak Diketahui'; default: return 'Tidak Diketahui'; } }) ->addColumn('approved_status', function ($data) { switch($data->approved_status){ case 0: return 'Menunggu'; case 1: return 'Diterima'; case 2: return 'Ditolak'; case 3: return 'Tidak Diketahui'; default: return 'Tidak Diketahui'; } }) ->addColumn('action', function ($data) { $showUrl = route('dashboard.journalists.show', ['id' => encrypt_id($data->id)]); $processUrl = route('dashboard.journalists.submissions.process', ['id' => encrypt_id($data->id)]); $editUrl = route('dashboard.journalists.edit', ['id' => encrypt_id($data->id)]); $deleteUrl = route('dashboard.journalists.destroy', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['approved_status', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } // admin (kerja sama) public function cooperation(Request $request){ if ($request->ajax()) { $year = $request->input('year', null); $month = $request->input('month', null); $date = $request->input('date', null); // 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(); // }); // } $query = Cooperation::with(['media', 'mediaOrder']); if (is_role(['3'])) { $mediaId = Auth::user()->company->media->id; $query->whereHas('proposals', function ($q) use ($mediaId) { $q->where('status', '=', '1'); $q ->where('media_id', $mediaId); }); } if ($year) { $query->whereYear('created_at', $year); } if ($month) { $monthYear = Carbon::parse($month); $query->whereYear('created_at', $monthYear->year) ->whereMonth('created_at', $monthYear->month); } if ($date) { $query->whereDate('created_at', $date); } $data = $query->get(); return DataTables::of($data) ->addIndexColumn() ->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('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 Kerja Sama
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)]); $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); } // admin (detail kerja sama -> data media) public function cooperationMedia(Request $request, $id){ if ($request->ajax()) { $cooperation = Cooperation::with(['media'])->where('id', '=', decrypt_id($id))->first(); $data = $cooperation->media; return DataTables::of($data) ->addIndexColumn() ->addColumn('media_name', function ($data) { return $data->name; }) ->addColumn('company_name', function ($data) { return $data->company->name; }) ->addColumn('email', function ($data) { return $data->company->email; }) ->addColumn('type', function ($data) { return ucfirst($data->type); }) ->addColumn('classification', function ($data) { return ucfirst($data->classification); }) ->addColumn('status', function ($data) use ($cooperation) { switch($data->pivot->status){ case 0: return 'Menunggu'; case 1: $status = 'Menerima
'; $isCooperationProposalExists = CooperationProposal::where('cooperation_id', '=', $cooperation->id) ->where('media_id', '=', $data->id)->exists(); if(!$isCooperationProposalExists){ $status .= 'Belum Pengajuan'; }else{ $status .= 'Sudah Pengajuan'; } return $status; case 2: return 'Menolak '; case 3: return 'Tidak Diketahui'; } }) ->rawColumns(['link', 'address', 'status']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } // admin (data pengajuan kerja sama) public function cooperationProposal(Request $request, $id){ if ($request->ajax()) { $cooperation = Cooperation::with(['media', 'proposals'])->where('id', '=', decrypt_id($id))->first(); $data = $cooperation->proposals; return DataTables::of($data) ->addIndexColumn() ->addColumn('name', function ($data) { return '
' . $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 'Menunggu'; case '1': return 'Diterima'; case '2': return 'Ditolak'; default: return 'Tidak Diketahui'; } }) ->addColumn('action', function ($data) { $showUrl = route('dashboard.cooperations.media.proposal.show', ['id' => encrypt_id($data->cooperation->id), 'proposal_id' => encrypt_id($data->id)]); $acceptUrl = route('dashboard.cooperations.media.proposal.accept', ['id' => encrypt_id($data->cooperation->id), 'proposal_id' => encrypt_id($data->id)]); $rejectUrl = route('dashboard.cooperations.media.proposal.reject', ['id' => encrypt_id($data->cooperation->id), 'proposal_id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['status', 'name', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } // media (ajuan kerja sama) public function cooperationRequest(Request $request){ if ($request->ajax()) { $user = User::findOrFail(Auth::id()); $mediaId = $user->company->media->id; $media = Media::with('cooperations')->findOrFail($mediaId); $data = $media->cooperations() ->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() ->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('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(!$isCooperationProposalExists){ $status .= 'Belum Mengajukan'; }else{ $status .= 'Sudah Mengajukan'; } return $status; case '2': return 'Ditolak'; default: return 'Tidak Diketahui'; } }) ->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)]); // $deleteUrl = route('dashboard.cooperations.destroy', ['id' => encrypt_id($data->id)]); $acceptUrl = route('dashboard.cooperations.requests.accept', ['id' => encrypt_id($data->id)]); $cooperationProposalUrl = route('dashboard.cooperations.requests.proposal', ['id' => encrypt_id($data->id)]); $rejectUrl = route('dashboard.cooperations.requests.reject', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['status', 'name', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } // 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.requests.proposal.edit', ['id' => encrypt_id($data->id)]); $deleteUrl = route('dashboard.cooperations.requests.proposal.destroy', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['status', 'name', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function orderMedia(Request $request, $id){ if ($request->ajax()) { $cooperation = Cooperation::with(['media', 'mediaOrder.media'])->where('id', '=', decrypt_id($id))->first(); $data = $cooperation->mediaOrder->media; return DataTables::of($data) ->addIndexColumn() ->addColumn('media_name', function ($data) { return $data->name; }) ->addColumn('company_name', function ($data) { return $data->company->name; }) ->addColumn('email', function ($data) { return $data->company->email; }) ->addColumn('type', function ($data) { return ucfirst($data->type); }) ->addColumn('classification', function ($data) { return ucfirst($data->classification); }) ->addColumn('status', function ($data) use ($cooperation) { switch($data->pivot->status){ case 0: return 'Menunggu'; case 1: return 'Menerima'; case 2: return 'Menolak '; case 3: return 'Tidak Diketahui'; } }) ->rawColumns(['link', 'address', 'status']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function adminMediaReport(Request $request, $id){ if ($request->ajax()) { $mediaOrder = Order::with(['reports', 'media'])->findOrFail(decrypt_id($id)); $data = $mediaOrder->media() ->where(function ($query) { $query->where('media_orders.status', '=', '1'); }) ->get(); return DataTables::of($data) ->addIndexColumn() ->addColumn('media_name', function ($data) { return $data->name; }) ->addColumn('company_name', function ($data) { return $data->company->name; }) ->addColumn('email', function ($data) { return $data->company->email; }) ->addColumn('reuired_reports', function ($data) use ($mediaOrder){ $reportCount = $mediaOrder->reports->filter(function ($report) use ($data) { return $report->media_id == $data->id; // Cek jika laporan milik media ini })->count(); return $reportCount . "/" . $mediaOrder->required_reports; }) ->addColumn('action', function ($data) use ($mediaOrder){ $showUrl = route('dashboard.cooperations.process', ['id' => encrypt_id($mediaOrder->cooperation->id), 'process' => 'reports', 'mediaId' => encrypt_id($data->id)]); // $editUrl = route('dashboard.reports.edit', ['id' => encrypt_id($data->id)]); // $deleteUrl = route('dashboard.reports.destroy', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function mediaReport(Request $request, $mediaOrderId, $mediaId){ if ($request->ajax()) { $mediaOrder = Order::with(['reports', 'media.reports'])->findOrFail(decrypt_id($mediaOrderId)); $reportsByMedia = $mediaOrder->reports->filter(function ($report) use ($mediaId) { return $report->media_id == decrypt_id($mediaId); // Cek jika laporan milik media ini }); $data = $reportsByMedia; return DataTables::of($data) ->addIndexColumn() ->addColumn('title', function ($data) { return $data->title; }) ->addColumn('date', 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) use ($mediaOrder){ $showUrl = route('dashboard.reports.show', ['mediaOrderId' => encrypt_id($mediaOrder->id), 'id' => encrypt_id($data->id)]); $editUrl = route('dashboard.reports.edit', ['mediaOrderId' => encrypt_id($mediaOrder->id), 'id' => encrypt_id($data->id)]); $deleteUrl = route('dashboard.reports.destroy', ['id' => encrypt_id($data->id)]); $acceptUrl = route('dashboard.reports.accept', ['id' => encrypt_id($data->id)]); $rejectUrl = route('dashboard.reports.reject', ['mediaOrderId' => encrypt_id($mediaOrder->id), 'id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['status', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function adminCooperationCompletion(Request $request, $id){ if ($request->ajax()) { $mediaOrder = Order::with(['reports', 'media', 'completions.media'])->findOrFail(decrypt_id($id)); $data = $mediaOrder->completions; return DataTables::of($data) ->addIndexColumn() ->addColumn('media_name', function ($data) { return $data->media->name; }) ->addColumn('company_name', function ($data) { return $data->media->company->name; }) ->addColumn('email', function ($data) { return $data->media->company->email; }) ->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) use ($mediaOrder){ $showUrl = route('dashboard.cooperation.completions.show', ['mediaOrderId' => encrypt_id($mediaOrder->id), 'id' => encrypt_id($data->id)]); $acceptUrl = route('dashboard.cooperation.completions.accept', ['id' => encrypt_id($data->id)]); $rejectUrl = route('dashboard.cooperation.completions.reject', ['mediaOrderId' => encrypt_id($mediaOrder->id), 'id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['status', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } // Penyelesaian Kerja sama public function cooperationCompletionIndex(Request $request){ if ($request->ajax()) { $mediaStrArr = $request->input('media', null); $media = explode(',', $mediaStrArr); $status = $request->input('status', null); $year = $request->input('year', null); $from_month = $request->input('from_month', null); $to_month = $request->input('to_month', null); $date = $request->input('date', null); if(is_role(['1', '5'])){ $query = CooperationCompletion::with(['media.company']); }else if(is_role(['3'])){ $mediaId = Auth::user()->company->media->id; $query = CooperationCompletion::with(['media.company', 'order.cooperation'])->where('media_id', '=', $mediaId); } if (!empty($media[0])) { $query->whereIn('media_id', $media); } if ($status) { switch($status){ case 'waiting': $query->where('status', '0'); break; case 'accepted': $query->where('status', '1'); break; case 'rejected': $query->where('status', '2'); break; } } if ($year) { $query->whereYear('created_at', $year); } if ($from_month && $to_month) { $start = Carbon::parse($from_month)->startOfMonth(); $end = Carbon::parse($to_month)->endOfMonth(); $query->whereBetween('created_at', [$start, $end]); } if ($date) { $query->whereDate('created_at', $date); } $data = $query->get(); return DataTables::of($data) ->addIndexColumn() ->addColumn('cooperation', function ($data) { return $data->order->cooperation->name; }) ->addColumn('media_name', function ($data) { return $data->media->name; }) ->addColumn('company_name', function ($data) { return $data->media->company->name; }) ->addColumn('email', function ($data) { return $data->media->company->email; }) ->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.cooperation.completions.show.index', ['id' => encrypt_id($data->id)]); $processUrl = route('dashboard.cooperation.completions.process.index', ['id' => encrypt_id($data->id)]); $printUrl = route('dashboard.cooperation.completions.print.single', ['id' => encrypt_id($data->id)]); // $rejectUrl = route('dashboard.cooperation.completions.reject', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['status', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function reportIndex(Request $request){ if ($request->ajax()) { $mediaStrArr = $request->input('media', null); $media = explode(',', $mediaStrArr); $status = $request->input('status', null); $year = $request->input('year', null); $from_month = $request->input('from_month', null); $to_month = $request->input('to_month', null); $date = $request->input('date', null); if(is_role(['1', '5'])){ $query = Report::with(['media.company', 'order.cooperation']); }else if(is_role(['3'])){ $mediaId = Auth::user()->company->media->id; $query = Report::with(['media.company', 'order.cooperation'])->where('media_id', '=', $mediaId); } if (!empty($media[0])) { $query->whereIn('media_id', $media); } if ($status) { switch($status){ case 'waiting': $query->where('status', '0'); break; case 'accepted': $query->where('status', '1'); break; case 'rejected': $query->where('status', '2'); break; } } if ($year) { $query->whereYear('created_at', $year); } if ($from_month && $to_month) { $start = Carbon::parse($from_month)->startOfMonth(); $end = Carbon::parse($to_month)->endOfMonth(); $query->whereBetween('created_at', [$start, $end]); } if ($date) { $query->whereDate('created_at', $date); } $data = $query->get(); return DataTables::of($data) ->addIndexColumn() ->addColumn('cooperation', function ($data) use ($media) { return $data->order->cooperation->name; }) ->addColumn('media_name', function ($data) { return $data->media->name; }) ->addColumn('company_name', function ($data) { return $data->media->company->name; }) ->addColumn('email', function ($data) { return $data->media->company->email; }) ->addColumn('date', 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.reports.show.index', ['id' => encrypt_id($data->id)]); $printUrl = route('dashboard.reports.print.single', ['id' => encrypt_id($data->id)]); $processUrl = route('dashboard.reports.process.index', ['id' => encrypt_id($data->id)]); // $rejectUrl = route('dashboard.cooperation.completions.reject', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['status', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function cooperationArchive(Request $request){ if ($request->ajax()) { $year = $request->input('year', null); $month = $request->input('month', null); $date = $request->input('date', null); $query = Cooperation::with(['media', 'mediaOrder']); if (is_role(['1'])) { // Hanya untuk role 1: filter kerja sama lebih dari 1 tahun if (!$year && !$month && !$date) { $query->where('created_at', '<=', Carbon::now()->subYear()); } } else if (is_role(['3'])) { $mediaId = Auth::user()->company->media->id; $query->whereHas('proposals', function ($query) use ($mediaId) { $query->where('status', 1)->where('media_id', $mediaId); }); if (!$year && !$month && !$date) { $query->where('created_at', '<=', Carbon::now()->subYear()); } } if ($year) { $query->whereYear('created_at', $year); } if ($month) { $monthYear = Carbon::parse($month); $query->whereYear('created_at', $monthYear->year) ->whereMonth('created_at', $monthYear->month); } if ($date) { $query->whereDate('created_at', $date); } $data = $query->get(); return DataTables::of($data) ->addIndexColumn() ->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('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 Kerja Sama
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)]); $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()) { $classification = $request->input('classification', null); $channel = $request->input('channel', null); $social_media = $request->input('social_media', null); $content_type = $request->input('content_type', null); $posted_year = $request->input('posted_year', null); $posted_month = $request->input('posted_month', null); $posted_date = $request->input('posted_date', null); $query = ContentRecap::query(); if($classification && $classification !== 'all'){ $query->where('classification_id', decrypt_id($classification)); } if($channel && $channel !== 'all'){ $query->where('channel', $channel); } if($social_media && $social_media !== 'all'){ $query->where('social_media', $social_media); } if($content_type && $content_type !== 'all'){ $query->where('content_type', 'LIKE', '%'.$content_type.'%'); } if ($posted_year) { $query->whereYear('posted_date', $posted_year); } if ($posted_month) { $monthYear = Carbon::parse($posted_month); $query->whereYear('posted_date', $monthYear->year) ->whereMonth('posted_date', $monthYear->month); } if ($posted_date) { $query->whereDate('posted_date', $posted_date); } $data = $query->get(); // if(filled($classification)){ // $data = ContentRecap::where('classification_id', decrypt_id($classification))->get(); // }else{ // $data = ContentRecap::all(); // } return DataTables::of($data) ->addIndexColumn() ->addColumn('channel', function ($data){ return Str::ucfirst($data->channel); }) ->addColumn('classification', function ($data){ return Str::ucfirst($data->classification->name); }) ->addColumn('posted_date', function ($data){ return idn_date($data->posted_date, 'd F Y'); }) ->addColumn('link', function ($data){ return ''.$data->link.''; }) ->addColumn('content_type', function ($data){ return filled($data->content_type) ? Str::title($data->content_type) : '-'; }) ->addColumn('action', function ($data) { $showUrl = route('dashboard.content.recaps.show', ['id' => encrypt_id($data->id)]); $printUrl = route('dashboard.content.recaps.print', ['id' => encrypt_id($data->id)]); $editUrl = route('dashboard.content.recaps.edit', ['id' => encrypt_id($data->id)]); $deleteUrl = route('dashboard.content.recaps.destroy', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['link', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function mediaMonitoring(Request $request){ if ($request->ajax()) { $news_title = $request->input('news_title', null); $channel = $request->input('channel', null); $issue_status = $request->input('issue_status', null); $keyword = $request->input('keyword', null); $input_year = $request->input('input_year', null); $input_month = $request->input('input_month', null); $input_date = $request->input('input_date', null); $release_year = $request->input('release_year', null); $release_month = $request->input('release_month', null); $release_date = $request->input('release_date', null); $query = MediaMonitoring::with(['enhancer', 'issue']); if($news_title){ $query->where('title', 'LIKE', '%'. $news_title.'%'); } if($channel && $channel !== 'all'){ $query->where('channel', $channel); } if ($issue_status && $issue_status !== 'all') { if ($issue_status === 'added') { $query->whereHas('issue'); } elseif ($issue_status === 'not_added') { $query->whereDoesntHave('issue'); } } if($keyword){ $query->where('keyword', 'LIKE', '%'. $keyword.'%'); } if ($input_year) { $query->whereYear('created_at', $input_year); } if ($input_month) { $monthYear = Carbon::parse($input_month); $query->whereYear('created_at', $monthYear->year) ->whereMonth('created_at', $monthYear->month); } if ($input_date) { $query->whereDate('created_at', $input_date); } if ($release_year) { $query->whereYear('release_date', $release_year); } if ($release_month) { $monthYear = Carbon::parse($release_month); $query->whereYear('release_date', $monthYear->year) ->whereMonth('release_date', $monthYear->month); } if ($release_date) { $query->whereDate('release_date', $release_date); } $data = $query->get(); return DataTables::of($data) ->addIndexColumn() ->addColumn('enhancer', function ($data) { return $data->enhancer ? $data->enhancer->name : 'Undefined'; }) ->addColumn('input_date', function ($data) { return idn_date($data->created_at, 'd F Y'); }) ->addColumn('title', function ($data) { return ''.shorten_text($data->title, 40).''; // return shorten_text($data->title, 40); }) ->addColumn('link', function ($data) { if(filled($data->link)){ return ''.$data->link.''; }else{ return '-'; } }) ->addColumn('channel', function ($data) { return ucfirst($data->channel); }) ->addColumn('issue_status', function ($data) { if ($data->issue) { return 'Sudah Ditambahkan'; }else{ return 'Belum Ditambahkan'; } }) ->addColumn('action', function ($data) { $showUrl = route('dashboard.media.monitorings.show', ['id' => encrypt_id($data->id)]); $printUrl = route('dashboard.media.monitorings.print', ['id' => encrypt_id($data->id)]); $addIssueUrl = route('dashboard.issue.managements.create', ['media_monitoring' => encrypt_id($data->id)]); $editUrl = route('dashboard.media.monitorings.edit', ['id' => encrypt_id($data->id)]); $deleteUrl = route('dashboard.media.monitorings.destroy', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['title', 'issue_status', 'link', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function issueManagement(Request $request){ if ($request->ajax()) { $classification = $request->input('classification', null); $sub_classification = $request->input('sub_classification', null); $location = $request->input('location', null); $sub_location = $request->input('sub_location', null); $government_agency = $request->input('government_agency', null); $issue = $request->input('issue', null); $response = $request->input('response', null); $year = $request->input('year', null); $month = $request->input('month', null); $date = $request->input('date', null); $query = IssueManagement::with(['location', 'subLocation', 'classification', 'subClassification', 'enhancer', 'governmentAgencies']); if ($classification) { $query->where('classification_id', decrypt_id($classification)); } if ($sub_classification) { $query->where('sub_classification_id', decrypt_id($sub_classification)); } if ($location) { $query->where('location_id', decrypt_id($location)); } if ($sub_location) { $query->where('sub_location_id', decrypt_id($sub_location)); } if ($government_agency) { $query->whereHas('governmentAgencies', function ($query) use ($government_agency) { $query->where('issue_managements_government_agencies.government_agency_id', decrypt_id($government_agency)); }); } if ($issue) { switch($issue){ case 'positive': $query->where('issue', 'positif'); break; case 'negative': $query->where('issue', 'negatif'); break; case 'neutral': $query->where('issue', 'netral'); break; case 'crisis': $query->where('issue', 'krisis'); break; } } if ($response) { switch($response){ case 'positive': $query->where('response', 'positif'); break; case 'negative': $query->where('response', 'negatif'); break; case 'neutral': $query->where('response', 'netral'); break; case 'crisis': $query->where('response', 'krisis'); break; } } if ($year) { $query->whereYear('created_at', $year); } if ($month) { $monthYear = Carbon::parse($month); $query->whereYear('created_at', $monthYear->year) ->whereMonth('created_at', $monthYear->month); } if ($date) { $query->whereDate('created_at', $date); } $data = $query->get(); return DataTables::of($data) ->addIndexColumn() ->addColumn('code', function ($data) { return $data->mediaMonitoring->code; }) ->addColumn('media_name', function ($data) { return $data->mediaMonitoring->media_name; }) ->addColumn('monitoring_media_title', function ($data) { return '
' . $data->mediaMonitoring->title . '
'; }) ->addColumn('location', function ($data) { return $data->location->name; }) ->addColumn('sub_location', function ($data) { return $data->subLocation->name; }) ->addColumn('classification', function ($data) { return $data->classification->name; }) ->addColumn('sub_classification', function ($data) { return $data->subClassification->name; }) ->addColumn('issue', function ($data) { return Str::ucfirst($data->issue); }) ->addColumn('response', function ($data) { return Str::ucfirst($data->issue); }) ->addColumn('government_agencies', function ($data) { return $data->governmentAgencies->map(function($agency) { return Str::ucfirst($agency->name); })->implode(', '); }) ->addColumn('action', function ($data) { $showUrl = route('dashboard.issue.managements.show', ['id' => encrypt_id($data->id)]); $printUrl = route('dashboard.issue.managements.print', ['id' => encrypt_id($data->id)]); $editUrl = route('dashboard.issue.managements.edit', ['id' => encrypt_id($data->id)]); $deleteUrl = route('dashboard.issue.managements.destroy', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['monitoring_media_title', 'issue_status', 'link', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function contactMessage(Request $request){ if ($request->ajax()) { $status = $request->input('status', null); $query = Contact::query(); if($status && in_array($status, ['replied','not_yet_replied'])){ switch($status){ case 'not_yet_replied': $statusNum = '0'; break; case 'replied': $statusNum = '1'; break; } $query->where('status', '=', $statusNum)->get(); } $data = $query->get(); return DataTables::of($data) ->addIndexColumn() ->addColumn('status', function ($data){ switch($data->status){ case '0': return 'Belum Dibalas'; case '1': return 'Sudah Dibalas'; default: return 'Tidak Diketahui'; } }) ->addColumn('date', function ($data){ return idn_date($data->created_at, 'H:i l, d F Y'); }) ->addColumn('action', function ($data) { $showUrl = route('dashboard.contact.messages.show', ['id' => encrypt_id($data->id)]); $replyUrl = route('dashboard.contact.messages.reply', ['id' => encrypt_id($data->id)]); $deleteUrl = route('dashboard.contact.messages.destroy', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['status', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function user(Request $request){ if ($request->ajax()) { $role = $request->input('role', null); $status = $request->input('status', null); $query = User::with(['role']); if($role && $role !== 'all'){ $role = Role::findOrFail(decrypt_id($role)); $query->where('role_id', '=', $role->id)->get(); } if($status && in_array($status, ['waiting','active','nonactive'])){ switch($status){ case 'waiting': $statusNum = '0'; break; case 'active': $statusNum = '1'; break; case 'nonactive': $statusNum = '2'; break; } $query->where('status', '=', $statusNum)->get(); } $data = $query->get(); return DataTables::of($data) ->addIndexColumn() ->addColumn('role', function ($data){ return $data->role->name; }) ->addColumn('status', function ($data){ switch($data->status){ case '0': return 'Menunggu'; case '1': return 'Aktif'; case '2': return 'Nonaktif'; case '3': return 'Ditolak'; default: return 'Tidak Diketahui'; } }) ->addColumn('action', function ($data) { $showUrl = route('dashboard.users.show', ['id' => encrypt_id($data->id), 'type' => 'account']); $acceptUrl = route('dashboard.users.process', ['id' => encrypt_id($data->id), 'type' => 'account', 'process' => 'accept']); $rejectUrl = route('dashboard.users.process', ['id' => encrypt_id($data->id), 'type' => 'account', 'process' => 'reject']); $resetPasswordUrl = route('dashboard.users.reset.password', ['id' => encrypt_id($data->id)]); $editUrl = route('dashboard.users.edit', ['id' => encrypt_id($data->id)]); $deleteUrl = route('dashboard.users.destroy', ['id' => encrypt_id($data->id)]); $dropdown = ''; return $dropdown; }) ->rawColumns(['status', 'action']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function role(Request $request){ if ($request->ajax()) { $data = Role::with(['user'])->get(); return DataTables::of($data) ->addIndexColumn() ->addColumn('account_count', function ($data) { $accountCount = $data->user->count(); if($accountCount > 0){ return $accountCount. ' [Lihat]'; }else{ return $accountCount; } }) ->rawColumns(['account_count']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } public function loginHistory(Request $request){ if ($request->ajax()) { $year = $request->input('year', null); $month = $request->input('month', null); $date = $request->input('date', null); $role = $request->input('role', null); $query = LoginHistory::with(['user']); if ($year) { $query->whereYear('logged_in_at', $year); } if ($month) { $monthYear = Carbon::parse($month); $query->whereYear('logged_in_at', $monthYear->year) ->whereMonth('logged_in_at', $monthYear->month); } if ($date) { $query->whereDate('logged_in_at', $date); } if($role !== 'all'){ if($role === 'admin'){ $query->whereHas('user', function ($q) use ($role) { $q->where('role_id', 1); }); }else if($role === 'company'){ $query->whereHas('user', function ($q) use ($role) { $q->where('role_id', 3); }); }else if($role === 'monitoring_admin'){ $query->whereHas('user', function ($q) use ($role) { $q->where('role_id', 2); }); }else if($role === 'content_admin'){ $query->whereHas('user', function ($q) use ($role) { $q->where('role_id', 4); }); } } $data = $query->get(); return DataTables::of($data) ->addIndexColumn() ->addColumn('name', function ($data) { return $data->user->name; }) ->addColumn('role', function ($data) { return $data->user->role->name; }) ->addColumn('logged_in_at', function ($data) { return ''.idn_date($data->logged_in_at, 'H:i').''. ' - '.idn_date($data->logged_in_at, 'd F Y').''; }) ->rawColumns(['logged_in_at']) ->make(true); } return response()->json(['error' => 'Unauthorized'], 401); } }