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';
} elseif ($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';
} elseif ($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');
} elseif ($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');
});
} elseif ($status === 'accepted') {
$query->whereHas('user', function ($q) {
$q->where('status', '1');
});
} elseif ($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');
} elseif ($edit_status === 'accepted') {
$query->where('edit_status', '2');
} elseif ($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');
} elseif ($type === 'radio') {
$query->where('type', 'radio');
} elseif ($type === 'television') {
$query->where('type', 'televisi');
}
}
if ($classification !== 'all') {
if ($classification === 'local') {
$query->where('classification', 'lokal');
} elseif ($classification === 'regional') {
$query->where('classification', 'regional');
} elseif ($classification === 'national') {
$query->where('classification', 'nasional');
}
}
if ($status !== 'all') {
if ($status === 'waiting') {
$query->whereHas('user', function ($q) {
$q->where('status', '0');
});
} elseif ($status === 'accepted') {
$query->whereHas('user', function ($q) {
$q->where('status', '1');
});
} elseif ($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');
} elseif ($edit_status === 'accepted') {
$query->where('edit_status', '2');
} elseif ($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');
} elseif ($edit_status === 'accepted') {
$query->where('edit_status', '2');
} elseif ($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) {
return $data->media->company->name;
})
->addColumn('media_name', function ($data) {
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');
} elseif ($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) {
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']);
} elseif (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']);
} elseif (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) {
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());
}
} elseif (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);
$start_date = $request->input('start_date', null);
$end_date = $request->input('end_date', null);
$user = $request->input('user', 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);
}
if ($start_date && $end_date) {
$start = \Carbon\Carbon::createFromFormat('m/d/Y', $start_date)->startOfDay();
$end = \Carbon\Carbon::createFromFormat('m/d/Y', $end_date)->endOfDay();
$query->whereBetween('created_at', [$start, $end]);
}
if ($user) {
$query->where('enhancer_id', decrypt_id($user));
}
$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) {
$q->where('role_id', 1);
});
} elseif ($role === 'company') {
$query->whereHas('user', function ($q) {
$q->where('role_id', 3);
});
} elseif ($role === 'monitoring_admin') {
$query->whereHas('user', function ($q) {
$q->where('role_id', 2);
});
} elseif ($role === 'content_admin') {
$query->whereHas('user', function ($q) {
$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);
}
public function logActivity(Request $request)
{
if ($request->ajax()) {
$year = $request->input('year', null);
$from_month = $request->input('from_month', null);
$to_month = $request->input('to_month', null);
$date = $request->input('date', null);
$query = Activity::query();
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('causer', function ($data) {
return $data?->causer?->name;
})
->addColumn('action_type', function ($data) {
switch ($data->event) {
case 'created':
return 'Membuat';
case 'updated':
return 'Mengedit';
case 'deleted':
return 'Menghapus';
default:
return 'Tidak Diketahui';
}
})
->addColumn('time', function ($data) {
return '['.idn_date($data->created_at, 'H:i').']'.' '.idn_date($data->created_at, 'd F Y').'';
})
->addColumn('action', function ($data) {
$route = route('dashboard.log.activity.show', ['id' => encrypt_id($data->id)]);
return ' Lihat';
})
->rawColumns(['time', 'action_type', 'action'])
->make(true);
}
return response()->json(['error' => 'Unauthorized'], 401);
}
}