2504 lines
125 KiB
PHP
2504 lines
125 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Dashboard;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\AiringProofTheme;
|
|
use App\Models\Announcement;
|
|
use App\Models\Classification;
|
|
use App\Models\Company;
|
|
use App\Models\ContentRecap;
|
|
use App\Models\ContentRecapClassification;
|
|
use App\Models\Cooperation;
|
|
use App\Models\CooperationProposal;
|
|
use App\Models\GovernmentAgency;
|
|
use App\Models\IssueManagement;
|
|
use App\Models\Journalist;
|
|
use App\Models\Location;
|
|
use App\Models\LoginHistory;
|
|
use App\Models\Media;
|
|
use App\Models\MediaMonitoring;
|
|
use App\Models\MediaOrder;
|
|
use App\Models\News;
|
|
use App\Models\Order;
|
|
use App\Models\Role;
|
|
use App\Models\SubClassification;
|
|
use App\Models\SubLocation;
|
|
use App\Models\User;
|
|
use Carbon\Carbon;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Log;
|
|
use SebastianBergmann\Type\TrueType;
|
|
use Yajra\DataTables\DataTables;
|
|
use Illuminate\Support\Str;
|
|
|
|
class DatatableController extends Controller
|
|
{
|
|
public function classification(Request $request){
|
|
if ($request->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) && $newData == $data->id){
|
|
return '<span class="badge bg-info" style="display:inline-block;font-size:0.8rem; margin-right:0.5rem;">Baru</span>'. $data->name;
|
|
}else{
|
|
return $data->name;
|
|
}
|
|
})
|
|
->addColumn('status', function ($data) {
|
|
if(filled($data->deleted_at)){
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Dihapus</span>';
|
|
}else if ($data->status == '0') {
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Nonaktif</span>';
|
|
}else{
|
|
return '<span class="badge bg-primary" style="display:inline-block;font-size:0.8rem;">Aktif</span>';
|
|
}
|
|
})
|
|
->addColumn('sub_classifications', function ($data) {
|
|
$subClassificationCount = $data->subClassifications->count();
|
|
|
|
if($subClassificationCount > 0){
|
|
return $subClassificationCount. ' [<a href="'.route('dashboard.sub.classifications.index', ['classification' => encrypt_id($data->id)]).'">Lihat</a>]';
|
|
}else{
|
|
return $subClassificationCount;
|
|
}
|
|
|
|
})
|
|
->addColumn('issues', function ($data) {
|
|
$issueCount = $data->issues->count();
|
|
|
|
if($issueCount > 0){
|
|
return $issueCount. ' [<a href="'.route('dashboard.issue.managements.index', ['classification' => encrypt_id($data->id)]).'">Lihat</a>]';
|
|
}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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
if (is_role([1]) && !filled($data->deleted_at)) {
|
|
$dropdown .= '<li><a href="'.$addSubClassificationUrl.'"><em class="icon ni ni-plus"></em><span>Tambah Sub Klasifikasi</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1]) && !filled($data->deleted_at)) {
|
|
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1]) && !filled($data->deleted_at)) {
|
|
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus klasifikasi '.$data->name.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
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) && $newData == $data->id){
|
|
return '<span class="badge bg-info" style="display:inline-block;font-size:0.8rem; margin-right:0.5rem;">Baru</span>'. $data->name;
|
|
}else{
|
|
return $data->name;
|
|
}
|
|
})
|
|
->addColumn('classification', function ($data) {
|
|
return '<a href="'.route('dashboard.classifications.show', ['id' => encrypt_id($data->classification->id), 'sub_classification' => true]).'" class="text-dark">'.$data->classification->name.'</a>';
|
|
})
|
|
->addColumn('status', function ($data) {
|
|
if(filled($data->deleted_at)){
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Dihapus</span>';
|
|
}else if ($data->status == '0') {
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Nonaktif</span>';
|
|
}else{
|
|
return '<span class="badge bg-primary" style="display:inline-block;font-size:0.8rem;">Aktif</span>';
|
|
}
|
|
})
|
|
->addColumn('issues', function ($data) {
|
|
$issueCount = $data->issues->count();
|
|
|
|
if($issueCount > 0){
|
|
return $issueCount. ' [<a href="'.route('dashboard.issue.managements.index', ['sub_classification' => encrypt_id($data->id)]).'">Lihat</a>]';
|
|
}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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
if (is_role([1]) && !filled($data->deleted_at)) {
|
|
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1]) && !filled($data->deleted_at)) {
|
|
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus sub klasifikasi '.$data->name.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
|
|
}
|
|
// else{
|
|
// $dropdown .= '<li><a href="javascript:void(0);" onclick="restoreItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin mengembalikan sub klasifikasi '.$data->name.'? Item ini akan dipulihkan!\')"><em class="icon ni ni-unarchive"></em><span>Pulihkan</span></a></li>';
|
|
// }
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
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();
|
|
|
|
return DataTables::of($data)
|
|
->addIndexColumn()
|
|
->addColumn('status', function ($data) {
|
|
if ($data->status == '0') {
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Nonaktif</span>';
|
|
}else{
|
|
return '<span class="badge bg-primary" style="display:inline-block;font-size:0.8rem;">Aktif</span>';
|
|
}
|
|
})
|
|
->addColumn('sub_locations', function ($data) {
|
|
$subLocationsCount = $data->subLocations->count();
|
|
|
|
if($subLocationsCount > 0){
|
|
return $subLocationsCount. ' [<a href="'.route('dashboard.sub.locations.index', ['location' => encrypt_id($data->id)]).'">Lihat</a>]';
|
|
}else{
|
|
return $subLocationsCount;
|
|
}
|
|
|
|
})
|
|
->addColumn('issues', function ($data) {
|
|
$issueCount = $data->issues->count();
|
|
|
|
if($issueCount > 0){
|
|
return $issueCount. ' [<a href="'.route('dashboard.issue.managements.index', ['location' => encrypt_id($data->id)]).'">Lihat</a>]';
|
|
}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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="'.$addSubLocationUrl.'"><em class="icon ni ni-plus"></em><span>Tambah Sub Lokus</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus lokus '.$data->name.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
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 '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Nonaktif</span>';
|
|
}else{
|
|
return '<span class="badge bg-primary" style="display:inline-block;font-size:0.8rem;">Aktif</span>';
|
|
}
|
|
})
|
|
->addColumn('issues', function ($data) {
|
|
$issueCount = $data->issues->count();
|
|
|
|
if($issueCount > 0){
|
|
return $issueCount. ' [<a href="'.route('dashboard.issue.managements.index', ['sub_location' => encrypt_id($data->id)]).'">Lihat</a>]';
|
|
}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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus sub lokus '.$data->name.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
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('short_name', function ($data) {
|
|
return filled($data->short_name) ? $data->short_name : '-';
|
|
})
|
|
->addColumn('issues', function ($data) {
|
|
$issueCount = $data->issues->count();
|
|
|
|
if($issueCount > 0){
|
|
return $issueCount. ' [<a href="'.route('dashboard.issue.managements.index', ['government_agency' => encrypt_id($data->id)]).'">Lihat</a>]';
|
|
}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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus OPD '.$data->name.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
return $dropdown;
|
|
})
|
|
|
|
->rawColumns(['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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus tema '.$data->name.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
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. ' [<a href="'.route('dashboard.content.recaps.index', ['classification' => encrypt_id($data->id)]).'">Lihat</a>]';
|
|
}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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus klasifikasi '.$data->name.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
return $dropdown;
|
|
})
|
|
|
|
->rawColumns(['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 '<a href="'.$data->link.'" target="_blank">'.$data->link.'</a>';
|
|
}else{
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak ada link</span>';
|
|
}
|
|
})
|
|
->addColumn('category', function ($data) {
|
|
if ($data->category === '0') {
|
|
return '<span class="badge bg-primary" style="display:inline-block;font-size:0.8rem;">Berita</span>';
|
|
}else{
|
|
return '<span class="badge bg-info" style="display:inline-block;font-size:0.8rem;">Pengumuman</span>';
|
|
}
|
|
})
|
|
->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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="'.$printUrl.'" target="_blank"><em class="icon ni ni-printer"></em><span>Cetak</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus berita '.$data->title.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
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 '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Sistem</span>';
|
|
}else{
|
|
return '<span class="badge bg-primary" style="display:inline-block;font-size:0.8rem;">Admin</span>';
|
|
}
|
|
})
|
|
->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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">';
|
|
|
|
if (is_role([1]) && $category !== 'system') {
|
|
$dropdown .= '<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
}else{
|
|
$dropdown .= '<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Baca</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1]) && $category !== 'system') {
|
|
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1]) && $category !== 'system') {
|
|
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus pengumuman '.$data->headline.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
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 '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Sistem</span>';
|
|
}else{
|
|
return '<span class="badge bg-primary" style="display:inline-block;font-size:0.8rem;">Admin</span>';
|
|
}
|
|
})
|
|
->addColumn('status', function ($data) {
|
|
if ($data->pivot->status == '0') {
|
|
return '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Belum Dibaca</span>';
|
|
}else{
|
|
return '<span class="badge bg-primary" style="display:inline-block;font-size:0.8rem;">Sudah Dibaca</span>';
|
|
}
|
|
})
|
|
->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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Baca</span></a></li>';
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus pengumuman '.$data->headline.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
return $dropdown;
|
|
})
|
|
|
|
->rawColumns(['headline', 'sender', 'status', 'action'])
|
|
->make(true);
|
|
}
|
|
|
|
return response()->json(['error' => 'Unauthorized'], 401);
|
|
|
|
}
|
|
|
|
public function company(Request $request){
|
|
if ($request->ajax()) {
|
|
|
|
$status = $request->input('status', null);
|
|
$edit_status = $request->input('edit_status', null);
|
|
$address = $request->input('address', null);
|
|
$register_year = $request->input('register_year', null);
|
|
$register_month = $request->input('register_month', null);
|
|
$register_date = $request->input('register_date', null);
|
|
|
|
$query = Company::with(['user']);
|
|
|
|
if($status !== 'all'){
|
|
if($status === 'waiting'){
|
|
$query->whereHas('user', function ($q){
|
|
$q->where('status', '0');
|
|
});
|
|
}else if($status === 'accepted'){
|
|
$query->whereHas('user', function ($q){
|
|
$q->where('status', '1');
|
|
});
|
|
}else if($status === 'rejected'){
|
|
$query->whereHas('user', function ($q){
|
|
$q->where('status', '2');
|
|
});
|
|
}
|
|
}
|
|
|
|
if($edit_status !== 'all'){
|
|
if($edit_status === 'no-edit'){
|
|
$query->where('edit_status', '0');
|
|
}elseif($edit_status === 'waiting'){
|
|
$query->where('edit_status', '1');
|
|
}else if($edit_status === 'accepted'){
|
|
$query->where('edit_status', '2');
|
|
}else if($edit_status === 'rejected'){
|
|
$query->where('edit_status', '3');
|
|
}
|
|
}
|
|
|
|
if ($address) {
|
|
$query->where('address', 'LIKE', '%'.$address.'%');
|
|
}
|
|
|
|
if ($register_year) {
|
|
$query->whereYear('created_at', $register_year);
|
|
}
|
|
|
|
if ($register_month) {
|
|
$monthYear = Carbon::parse($register_month);
|
|
$query->whereYear('created_at', $monthYear->year)
|
|
->whereMonth('created_at', $monthYear->month);
|
|
}
|
|
|
|
if ($register_date) {
|
|
$query->whereDate('created_at', $register_date);
|
|
}
|
|
|
|
$data = $query->get();
|
|
|
|
return DataTables::of($data)
|
|
->addIndexColumn()
|
|
->addColumn('status', function ($data) {
|
|
switch($data->user->status){
|
|
case 0:
|
|
return '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Menunggu</span>';
|
|
case 1:
|
|
return '<span class="badge bg-success" style="display:inline-block;font-size:0.8rem;">Diterima</span>';
|
|
case 2:
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;"><a href="javasciprt: void(0);" onclick="showDetail('.htmlspecialchars(json_encode(strip_tags($data->rejection_reason))).')" class="text-light text-decoration-underline">Ditolak</a></span>';
|
|
default:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Diketahui</span>';
|
|
}
|
|
})
|
|
->addColumn('address', function ($data) {
|
|
return '<div style="width: 15rem;word-wrap: break-word; white-space: normal;">' . $data->address . '</div>';
|
|
})
|
|
->addColumn('status_edit', function ($data) {
|
|
switch($data->edit_status){
|
|
case 0:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Ada</span>';
|
|
case 1:
|
|
return '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;"><a href="javasciprt: void(0);" onclick="showEditDescription('.htmlspecialchars(json_encode(strip_tags($data->edit_description))).')" class="text-light text-decoration-underline">Menunggu</a></span>';
|
|
case 2:
|
|
return '<span class="badge bg-success" style="display:inline-block;font-size:0.8rem;">Diterima</span>';
|
|
case 3:
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;"><a href="javasciprt: void(0);" onclick="showDetail('.htmlspecialchars(json_encode(strip_tags($data->edit_rejection_reason))).')" class="text-light text-decoration-underline">Ditolak</a></span>';
|
|
default:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Diketahui</span>';
|
|
}
|
|
})
|
|
->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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="'.$printUrl.'" target="_blank"><em class="icon ni ni-printer"></em><span>Cetak</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1]) && $data->user->status === '0') {
|
|
$dropdown .= '<li><a href="'.$processAccountCompanyUrl.'"><em class="icon ni ni-loader"></em><span>Proses Perusahaan</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1]) && $data->edit_status === '1' && $data->user->status === '1') {
|
|
$dropdown .= '<li><a href="'.$processEditRequestCompanyUrl.'"><em class="icon ni ni-loader"></em><span>Proses Permohonan Edit</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus tema '.$data->name.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
return $dropdown;
|
|
})
|
|
|
|
->rawColumns(['status', 'status_edit', 'address', 'action'])
|
|
->make(true);
|
|
}
|
|
|
|
return response()->json(['error' => 'Unauthorized'], 401);
|
|
|
|
}
|
|
|
|
public function media(Request $request){
|
|
if ($request->ajax()) {
|
|
|
|
$type = $request->input('type', null);
|
|
$classification = $request->input('classification', null);
|
|
$status = $request->input('status', null);
|
|
$edit_status = $request->input('edit_status', null);
|
|
$address = $request->input('address', null);
|
|
$register_year = $request->input('register_year', null);
|
|
$register_month = $request->input('register_month', null);
|
|
$register_date = $request->input('register_date', null);
|
|
|
|
$query = Media::with(['company.user']);
|
|
|
|
if($type !== 'all'){
|
|
if($type === 'online'){
|
|
$query->where('type', 'online');
|
|
}elseif($type === 'print'){
|
|
$query->where('type', 'cetak');
|
|
}else if($type === 'radio'){
|
|
$query->where('type', 'radio');
|
|
}else if($type === 'television'){
|
|
$query->where('type', 'televisi');
|
|
}
|
|
}
|
|
|
|
if($classification !== 'all'){
|
|
if($classification === 'local'){
|
|
$query->where('classification', 'lokal');
|
|
}elseif($classification === 'regional'){
|
|
$query->where('classification', 'regional');
|
|
}else if($classification === 'national'){
|
|
$query->where('classification', 'nasional');
|
|
}
|
|
}
|
|
|
|
if($status !== 'all'){
|
|
if($status === 'waiting'){
|
|
$query->whereHas('user', function ($q){
|
|
$q->where('status', '0');
|
|
});
|
|
}else if($status === 'accepted'){
|
|
$query->whereHas('user', function ($q){
|
|
$q->where('status', '1');
|
|
});
|
|
}else if($status === 'rejected'){
|
|
$query->whereHas('user', function ($q){
|
|
$q->where('status', '2');
|
|
});
|
|
}
|
|
}
|
|
|
|
if($edit_status !== 'all'){
|
|
if($edit_status === 'no-edit'){
|
|
$query->where('edit_status', '0');
|
|
}elseif($edit_status === 'waiting'){
|
|
$query->where('edit_status', '1');
|
|
}else if($edit_status === 'accepted'){
|
|
$query->where('edit_status', '2');
|
|
}else if($edit_status === 'rejected'){
|
|
$query->where('edit_status', '3');
|
|
}
|
|
}
|
|
|
|
if ($address) {
|
|
$query->where('address', 'LIKE', '%'.$address.'%');
|
|
}
|
|
|
|
if ($register_year) {
|
|
$query->whereYear('created_at', $register_year);
|
|
}
|
|
|
|
if ($register_month) {
|
|
$monthYear = Carbon::parse($register_month);
|
|
$query->whereYear('created_at', $monthYear->year)
|
|
->whereMonth('created_at', $monthYear->month);
|
|
}
|
|
|
|
if ($register_date) {
|
|
$query->whereDate('created_at', $register_date);
|
|
}
|
|
|
|
$data = $query->get();
|
|
|
|
|
|
|
|
// $data = ->get();
|
|
|
|
return DataTables::of($data)
|
|
->addIndexColumn()
|
|
->addColumn('media_name', function ($data) {
|
|
return $data->name;
|
|
})
|
|
->addColumn('company_name', function ($data) {
|
|
return $data->company->name;
|
|
})
|
|
->addColumn('type', function ($data) {
|
|
return ucfirst($data->type);
|
|
})
|
|
->addColumn('classification', function ($data) {
|
|
return ucfirst($data->classification);
|
|
})
|
|
->addColumn('link', function ($data) {
|
|
if($data->link){
|
|
return '<a href='.$data->link.'>'.$data->link.'</a>';
|
|
}else{
|
|
return '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Tidak memiliki link</span>';
|
|
}
|
|
})
|
|
->addColumn('address', function ($data) {
|
|
return '<div style="width: 15rem;word-wrap: break-word; white-space: normal;">' . $data->address . '</div>';
|
|
})
|
|
->addColumn('status', function ($data) {
|
|
switch($data->company->user->status){
|
|
case 0:
|
|
return '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Menunggu</span>';
|
|
case 1:
|
|
return '<span class="badge bg-success" style="display:inline-block;font-size:0.8rem;">Diterima</span>';
|
|
case 2:
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;"><a href="javasciprt: void(0);" onclick="showDetail('.htmlspecialchars(json_encode(strip_tags($data->company->rejection_reason))).')" class="text-light text-decoration-underline">Ditolak</a></span>';
|
|
default:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Diketahui</span>';
|
|
}
|
|
})
|
|
->addColumn('status_edit', function ($data) {
|
|
switch($data->edit_status){
|
|
case 0:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Ada</span>';
|
|
case 1:
|
|
return '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;"><a href="javasciprt: void(0);" onclick="showEditDescription('.htmlspecialchars(json_encode(strip_tags($data->edit_description))).')" class="text-light text-decoration-underline">Menunggu</a></span>';
|
|
case 2:
|
|
return '<span class="badge bg-success" style="display:inline-block;font-size:0.8rem;">Diterima</span>';
|
|
case 3:
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;"><a href="javasciprt: void(0);" onclick="showDetail('.htmlspecialchars(json_encode(strip_tags($data->edit_rejection_reason))).')" class="text-light text-decoration-underline">Ditolak</a></span>';
|
|
default:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Diketahui</span>';
|
|
}
|
|
})
|
|
->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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="'.$printUrl.'" target="_blank"><em class="icon ni ni-printer"></em><span>Cetak</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1]) && $data->edit_status === '1' && $data->user->status === '1') {
|
|
$dropdown .= '<li><a href="'.$processEditRequestCompanyUrl.'"><em class="icon ni ni-loader"></em><span>Proses peremohonan Edit</span></a></li>';
|
|
}
|
|
|
|
// if (is_role([1])) {
|
|
// $dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
|
// }
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus tema '.$data->name.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
return $dropdown;
|
|
})
|
|
|
|
->rawColumns(['link', 'address', 'status', 'status_edit', 'action'])
|
|
->make(true);
|
|
}
|
|
|
|
return response()->json(['error' => 'Unauthorized'], 401);
|
|
|
|
}
|
|
|
|
public function journalist(Request $request){
|
|
if ($request->ajax()) {
|
|
|
|
$media_ids = $request->input('media_ids', null);
|
|
$media_ids_array = json_decode(rtrim($media_ids, ';'), true);
|
|
$status = $request->input('status', null);
|
|
$edit_status = $request->input('edit_status', null);
|
|
$address = $request->input('address', null);
|
|
$register_year = $request->input('register_year', null);
|
|
$register_month = $request->input('register_month', null);
|
|
$register_date = $request->input('register_date', null);
|
|
|
|
$query = Journalist::with(['media' => function($q) {
|
|
$q->withTrashed();
|
|
}, 'media.company' => function($q) {
|
|
$q->withTrashed();
|
|
}, 'media.company.user' => function($q) {
|
|
$q->withTrashed();
|
|
}])
|
|
->where('approved_status', '1')
|
|
->whereNull('deleted_at');
|
|
|
|
if (is_array($media_ids_array) && !in_array('all', $media_ids_array)) {
|
|
$query->whereIn('media_id', array_map('decrypt_id', $media_ids_array));
|
|
}
|
|
|
|
if ($status !== 'all') {
|
|
if ($status === 'waiting') {
|
|
$query->whereHas('media.company.user', function ($q) {
|
|
$q->where('status', '0'); // Status waiting di User
|
|
});
|
|
} elseif ($status === 'accepted') {
|
|
$query->whereHas('media.company.user', function ($q) {
|
|
$q->where('status', '1'); // Status accepted di User
|
|
});
|
|
} elseif ($status === 'rejected') {
|
|
$query->whereHas('media.company.user', function ($q) {
|
|
$q->where('status', '2'); // Status rejected di User
|
|
});
|
|
}
|
|
}
|
|
|
|
if($edit_status !== 'all'){
|
|
if($edit_status === 'no-edit'){
|
|
$query->where('edit_status', '0');
|
|
}elseif($edit_status === 'waiting'){
|
|
$query->where('edit_status', '1');
|
|
}else if($edit_status === 'accepted'){
|
|
$query->where('edit_status', '2');
|
|
}else if($edit_status === 'rejected'){
|
|
$query->where('edit_status', '3');
|
|
}
|
|
}
|
|
|
|
if ($address) {
|
|
$query->where('address', 'LIKE', '%'.$address.'%');
|
|
}
|
|
|
|
if ($register_year) {
|
|
$query->whereYear('created_at', $register_year);
|
|
}
|
|
|
|
if ($register_month) {
|
|
$monthYear = Carbon::parse($register_month);
|
|
$query->whereYear('created_at', $monthYear->year)
|
|
->whereMonth('created_at', $monthYear->month);
|
|
}
|
|
|
|
if ($register_date) {
|
|
$query->whereDate('created_at', $register_date);
|
|
}
|
|
|
|
$data = $query->get();
|
|
|
|
|
|
return DataTables::of($data)
|
|
->addIndexColumn()
|
|
->addColumn('journalist_name', function ($data) {
|
|
return $data->name;
|
|
})
|
|
->addColumn('company_name', function ($data) use ($media_ids_array) {
|
|
return $data->media->company->name;
|
|
})
|
|
->addColumn('media_name', function ($data) use ($media_ids_array) {
|
|
return $data->media->name;
|
|
})
|
|
->addColumn('status', function ($data) {
|
|
switch($data->media->company->user->status){
|
|
case 0:
|
|
return '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Menunggu</span>';
|
|
case 1:
|
|
return '<span class="badge bg-success" style="display:inline-block;font-size:0.8rem;">Diterima</span>';
|
|
case 2:
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;"><a href="javasciprt: void(0);" onclick="showDetail('.htmlspecialchars(json_encode(strip_tags($data->media->company->rejection_reason))).')" class="text-light text-decoration-underline">Ditolak</a></span>';
|
|
case 3:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Diketahui</span>';
|
|
default:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Diketahui</span>';
|
|
}
|
|
})
|
|
->addColumn('status_edit', function ($data) {
|
|
switch($data->edit_status){
|
|
case 0:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Ada</span>';
|
|
case 1:
|
|
return '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;"><a href="javasciprt: void(0);" onclick="showEditDescription('.htmlspecialchars(json_encode(strip_tags($data->edit_description))).')" class="text-light text-decoration-underline">Menunggu</a></span>';
|
|
case 2:
|
|
return '<span class="badge bg-success" style="display:inline-block;font-size:0.8rem;">Diterima</span>';
|
|
case 3:
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;"><a href="javasciprt: void(0);" onclick="showDetail('.htmlspecialchars(json_encode(strip_tags($data->edit_rejection_reason))).')" class="text-light text-decoration-underline">Ditolak</a></span>';
|
|
default:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Diketahui</span>';
|
|
}
|
|
})
|
|
->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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="'.$printUrl.'" target="_blank"><em class="icon ni ni-printer"></em><span>Cetak</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1]) && $data->edit_status === '1' && $data->media->company->user->status === '1') {
|
|
$dropdown .= '<li><a href="'.$processEditRequestCompanyUrl.'"><em class="icon ni ni-loader"></em><span>Proses peremohonan Edit</span></a></li>';
|
|
}
|
|
|
|
if (is_role([3])) {
|
|
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
|
}
|
|
|
|
if (is_role([3])) {
|
|
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus tema '.$data->name.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
return $dropdown;
|
|
})
|
|
|
|
->rawColumns(['status', 'status_edit', 'action'])
|
|
->make(true);
|
|
}
|
|
|
|
return response()->json(['error' => 'Unauthorized'], 401);
|
|
|
|
}
|
|
|
|
public function journalistSubmission(Request $request, $role){
|
|
if ($request->ajax()) {
|
|
|
|
$data = Journalist::with(['media' => function($query) {
|
|
$query->withTrashed();
|
|
}, 'media.company' => function($query) {
|
|
$query->withTrashed();
|
|
}, 'media.company.user' => function($query) {
|
|
$query->withTrashed();
|
|
}]);
|
|
|
|
if ($role === '1') {
|
|
$data->where('approved_status', '0')
|
|
->whereNull('deleted_at')
|
|
->orWhere('approved_status', '2');
|
|
} else if($role === '3'){
|
|
$data->where('approved_status', '0')
|
|
->orWhere('approved_status', '2')
|
|
->whereNull('deleted_at')
|
|
->where('media_id', Auth::user()->company->media->id);
|
|
}
|
|
|
|
$data = $data->get();
|
|
|
|
|
|
return DataTables::of($data)
|
|
->addIndexColumn()
|
|
->addColumn('journalist_name', function ($data) {
|
|
return $data->name;
|
|
})
|
|
->addColumn('company_name', function ($data) {
|
|
return $data->media->company->name;
|
|
})
|
|
->addColumn('status', function ($data) {
|
|
switch($data->media->company->user->status){
|
|
case 0:
|
|
return '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Menunggu</span>';
|
|
case 1:
|
|
return '<span class="badge bg-success" style="display:inline-block;font-size:0.8rem;">Diterima</span>';
|
|
case 2:
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Ditolak</span>';
|
|
case 3:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Diketahui</span>';
|
|
default:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Diketahui</span>';
|
|
}
|
|
})
|
|
->addColumn('approved_status', function ($data) {
|
|
switch($data->approved_status){
|
|
case 0:
|
|
return '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Menunggu</span>';
|
|
case 1:
|
|
return '<span class="badge bg-success" style="display:inline-block;font-size:0.8rem;">Diterima</span>';
|
|
case 2:
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Ditolak</span>';
|
|
case 3:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Diketahui</span>';
|
|
default:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Diketahui</span>';
|
|
}
|
|
})
|
|
->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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
if (is_role(['1'])) {
|
|
$dropdown .= '<li><a href="'.$processUrl.'"><em class="icon ni ni-loader"></em><span>Proses</span></a></li>';
|
|
}
|
|
|
|
if (is_role(['3']) && in_array($data->approved_status, ['0'])) {
|
|
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
|
}
|
|
|
|
if (is_role(['3']) && in_array($data->approved_status, ['0'])) {
|
|
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus jurnalis '.$data->name.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
return $dropdown;
|
|
})
|
|
|
|
->rawColumns(['approved_status', '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 '<div style="width: 100%;word-wrap: break-word; white-space: normal;">' . $data->name . '</div>';
|
|
})
|
|
// ->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 '<span class="badge bg-info" style="display:inline-block;font-size:0.8rem;">Media Order</span> <br> <span class="badge bg-primary" style="display:inline-block;font-size:0.8rem;">Sudah Media Order</span>';
|
|
}else{
|
|
return '<span class="badge bg-info" style="display:inline-block;font-size:0.8rem;">Pengajuan Kerjasama</span> <br> <span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Belum Media Order</span>';
|
|
}
|
|
})
|
|
->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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
if (is_role([1, 3])) {
|
|
if(is_role(['3'])){
|
|
$dropdown .= '<li><a href="'.$processUrl.'"><em class="icon ni ni-loader"></em><span>Proses</span></a></li>';
|
|
}
|
|
|
|
if(is_role(['1'])){
|
|
$dropdown .= '<li><a href="'.$processUrl.'"><em class="icon ni ni-loader"></em><span>Proses</span></a></li>';
|
|
}
|
|
}
|
|
|
|
if (is_role([1]) && !$isHaveMediaOrder) {
|
|
$dropdown .= '<li><a href="'.$createMediaOrderUrl.'"><em class="icon ni ni-plus"></em><span>Buat Media Order</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="'.$proposalsUrl.'"><em class="icon ni ni-file-docs"></em><span>Data Pengajuan</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus kerjasama '.$data->name.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
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 '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Menunggu</span>';
|
|
case 1:
|
|
$status = '<span class="badge bg-success" style="display:inline-block;font-size:0.8rem;">Menerima</span> <br>';
|
|
|
|
$isCooperationProposalExists = CooperationProposal::where('cooperation_id', '=', $cooperation->id)
|
|
->where('media_id', '=', $data->id)->exists();
|
|
|
|
if(!$isCooperationProposalExists){
|
|
$status .= '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Belum Pengajuan</span>';
|
|
}else{
|
|
$status .= '<span class="badge bg-primary" style="display:inline-block;font-size:0.8rem;">Sudah Pengajuan</span>';
|
|
}
|
|
|
|
return $status;
|
|
case 2:
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Menolak</span> <span class="badge bg-transparent"><a href="javascript:void(0);"
|
|
class="text-dark"
|
|
onclick="showDetail('.htmlspecialchars(json_encode(strip_tags($data->pivot->rejection_reason))).')"
|
|
style="margin-top:0.2rem;">
|
|
<em class="icon ni ni-eye"></em>
|
|
</a></span>';
|
|
case 3:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Diketahui</span>';
|
|
}
|
|
})
|
|
|
|
->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 '<div style="width: 100%;word-wrap: break-word; white-space: normal;">' . $data->media->name . '</div>';
|
|
})
|
|
->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 '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Menunggu</span>';
|
|
case '1':
|
|
return '<span class="badge bg-success" style="display:inline-block;font-size:0.8rem;">Diterima</span>';
|
|
case '2':
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Ditolak</span>';
|
|
default:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Diketahui</span>';
|
|
}
|
|
})
|
|
->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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
if (is_role(['1']) && $data->status === '0') {
|
|
$dropdown .= '<li><a href="javascript: void(0);" onclick="itemConfirm(\''.$acceptUrl.'\', \'Apakah Anda yakin ingin menerima pengajuan kerjasama dari '.$data->media->name.'?\', \'Ya, terima!\')"><em class="icon ni ni-check"></em><span>Terima</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1]) && $data->status === '0') {
|
|
$dropdown .= '<li><a href="'.$rejectUrl.'"><em class="icon ni ni-cross"></em><span>Tolak</span></a></li>';
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
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 '<div style="width: 100%;word-wrap: break-word; white-space: normal;">' . $data->name . '</div>';
|
|
})
|
|
->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 '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Menunggu</span>';
|
|
case 1:
|
|
$status = '<span class="badge bg-success" style="display:inline-block;font-size:0.8rem;">Menerima</span> <br>';
|
|
|
|
if(!$isCooperationProposalExists){
|
|
$status .= '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Belum Mengajukan</span>';
|
|
}else{
|
|
$status .= '<span class="badge bg-primary" style="display:inline-block;font-size:0.8rem;">Sudah Mengajukan</span>';
|
|
}
|
|
|
|
return $status;
|
|
case '2':
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Ditolak</span>';
|
|
default:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Diketahui</span>';
|
|
|
|
}
|
|
})
|
|
->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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
$isCooperationProposalExists = CooperationProposal::where('cooperation_id', '=', $data->id)
|
|
->where('media_id', '=', Auth::user()->company->media->id)->exists();
|
|
|
|
if (is_role(['3']) && $data->pivot->status === '1' && !$isCooperationProposalExists) {
|
|
$dropdown .= '<li><a href="'.$cooperationProposalUrl.'"><em class="icon ni ni-upload"></em><span>Ajukan Kerjasama</span></a></li>';
|
|
}
|
|
|
|
if (is_role(['3']) && $data->pivot->status === '0') {
|
|
$dropdown .= '<li><a href="javascript: void(0);" onclick="itemConfirm(\''.$acceptUrl.'\', \'Apakah Anda yakin ingin menerima kerjasama ini?\', \'Ya, terima!\')"><em class="icon ni ni-check"></em><span>Terima</span></a></li>';
|
|
}
|
|
|
|
if (is_role(['3']) && $data->pivot->status === '0') {
|
|
$dropdown .= '<li><a href="'.$rejectUrl.'"><em class="icon ni ni-cross"></em><span>Tolak</span></a></li>';
|
|
}
|
|
|
|
// if (is_role([1])) {
|
|
// $dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus tema '.$data->name.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
|
|
// }
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
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 '<div style="width: 100%;word-wrap: break-word; white-space: normal;">' . $data->cooperation->name . '</div>';
|
|
})
|
|
->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 '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Menunggu</span>';
|
|
case 1:
|
|
return '<span class="badge bg-success" style="display:inline-block;font-size:0.8rem;">Diterima</span> <br>';
|
|
case '2':
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Ditolak</span>';
|
|
default:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Diketahui</span>';
|
|
|
|
}
|
|
})
|
|
->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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
if (is_role(['3']) && $data->status === '0') {
|
|
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
|
}
|
|
|
|
if (is_role(['3']) && $data->status === '0') {
|
|
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus ajuan kerjasama '.$data->cooperation->name.' ? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
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 '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Menunggu</span>';
|
|
case 1:
|
|
return '<span class="badge bg-success" style="display:inline-block;font-size:0.8rem;">Menerima</span>';
|
|
case 2:
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Menolak</span> <span class="badge bg-transparent"><a href="javascript:void(0);"
|
|
class="text-dark"
|
|
onclick="showDetail('.htmlspecialchars(json_encode(strip_tags($data->pivot->rejection_reason))).')"
|
|
style="margin-top:0.2rem;">
|
|
<em class="icon ni ni-eye"></em>
|
|
</a></span>';
|
|
case 3:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Diketahui</span>';
|
|
}
|
|
})
|
|
|
|
->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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Lihat</span></a></li>';
|
|
|
|
// if (is_role(['3']) && $data->status === '0') {
|
|
// $dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
|
// }
|
|
|
|
// if (is_role(['3']) && $data->status === '0') {
|
|
// $dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus laporan '.$data->title.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
|
|
// }
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
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 '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Menunggu</span>';
|
|
case 1:
|
|
return '<span class="badge bg-success" style="display:inline-block;font-size:0.8rem;">Diterima</span> <br>';
|
|
case '2':
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Ditolak</span> <span class="badge bg-transparent"><a href="javascript:void(0);"
|
|
class="text-dark"
|
|
onclick="showDetail('.htmlspecialchars(json_encode(strip_tags($data->rejection_reason))).')"
|
|
style="margin-top:0.2rem;">
|
|
<em class="icon ni ni-eye"></em>
|
|
</a></span>';
|
|
default:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Diketahui</span>';
|
|
}
|
|
})
|
|
->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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
if (is_role(['3']) && $data->status === '0') {
|
|
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
|
}
|
|
|
|
if (is_role(['3']) && $data->status === '0') {
|
|
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus laporan '.$data->title.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
}
|
|
|
|
if (is_role(['1']) && $data->status === '0') {
|
|
$dropdown .= '<li><a href="javascript: void(0);" onclick="itemConfirm(\''.$acceptUrl.'\', \'Apakah Anda yakin ingin menerima laporan bukti tayang ini?\', \'Ya, terima!\')"><em class="icon ni ni-check"></em><span>Terima</span></a></li>';
|
|
}
|
|
|
|
if (is_role(['1']) && $data->status === '0') {
|
|
$dropdown .= '<li><a href="'.$rejectUrl.'"><em class="icon ni ni-cross"></em><span>Tolak</span></a></li>';
|
|
}
|
|
|
|
if (is_role(['3']) && $data->status === '2') {
|
|
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit-alt"></em><span>Perbaiki</span></a></li>';
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
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 '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Menunggu</span>';
|
|
case 1:
|
|
return '<span class="badge bg-success" style="display:inline-block;font-size:0.8rem;">Diterima</span> <br>';
|
|
case '2':
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Ditolak</span> <span class="badge bg-transparent"><a href="javascript:void(0);"
|
|
class="text-dark"
|
|
onclick="showDetail('.htmlspecialchars(json_encode(strip_tags($data->rejection_reason))).')"
|
|
style="margin-top:0.2rem;">
|
|
<em class="icon ni ni-eye"></em>
|
|
</a></span>';
|
|
default:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Diketahui</span>';
|
|
}
|
|
})
|
|
->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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
if (is_role(['1']) && $data->status === '0') {
|
|
$dropdown .= '<li><a href="javascript: void(0);" onclick="itemConfirm(\''.$acceptUrl.'\', \'Apakah Anda yakin ingin menerima penyelesaian kerjasama ini?\', \'Ya, terima!\')"><em class="icon ni ni-check"></em><span>Terima</span></a></li>';
|
|
}
|
|
|
|
if (is_role(['1']) && $data->status === '0') {
|
|
$dropdown .= '<li><a href="'.$rejectUrl.'"><em class="icon ni ni-cross"></em><span>Tolak</span></a></li>';
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
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('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 '<a href="'.$data->link.'" target="_blank">'.$data->link.'</a>';
|
|
})
|
|
->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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus rekap konten '.$data->title.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
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 '<a href="'.$data->link.'" target="_blank">'.$data->link.'</a>';
|
|
}else{
|
|
return '-';
|
|
}
|
|
})
|
|
->addColumn('issue_status', function ($data) {
|
|
if ($data->issue) {
|
|
return '<span class="badge bg-primary" style="display:inline-block;font-size:0.8rem;">Sudah Ditambahkan</span>';
|
|
}else{
|
|
return '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Belum Ditambahkan</span>';
|
|
}
|
|
})
|
|
->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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
if (is_role(['1','2']) && !$data->issue) {
|
|
$dropdown .= '<li><a href="'.$addIssueUrl.'"><em class="icon ni ni-plus"></em><span>Tambah Manajemen Isu</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus monitoring media '.$data->code.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
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 '<div style="width: 100%;word-wrap: break-word; white-space: normal;">' . $data->mediaMonitoring->title . '</div>';
|
|
})
|
|
->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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus manajemen isu '.$data->mediaMonitoring->code.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
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()) {
|
|
|
|
$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 '<span class="badge bg-warning" style="display:inline-block;font-size:0.8rem;">Menunggu</span>';
|
|
case '1':
|
|
return '<span class="badge bg-primary" style="display:inline-block;font-size:0.8rem;">Aktif</span>';
|
|
case '2':
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Nonaktif</span>';
|
|
case '3':
|
|
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Ditolak</span>';
|
|
default:
|
|
return '<span class="badge bg-secondary" style="display:inline-block;font-size:0.8rem;">Tidak Diketahui</span>';
|
|
|
|
}
|
|
})
|
|
->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 = '<div class="dropdown" style="display:flex; justify-content:center;">
|
|
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
|
<div class="dropdown-menu dropdown-menu-datatable-custom dropdown-menu-end">
|
|
<ul class="link-list-opt">
|
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
|
|
|
// if (is_role([1]) && $data->status === '0') {
|
|
// $dropdown .= '<li><a href="javascript:void(0);" onclick="statusAction(\''.$acceptUrl.'\', \'Apakah Anda yakin ingin menyetujui pengguna '.$data->name.'?\', \'Ya, Setujui\')"><em class="icon ni ni-check"></em><span>Setujui</span></a></li>';
|
|
// }
|
|
|
|
// if (is_role([1]) && $data->status === '0') {
|
|
// $dropdown .= '<li><a href="javascript:void(0);" onclick="statusAction(\''.$rejectUrl.'\', \'Apakah Anda yakin ingin menolak pengguna '.$data->name.'?\', \'Ya, Tolak\')"><em class="icon ni ni-cross"></em><span>Tolak</span></a></li>';
|
|
// }
|
|
|
|
if (is_role([1]) && $data->status === '0') {
|
|
$dropdown .= '<li><a href="'.$acceptUrl.'"><em class="icon ni ni-check"></em><span>Setujui</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1]) && $data->status === '0') {
|
|
$dropdown .= '<li><a href="'.$rejectUrl.'"><em class="icon ni ni-cross"></em><span>Tolak</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="'.$resetPasswordUrl.'"><em class="icon ni ni-lock"></em><span>Reset Password</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
|
}
|
|
|
|
if (is_role([1])) {
|
|
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus pengguna '.$data->name.'? Akun pengguna dan data yang berhubungan dengannya juga akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
|
|
|
}
|
|
|
|
$dropdown .= '</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
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. ' [<a href="'.route('dashboard.users.index', ['role' => encrypt_id($data->id)]).'">Lihat</a>]';
|
|
}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 '<span class="text-info">'.idn_date($data->logged_in_at, 'H:i').'</span>'. '<span class="text-primary"> <span class="text-dark"> - </span> '.idn_date($data->logged_in_at, 'd F Y').'</span>';
|
|
})
|
|
->rawColumns(['logged_in_at'])
|
|
->make(true);
|
|
}
|
|
|
|
return response()->json(['error' => 'Unauthorized'], 401);
|
|
|
|
}
|
|
}
|