ajax()) {
if($request->input('filter') === 'deleted'){
$data = Classification::with(['subClassifications'])->onlyTrashed()->get();
}else{
$data = Classification::with(['subClassifications'])->get();
}
return DataTables::of($data)
->addIndexColumn()
->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(['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();
}
}
return DataTables::of($data)
->addIndexColumn()
->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(['issues', 'status', 'action'])
->make(true);
}
return response()->json(['error' => 'Unauthorized'], 401);
}
public function location(Request $request){
if ($request->ajax()) {
$data = Location::with(['subLocations'])->get();
return DataTables::of($data)
->addIndexColumn()
->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(['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();
}
return DataTables::of($data)
->addIndexColumn()
->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(['issues', 'status', 'action'])
->make(true);
}
return response()->json(['error' => 'Unauthorized'], 401);
}
public function governmentAgency(Request $request){
if ($request->ajax()) {
$data = GovernmentAgency::with(['issues'])->get();
return DataTables::of($data)
->addIndexColumn()
->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(['issues', '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('action', function ($data) {
$showUrl = route('dashboard.news.show', ['id' => encrypt_id($data->id)]);
$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 airingProofTheme(Request $request){
if ($request->ajax()) {
$data = AiringProofTheme::all();
return DataTables::of($data)
->addIndexColumn()
->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 company(Request $request){
if ($request->ajax()) {
$data = Company::with(['user'])->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';
case 3:
return 'Tidak Diketahui';
}
})
->addColumn('address', function ($data) {
return '' . $data->address . '
';
})
->addColumn('status_edit', function ($data) {
switch($data->edit_status){
case 0:
return 'Menunggu';
case 1:
return 'Diterima';
case 2:
return 'Ditolak';
case 3:
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->id)]);
$editUrl = route('dashboard.companies.edit', ['id' => encrypt_id($data->id)]);
$deleteUrl = route('dashboard.companies.destroy', ['id' => encrypt_id($data->id)]);
$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()) {
$data = Media::with(['company.user'])->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';
case 3:
return 'Tidak Diketahui';
}
})
->addColumn('status_edit', function ($data) {
switch($data->edit_status){
case 0:
return 'Menunggu';
case 1:
return 'Diterima';
case 2:
return 'Ditolak';
case 3:
return 'Tidak Diketahui';
}
})
->addColumn('action', function ($data) {
$showUrl = route('dashboard.media.show', ['id' => encrypt_id($data->id)]);
$editUrl = route('dashboard.media.edit', ['id' => encrypt_id($data->id)]);
$deleteUrl = route('dashboard.media.destroy', ['id' => encrypt_id($data->id)]);
$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()) {
$data = Journalist::with(['media' => function($query) {
$query->withTrashed();
}, 'media.company' => function($query) {
$query->withTrashed();
}, 'media.company.user' => function($query) {
$query->withTrashed();
}])->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('status_edit', function ($data) {
switch($data->edit_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)]);
$editUrl = route('dashboard.journalists.edit', ['id' => encrypt_id($data->id)]);
$deleteUrl = route('dashboard.journalists.destroy', ['id' => encrypt_id($data->id)]);
$dropdown = '';
return $dropdown;
})
->rawColumns(['status', 'status_edit', 'action'])
->make(true);
}
return response()->json(['error' => 'Unauthorized'], 401);
}
// admin (kerjasama)
public function cooperation(Request $request){
if ($request->ajax()) {
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)
->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 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)]);
$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 kerjasama -> 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 kerjasama)
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 kerjasama)
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);
}
public function contentRecap(Request $request){
if ($request->ajax()) {
$data = ContentRecap::all();
return DataTables::of($data)
->addIndexColumn()
->addColumn('channel', function ($data){
return Str::ucfirst($data->channel);
})
->addColumn('posted_date', function ($data){
return idn_date($data->posted_date, 'd F Y');
})
->addColumn('link', function ($data){
return ''.$data->link.'';
})
->addColumn('action', function ($data) {
$showUrl = route('dashboard.content.recaps.show', ['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()) {
$data = MediaMonitoring::with(['enhancer'])->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->input_date, 'd F Y');
})
->addColumn('title', function ($data) {
return shorten_text($data->title, 40);
})
->addColumn('link', function ($data) {
if(filled($data->link)){
return ''.$data->link.'';
}else{
return '-';
}
})
->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)]);
$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(['issue_status', 'link', 'action'])
->make(true);
}
return response()->json(['error' => 'Unauthorized'], 401);
}
public function issueManagement(Request $request){
if ($request->ajax()) {
$classificationParam = $request->input('classification', null);
$subClassificationParam = $request->input('sub_classification', null);
$locationParam = $request->input('location', null);
$subLocationParam = $request->input('sub_location', null);
$governmentAgencyParam = $request->input('government_agency', null);
if($classificationParam){
$data = IssueManagement::with(['location', 'subLocation', 'classification', 'subClassification', 'enhancer', 'governmentAgencies'])->where('classification_id', decrypt_id($classificationParam))->get();
}else if($subClassificationParam){
$data = IssueManagement::with(['location', 'subLocation', 'classification', 'subClassification', 'enhancer', 'governmentAgencies'])->where('sub_classification_id', decrypt_id($subClassificationParam))->get();
}else if($locationParam){
$data = IssueManagement::with(['location', 'subLocation', 'classification', 'subClassification', 'enhancer', 'governmentAgencies'])->where('location_id', decrypt_id($locationParam))->get();
}else if($subLocationParam){
$data = IssueManagement::with(['location', 'subLocation', 'classification', 'subClassification', 'enhancer', 'governmentAgencies'])->where('sub_location_id', decrypt_id($subLocationParam))->get();
}else if($governmentAgencyParam){
$data = IssueManagement::with(['location', 'subLocation', 'classification', 'subClassification', 'enhancer', 'governmentAgencies'])
->whereHas('governmentAgencies', function ($query) use ($governmentAgencyParam) {
$query->where('issue_managements_government_agencies.government_agency_id', decrypt_id($governmentAgencyParam));
})
->get();
}else{
$data = IssueManagement::with(['location', 'subLocation', 'classification', 'subClassification', 'enhancer', 'governmentAgencies'])->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)]);
$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 user(Request $request){
if ($request->ajax()) {
$roleParam = $request->input('role', null);
if($roleParam){
$role = Role::findOrFail(decrypt_id($roleParam));
$data = User::with(['role'])->where('role_id', '=', $role->id)->get();
}else{
$data = User::with(['role'])->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)]);
$acceptUrl = route('dashboard.users.status.action', ['id' => encrypt_id($data->id), 'action' => 'accept']);
$rejectUrl = route('dashboard.users.status.action', ['id' => encrypt_id($data->id), 'action' => '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);
}
}