feat: media cooperation

feat: cooperation request
This commit is contained in:
myuqinurrohman 2025-03-07 21:49:52 +07:00
parent ecd2b64e38
commit d0c9a29970
30 changed files with 3262 additions and 25 deletions

View File

@ -1,5 +1,7 @@
<?php
use App\Models\Media;
use App\Models\User;
use App\Settings\AppSettings;
use Carbon\Carbon;
use Hashids\Hashids;
@ -128,3 +130,21 @@ function get_user_status($status)
}
}
}
if (! function_exists('get_cooperation_notif')) {
function get_cooperation_notif() {
$user = User::findOrFail(Auth::id());
if($user->role_id === 3){
$mediaId = $user->company->media->id;
$media = Media::with('cooperations')->findOrFail($mediaId);
return $media->cooperations()
->where('start_date', '<=', Carbon::now()->locale('id')->toDateString())
->where('end_date', '>=', Carbon::now()->locale('id')->toDateString())
->count();
}else{
return 0;
}
}
}

View File

@ -0,0 +1,131 @@
<?php
namespace App\Http\Controllers\Dashboard;
use App\Http\Controllers\Controller;
use App\Models\Cooperation;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class CooperationRequestController extends Controller
{
public function index(){
return view('dashboard.cooperation-requests.index', [
'title' => 'Ajuan Kerjasama'
]);
}
public function show($id){
$cooperation = Cooperation::with(['media'])->findOrFail(decrypt_id($id));
$mediaCooperationPivot = $cooperation->media()
->where('media.id', Auth::user()->company->media->id)
->first()->pivot;
return view('dashboard.cooperation-requests.show', [
'title' => 'Tolak Kerjasama',
'cooperation' => $cooperation,
'mediaCooperationPivot' => $mediaCooperationPivot
]);
}
public function accept(Request $request, $id){
if(!Auth::check() || Auth::user()->role_id !== 3){
return abort(403, 'Unauthorized action.');
}
$cooperation = Cooperation::with('media')->findOrFail(decrypt_id($id));
$mediaCooperation = $cooperation->media()
->where('media.id', Auth::user()->company->media->id)
->first();
if (!$mediaCooperation) {
return abort(404, 'Media not found for the cooperation.');
}
// dd($mediaCooperation->pivot);
// Pastikan data yang ingin diperbarui ada dan statusnya belum '3'
if ($mediaCooperation->pivot->status != '3') {
$affectedRows = $cooperation->media()->updateExistingPivot($mediaCooperation->id, [
'status' => '1',
]);
if ($affectedRows > 0) {
return redirect()->back()->with('success-status', 'Berhasil menerima kerjasama.');
} else {
return redirect()->back()->with('failed-status', 'Gagal menerima kerjasama');
}
} else {
return redirect()->back()->with('failed-status', 'Kerjasama sudah diterima sebelumnya.');
}
}
public function proposal($id){
return view('dashboard.cooperation-requests.proposal', [
'title' => 'Ajukan Kerjasama',
'user' => Auth::user()
]);
}
public function reject($id){
$cooperation = Cooperation::with(['media'])->findOrFail(decrypt_id($id));
$mediaCooperationPivot = $cooperation->media()
->where('media.id', Auth::user()->company->media->id)
->first()->pivot;
return view('dashboard.cooperation-requests.reject', [
'title' => 'Tolak Kerjasama',
'cooperation' => $cooperation,
'mediaCooperationPivot' => $mediaCooperationPivot
]);
}
public function rejectAction(Request $request, $id){
if(!Auth::check() || Auth::user()->role_id !== 3){
return abort(403, 'Unauthorized action.');
}
$validatedData = $request->validate([
'rejection_reason' => ['required'],
], [
'rejection_reason.required' => 'Alasan penolakan wajib diisi.',
]);
$cooperation = Cooperation::with('media')->findOrFail(decrypt_id($id));
$mediaCooperation = $cooperation->media()
->where('media.id', Auth::user()->company->media->id)
->first();
if (!$mediaCooperation) {
return abort(404, 'Media not found for the cooperation.');
}
// dd($mediaCooperation->pivot);
// Pastikan data yang ingin diperbarui ada dan statusnya belum '3'
if ($mediaCooperation->pivot->status != '3') {
$affectedRows = $cooperation->media()->updateExistingPivot($mediaCooperation->id, [
'status' => '2',
'rejection_reason' => $validatedData['rejection_reason'],
]);
if ($affectedRows > 0) {
return redirect()->back()->with('success-status', 'Berhasil menolak kerjasama.');
} else {
return redirect()->back()->with('failed-status', 'Gagal menolak kerjasama');
}
} else {
return redirect()->back()->with('failed-status', 'Kerjasama sudah ditolak sebelumnya.');
}
}
}

View File

@ -7,6 +7,7 @@
use App\Models\Classification;
use App\Models\Company;
use App\Models\ContentRecap;
use App\Models\Cooperation;
use App\Models\GovernmentAgency;
use App\Models\IssueManagement;
use App\Models\Journalist;
@ -18,7 +19,9 @@
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\Log;
use SebastianBergmann\Type\TrueType;
use Yajra\DataTables\DataTables;
@ -61,7 +64,7 @@ public function classification(Request $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-end">
<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>';
@ -136,7 +139,7 @@ public function subClassification(Request $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-end">
<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>';
@ -199,7 +202,7 @@ public function location(Request $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-end">
<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>';
@ -264,7 +267,7 @@ public function subLocation(Request $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-end">
<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>';
@ -307,7 +310,7 @@ public function governmentAgency(Request $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-end">
<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>';
@ -367,7 +370,7 @@ public function news(Request $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-end">
<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>';
@ -413,7 +416,7 @@ public function airingProofTheme(Request $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-end">
<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>';
@ -492,7 +495,7 @@ public function company(Request $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-end">
<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>';
@ -584,7 +587,7 @@ public function media(Request $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-end">
<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>';
@ -669,7 +672,7 @@ public function journalist(Request $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-end">
<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>';
@ -697,6 +700,251 @@ public function journalist(Request $request){
}
public function cooperation(Request $request){
if ($request->ajax()) {
$data = Cooperation::with(['media'])->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('posted_at', function ($data) {
return idn_date($data->created_at, 'l, d F Y');
})
->addColumn('action', function ($data) {
$showUrl = route('dashboard.cooperations.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)]);
$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(['name', 'action'])
->make(true);
}
return response()->json(['error' => 'Unauthorized'], 401);
}
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) {
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(true){
$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>';
}
})
->addColumn('action', function ($data) {
$showUrl = route('dashboard.media.show', ['id' => encrypt_id($data->id)]);
$editUrl = route('dashboard.media.edit', ['id' => encrypt_id($data->id)]);
$deleteUrl = route('dashboard.media.destroy', ['id' => encrypt_id($data->id)]);
$dropdown = '<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(['link', 'address', 'status', 'status_edit', 'action'])
->make(true);
}
return response()->json(['error' => 'Unauthorized'], 401);
}
public function cooperationRequest(Request $request){
if ($request->ajax()) {
$user = User::findOrFail(Auth::id());
$mediaId = $user->company->media->id;
$media = Media::with('cooperations')->findOrFail($mediaId);
// $currentDate = Carbon::now()->format('Y-m-d');
$data = $media->cooperations()
->where('start_date', '<=', Carbon::now()->locale('id')->toDateString())
->where('end_date', '>=', Carbon::now()->locale('id')->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('posted_at', function ($data) {
return idn_date($data->created_at, 'l, d F Y');
})
->addColumn('status', function ($data){
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(true){
$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) {
$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>';
if (is_role(['3']) && $data->pivot->status === '1') {
$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);
}
public function contentRecap(Request $request){
if ($request->ajax()) {
@ -722,7 +970,7 @@ public function contentRecap(Request $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-end">
<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>';
@ -789,7 +1037,7 @@ public function mediaMonitoring(Request $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-end">
<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>';
@ -871,7 +1119,7 @@ public function issueManagement(Request $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-end">
<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>';
@ -946,7 +1194,7 @@ public function user(Request $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-end">
<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>';

View File

@ -0,0 +1,98 @@
<?php
namespace App\Http\Controllers\Dashboard;
use App\Http\Controllers\Controller;
use App\Http\Requests\CooperationRequest;
use App\Models\Cooperation;
use App\Models\Media;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class MediaCooperationController extends Controller
{
public function index(){
return view('dashboard.media-cooperations.index', [
'title' => 'Kerjasama'
]);
}
public function create(){
return view('dashboard.media-cooperations.create', [
'title' => 'Tambah Kerjasama',
'media' => Media::all()
]);
}
public function store(CooperationRequest $request){
$validatedData = $request->validated();
$validatedData['enhancer_id'] = Auth::id();
$validatedData['banner'] = store_file($validatedData['banner'], '/uploads/cooperations', 'public')['randomFileName'];
$validatedData['offer_file_template'] = store_file($validatedData['offer_file_template'], '/uploads/cooperations', 'public')['randomFileName'];
$createdCooperation = Cooperation::create($validatedData);
$createdCooperation->media()->attach($validatedData['media_ids']);
if ($createdCooperation->media()->count() > 0) {
return redirect()->back()->with('success-status', 'Berhasil menambahkan kerjasama.');
} else {
return redirect()->back()->with('failed-status', 'Gagal menambahkan kerjasama');
}
}
public function edit($id){
$cooperation = Cooperation::with(['media'])->findOrFail(decrypt_id($id));
return view('dashboard.media-cooperations.edit', [
'title' => 'Ubah Kerjasama',
'cooperation' => $cooperation,
'media' => Media::all(),
'selectedMediaIds' => $cooperation->media->pluck('id')->toArray()
]);
}
public function update(CooperationRequest $request, $id){
$validatedData = $request->validated();
$cooperation = Cooperation::with(['media'])->findOrFail(decrypt_id($id));
$validatedData['enhancer_id'] = Auth::id();
if($request->hasFile('banner')){
delete_file('app/public/uploads/cooperations/'.$cooperation->banner);
$validatedData['banner'] = store_file($validatedData['banner'], '/uploads/cooperations', 'public')['randomFileName'];
}else{
$validatedData['banner'] = $cooperation->banner;
}
if($request->hasFile('offer_file_template')){
delete_file('app/public/uploads/cooperations/'.$cooperation->offer_file_template);
$validatedData['offer_file_template'] = store_file($validatedData['offer_file_template'], '/uploads/cooperations', 'public')['randomFileName'];
}else{
$validatedData['offer_file_template'] = $cooperation->offer_file_template;
}
$cooperation->update($validatedData);
if ($request->has('media_ids')) {
$cooperation->media()->sync($validatedData['media_ids']);
}
if ($cooperation->media()->count() > 0) {
return redirect()->back()->with('success-status', 'Berhasil mengubah kerjasama.');
} else {
return redirect()->back()->with('failed-status', 'Gagal mengubah kerjasama');
}
}
public function show($id){
$mediaCooperation = Cooperation::with(['media'])->findOrFail(decrypt_id($id));
return view('dashboard.media-cooperations.show', [
'title' => 'Detail Kerjasama',
'mediaCooperation' => $mediaCooperation
]);
}
public function destroy(){}
}

View File

@ -0,0 +1,63 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
class CooperationRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return Auth::check() && is_role(['1']);
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'name' => ['required'],
'start_date' => ['required', 'date'],
'end_date' => ['required', 'date'],
'media_ids' => ['required', 'array'],
'media_ids.*' => ['required', 'exists:media,id'],
'banner' => ['nullable', 'image', 'mimes:png,jpg,jpeg', 'max:2048'],
'offer_file_template' => ['nullable', 'file','mimes:pdf' , 'max:2048'],
'description' => ['required'],
];
}
public function messages(): array
{
return [
'name.required' => 'Nama kegiatan wajib diisi.',
'start_date.required' => 'Tanggal mulai wajib diisi.',
'start_date.date' => 'Format tanggal mulai tidak valid.',
'end_date.required' => 'Tanggal selesai wajib diisi.',
'end_date.date' => 'Format tanggal selesai tidak valid.',
'media_ids.required' => 'Media wajib dipilih.',
'media_ids.array' => 'Format media tidak valid.',
'media_ids.*.required' => 'Setiap media harus dipilih.',
'media_ids.*.exists' => 'Media yang dipilih tidak valid.',
'banner.image' => 'File banner harus berupa gambar.',
'banner.mimes' => 'Format banner harus PNG, JPG, atau JPEG.',
'banner.max' => 'Ukuran banner maksimal 2MB.',
'offer_file_template.file' => 'File template harus berupa file yang valid.',
'offer_file_template.mimes' => 'Format file template harus PDF.',
'offer_file_template.max' => 'Ukuran file template maksimal 2MB.',
'description.required' => 'Deskripsi kerjasama wajib diisi.',
];
}
}

View File

@ -0,0 +1,31 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Cooperation extends Model
{
use SoftDeletes;
protected $table = 'cooperations';
protected $fillable = [
'name',
'start_date',
'end_date',
'banner',
'offer_file_template',
'description',
'enhancer_id',
];
public function media()
{
return $this->belongsToMany(Media::class, 'media_cooperations', 'cooperation_id', 'media_id')
->using(MediaCooperation::class)
->withPivot(['status', 'rejection_reason'])
->withTimestamps();
}
}

View File

@ -0,0 +1,21 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class CooperationProposal extends Model
{
use SoftDeletes;
protected $table = 'cooperation_proposals';
protected $fillable = [
'description',
'attachment',
'status',
'cooperation_id',
'media_id',
];
}

View File

@ -33,4 +33,12 @@ public function company(){
public function journalists(){
return $this->hasMany(Journalist::class, 'media_id', 'id');
}
public function cooperations()
{
return $this->belongsToMany(Cooperation::class, 'media_cooperations', 'media_id', 'cooperation_id')
->using(MediaCooperation::class)
->withPivot(['status', 'rejection_reason'])
->withTimestamps();
}
}

View File

@ -0,0 +1,26 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\Pivot;
class MediaCooperation extends Pivot
{
protected $table = 'media_cooperations';
protected $fillable = [
'cooperation_id',
'media_id',
'status',
'rejection_reason'
];
public function cooperation(){
return $this->belongsTo(Cooperation::class, 'cooperation_id', 'id');
}
public function media(){
return $this->belongsTo(Media::class, 'media_id', 'id');
}
}

View File

@ -0,0 +1,36 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('cooperations', function (Blueprint $table) {
$table->id();
$table->text('name');
$table->date('start_date');
$table->date('end_date');
$table->string('banner')->nullable();
$table->string('offer_file_template')->nullable();
$table->text('description');
$table->unsignedBigInteger('enhancer_id');
$table->foreign('enhancer_id')->references('id')->on('users');
$table->timestamps();
$table->softDeletes();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('cooperations');
}
};

View File

@ -0,0 +1,33 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('media_cooperations', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('cooperation_id');
$table->unsignedBigInteger('media_id');
$table->foreign('cooperation_id')->references('id')->on('cooperations');
$table->foreign('media_id')->references('id')->on('media');
$table->enum('status', ['0', '1', '2', '3'])->default('0');
$table->text('rejection_reason')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('media_cooperations');
}
};

View File

@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('cooperation_proposals', function (Blueprint $table) {
$table->id();
$table->text('description')->nullable();
$table->string('attachment');
$table->enum('status', ['0', '1', '2'])->default('0');
$table->unsignedBigInteger('cooperation_id');
$table->unsignedBigInteger('media_id');
$table->foreign('cooperation_id')->references('id')->on('cooperations');
$table->foreign('media_id')->references('id')->on('media');
$table->timestamps();
$table->softDeletes();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('cooperation_proposals');
}
};

View File

@ -0,0 +1,17 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class CooperationProposalSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
//
}
}

View File

@ -0,0 +1,17 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class CooperationSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
//
}
}

View File

@ -0,0 +1,17 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class MediaCooperationSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
//
}
}

View File

@ -87,3 +87,45 @@ .custom-loader {
font-weight: bold;
color: #007bff;
}
.dataTable.no-footer{
min-height: 60 !important;
}
table.dataTable tbody {
min-height: 60 !important;
}
/* table.dataTable tbody td {
padding-top: 20px !important;
padding-bottom: 20px !important;
} */
/* .dropdown-menu {
max-width: 200px;
min-width: 150px;
white-space: nowrap;
overflow: visible;
z-index: 1050;
}
.dropdown-menu {
transform: translate3d(-10px, 35px, 0px) !important;
} */
/* table.dataTable {
overflow: visible !important;
}
.dataTables_wrapper {
overflow: visible;
} */
.dropdown-menu-datatable-custom {
position: fixed !important;
z-index: 1050 !important;
}
.nk-wizard #previous{
background-color: transparent !important;
border: grey !important;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,66 @@
@include('partials.dashboard.head')
@include('partials.dashboard.sidebar', ['page' => 'cooperation_requests'])
@include('partials.dashboard.header')
<!-- content @s -->
<div class="nk-content ">
<div class="container-fluid">
<div class="nk-content-inner">
<div class="nk-content-body">
<div class="nk-block-head nk-block-head-sm">
<div class="nk-block-between">
<div class="nk-block-head-content">
<h3 class="nk-block-title page-title">{{$title}}</h3>
</div><!-- .nk-block-head-content -->
{{-- @if (is_role(['1']))
<div class="nk-block-head-content">
<div class="toggle-wrap nk-block-tools-toggle">
<a href="#" class="btn btn-icon btn-trigger toggle-expand me-n1" data-target="pageMenu"><em class="icon ni ni-more-v"></em></a>
<div class="toggle-expand-content" data-content="pageMenu">
<ul class="nk-block-tools g-3">
<li>
<div class="drodown">
<a href="#" class="dropdown-toggle btn btn-white btn-dim btn-outline-light" data-bs-toggle="dropdown"><em class="d-none d-sm-inline icon ni ni-calender-date"></em><span><span class="d-none d-md-inline">Last</span> 30 Days</span><em class="dd-indc icon ni ni-chevron-right"></em></a>
<div class="dropdown-menu dropdown-menu-end">
<ul class="link-list-opt no-bdr">
<li><a href="#"><span>Last 30 Days</span></a></li>
<li><a href="#"><span>Last 6 Months</span></a></li>
<li><a href="#"><span>Last 1 Years</span></a></li>
</ul>
</div>
</div>
</li>
<li class="nk-block-tools-opt"><a href="{{route('dashboard.cooperations.create')}}" class="btn btn-primary"><em class="icon ni ni-plus"></em><span>Tambah</span></a></li>
</ul>
</div>
</div>
</div><!-- .nk-block-head-content -->
@endif --}}
</div><!-- .nk-block-between -->
</div><!-- .nk-block-head -->
<div class="nk-block nk-block-lg">
<div class="card card-bordered card-preview">
<div class="card-inner">
<div class="table-responsive">
<table class="table table-striped table-bordered nowrap" id="cooperationRequestsTable" border="1">
<thead>
<tr>
<th style="width: 10% !important;">No</th>
<th>Nama Kegiatan</th>
<th>Tanggal Mulai</th>
<th>Tanggal Selesai</th>
<th>Dibuat Pada</th>
<th>Status</th>
<th style="width: 10% !important;"></th>
</tr>
</thead>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- content @e -->
@include('partials.dashboard.footer' ,['datatable' => 'cooperation_request'])

View File

@ -0,0 +1,324 @@
@include('partials.dashboard.head')
@include('partials.dashboard.sidebar', ['page' => 'cooperation_requests'])
@include('partials.dashboard.header')
<!-- content @s -->
<div class="nk-content ">
<div class="container-fluid">
<div class="nk-content-inner">
<div class="nk-content-body">
<div class="nk-block nk-block-lg">
<div class="card card-bordered card-preview">
<ul class="nav nav-tabs nav-tabs-mb-icon nav-tabs-card">
<li class="nav-item">
<a class="nav-link text-primary" href="#"><em class="icon ni ni-file-text"></em><span>Form Pengajuan Kerjasama</span></a>
</li>
</ul><!-- .nav-tabs -->
<div class="card-inner">
<form action="#" class="nk-wizard nk-wizard-simple is-alter" id="wizard-01">
<div class="nk-wizard-head">
<h5>Data Perusahaan</h5>
</div>
<div class="nk-wizard-content">
<div class="profile-ud-list">
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Nama perusahaan</span>
<span class="profile-ud-value">{{$user->company->name}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Email Perusahaan</span>
<span class="profile-ud-value">{{$user->company->email}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Direktur</span>
<span class="profile-ud-value">{{$user->company->director_name}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">NIK Direktur</span>
<span class="profile-ud-value">
@if ($user->company->director_nik_doc)
<a href="{{asset('storage/uploads/companies/'. $user->company->director_nik_doc)}}" target="__blank">{{$user->company->director_nik}}</a>
@else
{{$user->company->director_nik ?? '-'}}
@endif
</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Alamat</span>
<span class="profile-ud-value">{{$user->company->address}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Akta Pendirian</span>
<span class="profile-ud-value">
@if ($user->company->deed_incorporation_doc)
<a href="{{asset('storage/uploads/companies/'. $user->company->deed_incorporation_doc)}}" target="__blank">{{$user->company->deed_incorporation}}</a>
@else
{{$user->company->deed_incorporation ?? '-'}}
@endif
</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">SPT Tahunan</span>
<span class="profile-ud-value">
@if ($user->company->annual_tax_return_doc)
<a href="{{asset('storage/uploads/companies/'. $user->company->annual_tax_return_doc)}}" target="__blank">{{$user->company->annual_tax_return}}</a>
@else
{{$user->company->annual_tax_return ?? '-'}}
@endif
</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">NPWP</span>
<span class="profile-ud-value">
@if ($user->company->tax_id_number_doc)
<a href="{{asset('storage/uploads/companies/'. $user->company->tax_id_number_doc)}}" target="__blank">{{$user->company->tax_id_number}}</a>
@else
{{$user->company->tax_id_number ?? '-'}}
@endif
</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">PKP</span>
<span class="profile-ud-value">
@if ($user->company->taxable_enterprise_doc)
<a href="{{asset('storage/uploads/companies/'. $user->company->taxable_enterprise_doc)}}" target="__blank">{{$user->company->taxable_enterprise}}</a>
@else
{{$user->company->taxable_enterprise ?? '-'}}
@endif
</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Suket Domisili</span>
<span class="profile-ud-value">
@if ($user->company->domicile_certificate_doc)
<a href="{{asset('storage/uploads/companies/'. $user->company->domicile_certificate_doc)}}" target="__blank">{{$user->company->domicile_certificate}}</a>
@else
{{$user->company->domicile_certificate ?? '-'}}
@endif
</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">SIUP</span>
<span class="profile-ud-value">
@if ($user->company->trade_license_doc)
<a href="{{asset('storage/uploads/companies/'. $user->company->trade_license_doc)}}" target="__blank">{{$user->company->trade_license}}</a>
@else
{{$user->company->trade_license ?? '-'}}
@endif
</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Profile</span>
<span class="profile-ud-value">
@if ($user->company->profile_doc)
<a href="{{asset('storage/uploads/companies/'. $user->company->profile_doc)}}" target="__blank">{{$user->company->profile}}</a>
@else
{{$user->company->profile ?? '-'}}
@endif
</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Penawaran Kerja</span>
<span class="profile-ud-value">
@if ($user->company->cooperation_request_doc)
<a href="{{asset('storage/uploads/companies/'. $user->company->cooperation_request_doc)}}" target="__blank">{{$user->company->cooperation_request}}</a>
@else
{{$user->company->cooperation_request ?? '-'}}
@endif
</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Status</span>
@switch($user->status)
@case(0)
<span class="profile-ud-value"><span class="badge bg-warning">Menunggu</span></span>
@break
@case(1)
<span class="profile-ud-value"><span class="badge bg-success">Diterima</span></span>
@break
@case(2)
<span class="profile-ud-value"><span class="badge bg-danger">Ditolak</span></span>
@break
@default
<span class="profile-ud-value"><span class="badge bg-secondary">Tidak Diketahui</span></span>
@endswitch
</div>
</div>
</div>
</div>
<div class="nk-wizard-head">
<h5>Data Media</h5>
</div>
<div class="nk-wizard-content">
<div class="profile-ud-list">
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Nama Media</span>
<span class="profile-ud-value">{{$user->company->media->name}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Jenis</span>
<span class="profile-ud-value">{{ucfirst($user->company->media->type)}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Klasifikasi</span>
<span class="profile-ud-value">{{ucfirst($user->company->media->classification)}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Alamat</span>
<span class="profile-ud-value">{{$user->company->media->address}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Organisasi Kewartawanan</span>
<span class="profile-ud-value">
@if ($user->company->media->journalism_organization_doc)
<a href="{{asset('storage/uploads/companies/'. $user->company->media->journalism_organization_doc)}}" target="__blank">{{$user->company->media->journalism_organization}}</a>
@else
{{$user->company->media->journalism_organization ?? '-'}}
@endif
</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Sertifikat Dewan Press</span>
<span class="profile-ud-value">
@if ($user->company->media->press_council_certificate_doc)
<a href="{{asset('storage/uploads/companies/'. $user->company->media->press_council_certificate_doc)}}" target="__blank">{{$user->company->media->press_council_certificate}}</a>
@else
{{$user->company->media->press_council_certificate ?? '-'}}
@endif
</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Status</span>
@switch($user->status)
@case(0)
<span class="profile-ud-value"><span class="badge bg-warning">Menunggu</span></span>
@break
@case(1)
<span class="profile-ud-value"><span class="badge bg-success">Diterima</span></span>
@break
@case(2)
<span class="profile-ud-value"><span class="badge bg-danger">Ditolak</span></span>
@break
@default
<span class="profile-ud-value"><span class="badge bg-secondary">Tidak Diketahui</span></span>
@endswitch
</div>
</div>
</div>
</div>
<div class="nk-wizard-head">
<h5>Data Jurnalis</h5>
</div>
<div class="nk-wizard-content">
<div class="row g-gs">
<div class="col-md-12 col-lg-12">
<span class="preview-title overline-title">Pilih Jurnalis</span>
<ul class="custom-control-group custom-control-vertical w-100">
@foreach ($user->company->media->journalists as $journalist)
<li>
<div class="custom-control custom-control-sm custom-checkbox custom-control-pro">
<input type="checkbox" class="custom-control-input" id="journalists-{{$journalist->id}}" name="journalists[]" value="{{$journalist->id}}" required>
<label class="custom-control-label" for="journalists-{{$journalist->id}}">
<span class="user-card">
<span class="user-avatar sm bg-info">
<em class="icon ni ni-user-alt"></em>
</span>
<span class="user-info">
<span class="lead-text">{{$journalist->name}}</span>
<span class="sub-text"><em class="icon ni ni-call"></em>&nbsp;{{$journalist->phone_number}}</span>
<span class="sub-text"><em class="icon ni ni-mail"></em>&nbsp;{{$journalist->email}}</span>
</span>
</span>
</label>
</div>
</li>
@endforeach
</ul>
</div>
</div>
</div>
<div class="nk-wizard-head">
<h5>Data Pengajuan Kerjasama</h5>
</div>
<div class="nk-wizard-content">
<div class="row gy-2">
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="fw-telegram-username">Lampiran Pengajuan</label>
<div class="form-control-wrap">
<input type="file" data-msg="Wajib Di isi" class="form-control required" id="fw-telegram-username" name="fw-telegram-username" required>
</div>
</div>
</div><!-- .col -->
<div class="col-md-6">
<div class="form-group">
<label class="form-label" for="fw-telegram-username">Template Lampiran Pengajuan</label>
<div class="form-control-wrap">
<a href="#" class="btn btn-info" style="width: 100%;">
<em class="icon ni ni-download" style="margin-top: -0.2rem"></em> Unduh template lampiran pengajuan
</a>
</div>
</div>
</div><!-- .col -->
<div class="col-md-12">
<div class="form-group">
<label class="form-label" for="fw-token-address">Deskripsi</label>
<div class="form-control-wrap">
<textarea class="tinymce-basic form-control" name="content">{!!old('content')!!}</textarea>
</div>
</div>
</div>
</div><!-- .row -->
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- content @e -->
@include('partials.dashboard.footer', ['rich_editor' => true, 'proposal' => true])

View File

@ -0,0 +1,157 @@
@include('partials.dashboard.head')
@include('partials.dashboard.sidebar', ['page' => 'cooperation_requests'])
@include('partials.dashboard.header')
<!-- content @s -->
<div class="nk-content ">
<div class="container-fluid">
<div class="nk-content-inner">
<div class="nk-content-body">
<div class="nk-block nk-block-lg">
<div class="card">
<div class="card-aside-wrap">
<div class="card-content">
<ul class="nav nav-tabs nav-tabs-mb-icon nav-tabs-card">
<li class="nav-item">
<a class="nav-link text-primary" href="#"><em class="icon ni ni-info"></em><span>Detail Kerjasama</span></a>
</li>
</ul><!-- .nav-tabs -->
<div class="card-inner">
<div class="nk-block">
{{-- <div class="nk-block-head">
<h5 class="title">Personal Information</h5>
<p>Basic info, like your name and address, that you use on Nio Platform.</p>
</div> --}}
<div class="profile-ud-list">
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Nama Kegiatan</span>
<span class="profile-ud-value">{{$cooperation->name}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Diunggah Pada</span>
<span class="profile-ud-value">{{idn_date($cooperation->created_at, 'l, m F Y')}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Tanggal Mulai Pengajuan</span>
<span class="profile-ud-value">{{idn_date($cooperation->start_date, 'l, m F Y')}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Tanggal Akhir Pengajuan</span>
<span class="profile-ud-value">{{idn_date($cooperation->end_date, 'l, m F Y')}}</span>
</div>
</div>
</div><!-- .profile-ud-list -->
</div><!-- .nk-block -->
{{-- <div class="nk-divider divider md"></div> --}}
<div class="nk-block">
<div class="nk-block-head nk-block-head-sm nk-block-between">
<span class="profile-ud-label">Deskripsi</span>
</div><!-- .nk-block-head -->
<div class="bq-note">
<div class="bq-note-item">
<div class="bq-note-text">
{!!$cooperation->description!!}
</div>
</div><!-- .bq-note-item -->
</div><!-- .bq-note -->
</div><!-- .nk-block -->
<div id="accordion" class="accordion my-3">
<div class="accordion-item">
<a href="#" class="accordion-head" data-bs-toggle="collapse" data-bs-target="#accordion-item-1">
<h6 class="title">Banner</h6>
<span class="accordion-icon"></span>
</a>
<div class="accordion-body collapse" id="accordion-item-1" data-bs-parent="#accordion">
<div class="accordion-inner">
<div class="bq-note">
<div class="bq-note-item">
<div class="bq-note-text">
@if (filled($cooperation->banner))
<img src="{{asset('storage/uploads/cooperations/'. $cooperation->banner)}}" alt="Banner" style="max-width: 300px; height: auto; display: block; margin: auto;">
@else
-
@endif
</div>
</div><!-- .bq-note-item -->
</div><!-- .bq-note -->
</div>
</div>
</div>
<div class="accordion-item">
<a href="#" class="accordion-head collapsed" data-bs-toggle="collapse" data-bs-target="#accordion-item-2">
<h6 class="title">Template Pengajuan</h6>
<span class="accordion-icon"></span>
</a>
<div class="accordion-body collapse" id="accordion-item-2" data-bs-parent="#accordion">
<div class="accordion-inner">
<div class="bq-note">
<div class="bq-note-item">
<div class="bq-note-text">
@if (filled($cooperation->offer_file_template))
<iframe src="{{ asset('storage/uploads/cooperations/' . $cooperation->offer_file_template) }}"
width="100%" height="400">
<p>Browser Anda tidak mendukung PDF viewer. Anda bisa mengunduh PDF ini <a href="{{ asset('storage/uploads/cooperations/' . $cooperation->offer_file_template) }}">di sini</a>.</p>
</iframe>
@else
-
@endif
</div>
</div><!-- .bq-note-item -->
</div><!-- .bq-note -->
</div>
</div>
</div>
</div>
</div><!-- .card-inner -->
</div><!-- .card-content -->
</div><!-- .card-aside-wrap -->
</div>
<div class="card card-bordered card-preview">
<ul class="nav nav-tabs nav-tabs-mb-icon nav-tabs-card">
<li class="nav-item">
<a class="nav-link text-warning" href="#"><em class="icon ni ni-na"></em><span>Data Penolakan</span></a>
</li>
</ul><!-- .nav-tabs -->
<div class="card-inner">
{{-- {{dd($mediaCooperationPivot->status != '0')}} --}}
<form action="{{route('dashboard.cooperations.requests.reject.action', ['id' => encrypt_id($cooperation->id)])}}" method="post">
@csrf
<div class="form-group">
<label class="form-label" for="rejection_reason">Alasan Menolak @if($mediaCooperationPivot->status === '0')<span class="required-input">*</span> @endif </label>
@if ($mediaCooperationPivot->status === '0')
<div class="form-control-wrap">
<textarea class="tinymce-basic form-control" name="rejection_reason" id="rejection_reason" >{!!old('rejection_reason')!!}</textarea>
</div>
@else
<div class="bq-note">
<div class="bq-note-item">
<div class="bq-note-text">
{!!$mediaCooperationPivot->rejection_reason!!}
</div>
</div><!-- .bq-note-item -->
</div><!-- .bq-note -->
@endif
</div>
<hr>
<div class="nk-block d-flex justify-content-end">
<a href="{{route('dashboard.cooperations.requests.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
@if ($mediaCooperationPivot->status === '0')
<button type="submit" class="btn btn-primary">Kirim</button>
@endif
</div><!-- .nk-block -->
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- content @e -->
@include('partials.dashboard.footer', ['rich_editor' => true])

View File

@ -0,0 +1,158 @@
@include('partials.dashboard.head')
@include('partials.dashboard.sidebar', ['page' => 'cooperation_requests'])
@include('partials.dashboard.header')
<!-- content @s -->
<div class="nk-content ">
<div class="container-fluid">
<div class="nk-content-inner">
<div class="nk-content-body">
<div class="nk-block nk-block-lg">
<div class="card">
<div class="card-aside-wrap">
<div class="card-content">
<ul class="nav nav-tabs nav-tabs-mb-icon nav-tabs-card">
<li class="nav-item">
<a class="nav-link text-primary" href="#"><em class="icon ni ni-info"></em><span>Detail Kerjasama</span></a>
</li>
</ul><!-- .nav-tabs -->
<div class="card-inner">
<div class="nk-block">
{{-- <div class="nk-block-head">
<h5 class="title">Personal Information</h5>
<p>Basic info, like your name and address, that you use on Nio Platform.</p>
</div> --}}
<div class="profile-ud-list">
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Nama Kegiatan</span>
<span class="profile-ud-value">{{$cooperation->name}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Diunggah Pada</span>
<span class="profile-ud-value">{{idn_date($cooperation->created_at, 'l, m F Y')}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Tanggal Mulai Pengajuan</span>
<span class="profile-ud-value">{{idn_date($cooperation->start_date, 'l, m F Y')}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Tanggal Akhir Pengajuan</span>
<span class="profile-ud-value">{{idn_date($cooperation->end_date, 'l, m F Y')}}</span>
</div>
</div>
</div><!-- .profile-ud-list -->
</div><!-- .nk-block -->
{{-- <div class="nk-divider divider md"></div> --}}
<div class="nk-block">
<div class="nk-block-head nk-block-head-sm nk-block-between">
<span class="profile-ud-label">Deskripsi</span>
</div><!-- .nk-block-head -->
<div class="bq-note">
<div class="bq-note-item">
<div class="bq-note-text">
{!!$cooperation->description!!}
</div>
</div><!-- .bq-note-item -->
</div><!-- .bq-note -->
</div><!-- .nk-block -->
<div id="accordion" class="accordion my-3">
<div class="accordion-item">
<a href="#" class="accordion-head" data-bs-toggle="collapse" data-bs-target="#accordion-item-1">
<h6 class="title">Banner</h6>
<span class="accordion-icon"></span>
</a>
<div class="accordion-body collapse" id="accordion-item-1" data-bs-parent="#accordion">
<div class="accordion-inner">
<div class="bq-note">
<div class="bq-note-item">
<div class="bq-note-text">
@if (filled($cooperation->banner))
<img src="{{asset('storage/uploads/cooperations/'. $cooperation->banner)}}" alt="Banner" style="max-width: 300px; height: auto; display: block; margin: auto;">
@else
-
@endif
</div>
</div><!-- .bq-note-item -->
</div><!-- .bq-note -->
</div>
</div>
</div>
<div class="accordion-item">
<a href="#" class="accordion-head collapsed" data-bs-toggle="collapse" data-bs-target="#accordion-item-2">
<h6 class="title">Template Pengajuan</h6>
<span class="accordion-icon"></span>
</a>
<div class="accordion-body collapse" id="accordion-item-2" data-bs-parent="#accordion">
<div class="accordion-inner">
<div class="bq-note">
<div class="bq-note-item">
<div class="bq-note-text">
@if (filled($cooperation->offer_file_template))
<iframe src="{{ asset('storage/uploads/cooperations/' . $cooperation->offer_file_template) }}"
width="100%" height="400">
<p>Browser Anda tidak mendukung PDF viewer. Anda bisa mengunduh PDF ini <a href="{{ asset('storage/uploads/cooperations/' . $cooperation->offer_file_template) }}">di sini</a>.</p>
</iframe>
@else
-
@endif
</div>
</div><!-- .bq-note-item -->
</div><!-- .bq-note -->
</div>
</div>
</div>
@if ($mediaCooperationPivot->status !== '2')
<div class="nk-block d-flex justify-content-end mt-3">
<a href="{{route('dashboard.cooperations.requests.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
</div><!-- .nk-block -->
@endif
</div>
</div><!-- .card-inner -->
</div><!-- .card-content -->
</div><!-- .card-aside-wrap -->
</div>
@if ($mediaCooperationPivot->status === '2')
<div class="card card-bordered card-preview">
<ul class="nav nav-tabs nav-tabs-mb-icon nav-tabs-card">
<li class="nav-item">
<a class="nav-link text-warning" href="#"><em class="icon ni ni-na"></em><span>Data Penolakan</span></a>
</li>
</ul><!-- .nav-tabs -->
<div class="card-inner">
{{-- {{dd($mediaCooperationPivot->status != '0')}} --}}
<form action="{{route('dashboard.cooperations.requests.reject.action', ['id' => encrypt_id($cooperation->id)])}}" method="post">
@csrf
<div class="form-group">
<label class="form-label" for="rejection_reason">Alasan Menolak </label>
<div class="bq-note">
<div class="bq-note-item">
<div class="bq-note-text">
{!!$mediaCooperationPivot->rejection_reason!!}
</div>
</div><!-- .bq-note-item -->
</div><!-- .bq-note -->
</div>
<hr>
<div class="nk-block d-flex justify-content-end">
<a href="{{route('dashboard.cooperations.requests.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
@if ($mediaCooperationPivot->status === '0')
<button type="submit" class="btn btn-primary">Kirim</button>
@endif
</div><!-- .nk-block -->
</form>
</div>
</div>
@endif
</div>
</div>
</div>
</div>
</div>
<!-- content @e -->
@include('partials.dashboard.footer', ['rich_editor' => true])

View File

@ -0,0 +1,118 @@
@include('partials.dashboard.head')
@include('partials.dashboard.sidebar', ['page' => 'cooperations'])
@include('partials.dashboard.header')
<!-- content @s -->
<div class="nk-content ">
<div class="container-fluid">
<div class="nk-content-inner">
<div class="nk-content-body">
<div class="nk-block nk-block-lg">
<div class="card card-bordered card-preview">
<div class="card-inner">
<div class="card-head">
<h5 class="card-title">{{$title}}</h5>
</div>
<form action="{{route('dashboard.cooperations.store')}}" method="post" id="myForm" enctype="multipart/form-data">
@csrf
<div class="row g-4">
<div class="col-lg-12">
<div class="form-group">
<label class="form-label" for="name">Nama Kegiatan<span class="required-input">*</span></label>
<div class="form-control-wrap">
<input type="text" class="form-control @error('name') border-danger @enderror" id="name" name="name" placeholder="Masukan nama kegiatan" value="{{old('name')}}">
</div>
@error('name')
<span class="validation-error">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label class="form-label" for="start_date">Tanggal Mulai Informasi<span class="required-input">*</span></label>
<div class="form-control-wrap">
<input type="date" class="form-control @error('start_date') border-danger @enderror" id="start_date" name="start_date" placeholder="Masukan tanggal mulai" value="{{old('start_date')}}">
</div>
@error('start_date')
<span class="validation-error">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label class="form-label" for="end_date">Tanggal Akhir Informasi<span class="required-input">*</span></label>
<div class="form-control-wrap">
<input type="date" class="form-control @error('end_date') border-danger @enderror" id="end_date" name="end_date" placeholder="Masukan tanggal selesai" value="{{old('end_date')}}">
</div>
@error('end_date')
<span class="validation-error">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-lg-12">
<div class="form-group">
<label class="form-label">Media<span class="required-input">*</span></label>
<div class="form-control-wrap">
<select class="form-select js-select2" data-search="on" name="media_ids[]" multiple="multiple" data-placeholder="Pilih Media">
@foreach ($media as $item)
<option value="{{ $item->id }}"
{{ is_array(old('media_ids')) && in_array($item->id, old('media_ids')) ? 'selected' : '' }}>
{{ $item->name }}
</option>
@endforeach
</select>
</div>
@error('media_ids')
<span class="validation-error">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label class="form-label" for="banner">Banner</label>
<div class="form-control-wrap">
<input type="file" class="form-control @error('banner') border-danger @enderror" id="banner" name="banner" placeholder="Masukan file banner" value="{{old('banner')}}" accept="image/*">
</div>
@error('banner')
<span class="validation-error">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label class="form-label" for="offer_file_template">Template PDF</label>
<div class="form-control-wrap">
<input type="file" class="form-control @error('offer_file_template') border-danger @enderror" id="offer_file_template" name="offer_file_template" placeholder="Masukan template penawaran" value="{{old('offer_file_template')}}" accept="application/pdf">
</div>
@error('offer_file_template')
<span class="validation-error">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-lg-12">
<div class="form-group">
<label class="form-label" for="phone-no-1">Deskripsi Kerjasama<span class="required-input">*</span></label>
<div class="form-control-wrap">
<textarea class="tinymce-basic form-control" name="description">{!!old('description')!!}</textarea>
</div>
</div>
</div>
<div class="col-12">
<hr>
<div class="form-group d-flex justify-content-end">
<a href="{{route('dashboard.cooperations.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
<button type="button" class="btn btn-md btn-primary" id="submitButton">Kirim</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- content @e -->
@include('partials.dashboard.footer', ['rich_editor' => true])

View File

@ -0,0 +1,119 @@
@include('partials.dashboard.head')
@include('partials.dashboard.sidebar', ['page' => 'cooperations'])
@include('partials.dashboard.header')
<!-- content @s -->
<div class="nk-content ">
<div class="container-fluid">
<div class="nk-content-inner">
<div class="nk-content-body">
<div class="nk-block nk-block-lg">
<div class="card card-bordered card-preview">
<div class="card-inner">
<div class="card-head">
<h5 class="card-title">{{$title}}</h5>
</div>
<form action="{{route('dashboard.cooperations.update', ['id' => encrypt_id($cooperation->id)])}}" method="post" id="myForm" enctype="multipart/form-data">
@csrf
@method('put')
<div class="row g-4">
<div class="col-lg-12">
<div class="form-group">
<label class="form-label" for="name">Nama Kegiatan<span class="required-input">*</span></label>
<div class="form-control-wrap">
<input type="text" class="form-control @error('name') border-danger @enderror" id="name" name="name" placeholder="Masukan nama kegiatan" value="{{$cooperation->name}}">
</div>
@error('name')
<span class="validation-error">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label class="form-label" for="start_date">Tanggal Mulai Informasi<span class="required-input">*</span></label>
<div class="form-control-wrap">
<input type="date" class="form-control @error('start_date') border-danger @enderror" id="start_date" name="start_date" placeholder="Masukan tanggal mulai" value="{{$cooperation->start_date}}">
</div>
@error('start_date')
<span class="validation-error">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label class="form-label" for="end_date">Tanggal Akhir Informasi<span class="required-input">*</span></label>
<div class="form-control-wrap">
<input type="date" class="form-control @error('end_date') border-danger @enderror" id="end_date" name="end_date" placeholder="Masukan tanggal selesai" value="{{$cooperation->end_date}}">
</div>
@error('end_date')
<span class="validation-error">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-lg-12">
<div class="form-group">
<label class="form-label">Media<span class="required-input">*</span></label>
<div class="form-control-wrap">
<select class="form-select js-select2" data-search="on" name="media_ids[]" multiple="multiple" data-placeholder="Pilih Media">
@foreach ($media as $item)
<option value="{{ $item->id }}"
{{ in_array($item->id, old('media_ids', $selectedMediaIds)) ? 'selected' : '' }}>
{{ $item->name }}
</option>
@endforeach
</select>
</div>
@error('media_ids')
<span class="validation-error">{{ $message }}</span>
@enderror
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label class="form-label" for="banner">Banner</label>
<div class="form-control-wrap">
<input type="file" class="form-control @error('banner') border-danger @enderror" id="banner" name="banner" placeholder="Masukan file banner" accept="image/*">
</div>
@error('banner')
<span class="validation-error">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label class="form-label" for="offer_file_template">Template PDF</label>
<div class="form-control-wrap">
<input type="file" class="form-control @error('offer_file_template') border-danger @enderror" id="offer_file_template" name="offer_file_template" placeholder="Masukan template penawaran" accept="application/pdf">
</div>
@error('offer_file_template')
<span class="validation-error">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-lg-12">
<div class="form-group">
<label class="form-label" for="phone-no-1">Deskripsi Kerjasama<span class="required-input">*</span></label>
<div class="form-control-wrap">
<textarea class="tinymce-basic form-control" name="description">{!!$cooperation->description!!}</textarea>
</div>
</div>
</div>
<div class="col-12">
<hr>
<div class="form-group d-flex justify-content-end">
<a href="{{route('dashboard.cooperations.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
<button type="button" class="btn btn-md btn-primary" id="submitButton">Simpan</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- content @e -->
@include('partials.dashboard.footer', ['rich_editor' => true])

View File

@ -0,0 +1,65 @@
@include('partials.dashboard.head')
@include('partials.dashboard.sidebar', ['page' => 'cooperations'])
@include('partials.dashboard.header')
<!-- content @s -->
<div class="nk-content ">
<div class="container-fluid">
<div class="nk-content-inner">
<div class="nk-content-body">
<div class="nk-block-head nk-block-head-sm">
<div class="nk-block-between">
<div class="nk-block-head-content">
<h3 class="nk-block-title page-title">{{$title}}</h3>
</div><!-- .nk-block-head-content -->
@if (is_role(['1']))
<div class="nk-block-head-content">
<div class="toggle-wrap nk-block-tools-toggle">
<a href="#" class="btn btn-icon btn-trigger toggle-expand me-n1" data-target="pageMenu"><em class="icon ni ni-more-v"></em></a>
<div class="toggle-expand-content" data-content="pageMenu">
<ul class="nk-block-tools g-3">
{{-- <li>
<div class="drodown">
<a href="#" class="dropdown-toggle btn btn-white btn-dim btn-outline-light" data-bs-toggle="dropdown"><em class="d-none d-sm-inline icon ni ni-calender-date"></em><span><span class="d-none d-md-inline">Last</span> 30 Days</span><em class="dd-indc icon ni ni-chevron-right"></em></a>
<div class="dropdown-menu dropdown-menu-end">
<ul class="link-list-opt no-bdr">
<li><a href="#"><span>Last 30 Days</span></a></li>
<li><a href="#"><span>Last 6 Months</span></a></li>
<li><a href="#"><span>Last 1 Years</span></a></li>
</ul>
</div>
</div>
</li> --}}
<li class="nk-block-tools-opt"><a href="{{route('dashboard.cooperations.create')}}" class="btn btn-primary"><em class="icon ni ni-plus"></em><span>Tambah</span></a></li>
</ul>
</div>
</div>
</div><!-- .nk-block-head-content -->
@endif
</div><!-- .nk-block-between -->
</div><!-- .nk-block-head -->
<div class="nk-block nk-block-lg">
<div class="card card-bordered card-preview">
<div class="card-inner">
<div class="table-responsive">
<table class="table table-striped table-bordered nowrap" id="cooperationsTable" border="1">
<thead>
<tr>
<th style="width: 10% !important;">No</th>
<th>Nama Kegiatan</th>
<th>Tanggal Mulai</th>
<th>Tanggal Selesai</th>
<th>Dibuat Pada</th>
<th style="width: 10% !important;"></th>
</tr>
</thead>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- content @e -->
@include('partials.dashboard.footer' ,['datatable' => 'cooperation'])

View File

@ -0,0 +1,151 @@
@include('partials.dashboard.head')
@include('partials.dashboard.sidebar', ['page' => 'cooperations'])
@include('partials.dashboard.header')
<!-- content @s -->
<div class="nk-content ">
<div class="container-fluid">
<div class="nk-content-inner">
<div class="nk-content-body">
<div class="nk-block nk-block-lg">
<div class="card">
<div class="card-aside-wrap">
<div class="card-content">
<ul class="nav nav-tabs nav-tabs-mb-icon nav-tabs-card">
<li class="nav-item">
<a class="nav-link text-primary" href="#"><em class="icon ni ni-info"></em><span>Detail Kerjasama</span></a>
</li>
</ul><!-- .nav-tabs -->
<div class="card-inner">
<div class="nk-block">
{{-- <div class="nk-block-head">
<h5 class="title">Personal Information</h5>
<p>Basic info, like your name and address, that you use on Nio Platform.</p>
</div> --}}
<div class="profile-ud-list">
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Nama Kegiatan</span>
<span class="profile-ud-value">{{$mediaCooperation->name}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Diunggah Pada</span>
<span class="profile-ud-value">{{idn_date($mediaCooperation->created_at, 'l, m F Y')}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Tanggal Mulai Pengajuan</span>
<span class="profile-ud-value">{{idn_date($mediaCooperation->start_date, 'l, m F Y')}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Tanggal Akhir Pengajuan</span>
<span class="profile-ud-value">{{idn_date($mediaCooperation->end_date, 'l, m F Y')}}</span>
</div>
</div>
</div><!-- .profile-ud-list -->
</div><!-- .nk-block -->
{{-- <div class="nk-divider divider md"></div> --}}
<div class="nk-block">
<div class="nk-block-head nk-block-head-sm nk-block-between">
<span class="profile-ud-label">Deskripsi</span>
</div><!-- .nk-block-head -->
<div class="bq-note">
<div class="bq-note-item">
<div class="bq-note-text">
{!!$mediaCooperation->description!!}
</div>
</div><!-- .bq-note-item -->
</div><!-- .bq-note -->
</div><!-- .nk-block -->
<div id="accordion" class="accordion my-3">
<div class="accordion-item">
<a href="#" class="accordion-head" data-bs-toggle="collapse" data-bs-target="#accordion-item-1">
<h6 class="title">Banner</h6>
<span class="accordion-icon"></span>
</a>
<div class="accordion-body collapse" id="accordion-item-1" data-bs-parent="#accordion">
<div class="accordion-inner">
<div class="bq-note">
<div class="bq-note-item">
<div class="bq-note-text">
@if (filled($mediaCooperation->banner))
<img src="{{asset('storage/uploads/cooperations/'. $mediaCooperation->banner)}}" alt="Banner" style="max-width: 300px; height: auto; display: block; margin: auto;">
@else
-
@endif
</div>
</div><!-- .bq-note-item -->
</div><!-- .bq-note -->
</div>
</div>
</div>
<div class="accordion-item">
<a href="#" class="accordion-head collapsed" data-bs-toggle="collapse" data-bs-target="#accordion-item-2">
<h6 class="title">Template Pengajuan</h6>
<span class="accordion-icon"></span>
</a>
<div class="accordion-body collapse" id="accordion-item-2" data-bs-parent="#accordion">
<div class="accordion-inner">
<div class="bq-note">
<div class="bq-note-item">
<div class="bq-note-text">
@if (filled($mediaCooperation->offer_file_template))
<iframe src="{{ asset('storage/uploads/cooperations/' . $mediaCooperation->offer_file_template) }}"
width="100%" height="400">
<p>Browser Anda tidak mendukung PDF viewer. Anda bisa mengunduh PDF ini <a href="{{ asset('storage/uploads/cooperations/' . $mediaCooperation->offer_file_template) }}">di sini</a>.</p>
</iframe>
@else
-
@endif
</div>
</div><!-- .bq-note-item -->
</div><!-- .bq-note -->
</div>
</div>
</div>
</div>
<hr>
<div class="nk-block d-flex justify-content-end">
<a href="{{route('dashboard.media.monitoring.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
<a href="{{route('dashboard.content.recaps.edit', ['id' => encrypt_id($mediaCooperation->id)])}}" class="btn btn-warning"><span>Ubah</span></a>
</div><!-- .nk-block -->
</div><!-- .card-inner -->
</div><!-- .card-content -->
</div><!-- .card-aside-wrap -->
</div>
<div class="card card-bordered card-preview">
<ul class="nav nav-tabs nav-tabs-mb-icon nav-tabs-card">
<li class="nav-item">
<a class="nav-link text-primary" href="#"><em class="icon ni ni-info"></em><span>Media</span></a>
</li>
</ul><!-- .nav-tabs -->
<div class="card-inner">
<div class="table-responsive">
<table class="table table-striped table-bordered nowrap" id="cooperationMediaTable" border="1">
<thead>
<tr>
<th style="width: 10% !important;">No</th>
<th>Nama Media</th>
<th>Nama Perusahaan</th>
<th>Email</th>
<th>Tipe</th>
<th>Klasifikasi</th>
<th>Status</th>
{{-- <th style="width: 10% !important;"></th> --}}
</tr>
</thead>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- content @e -->
@include('partials.dashboard.footer', ['rich_editor' => false, 'datatable' => 'cooperation_media'])

View File

@ -304,6 +304,96 @@
</script>
@endif
@if ($datatable === 'cooperation')
<script>
$(document).ready(function() {
$('#cooperationsTable').DataTable({
processing: true,
serverSide: true,
ajax: '{{ route('dashboard.cooperations.data') }}',
columns: [
{ data: 'DT_RowIndex', name: 'DT_RowIndex', orderable: false, searchable: false },
{ data: 'name', name: 'name' },
{ data: 'start_date', name: 'start_date' },
{ data: 'end_date', name: 'end_date' },
{ data: 'posted_at', name: 'posted_at' },
{ data: 'action', name: 'action', orderable: false, searchable: false },
{ data: 'created_at', name: 'created_at', visible: false },
{ data: 'id', name: 'id', orderable: true, searchable: false, visible: false },
],
language: datatableLanguage,
autoWidth: false,
order: [[6, 'desc']],
pagingType: "simple",
lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']],
scrollX: true,
// scrollY: true,
});
});
</script>
@endif
@if ($datatable === 'cooperation_media')
<script>
$(document).ready(function() {
$('#cooperationMediaTable').DataTable({
processing: true,
serverSide: true,
ajax: '{{ route('dashboard.cooperations.media.data', ["id" => encrypt_id($mediaCooperation->id)]) }}',
columns: [
{ data: 'DT_RowIndex', name: 'DT_RowIndex', orderable: false, searchable: false },
{ data: 'media_name', name: 'media_name' },
{ data: 'company_name', name: 'company_name' },
{ data: 'email', name: 'email' },
{ data: 'type', name: 'type' },
{ data: 'classification', name: 'classification' },
{ data: 'status', name: 'status' },
// { data: 'action', name: 'action', orderable: false, searchable: false },
{ data: 'created_at', name: 'created_at', visible: false },
{ data: 'id', name: 'id', orderable: true, searchable: false, visible: false },
],
language: datatableLanguage,
autoWidth: false,
order: [[7, 'desc']],
pagingType: "simple",
lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']],
scrollX: true
});
});
</script>
@endif
@if ($datatable === 'cooperation_request')
<script>
$(document).ready(function() {
$('#cooperationRequestsTable').DataTable({
processing: true,
serverSide: true,
ajax: '{{ route('dashboard.cooperations.requests.data') }}',
columns: [
{ data: 'DT_RowIndex', name: 'DT_RowIndex', orderable: false, searchable: false },
{ data: 'name', name: 'name' },
{ data: 'start_date', name: 'start_date' },
{ data: 'end_date', name: 'end_date' },
{ data: 'posted_at', name: 'posted_at' },
{ data: 'status', name: 'status' },
{ data: 'action', name: 'action', orderable: false, searchable: false },
{ data: 'created_at', name: 'created_at', visible: false },
{ data: 'id', name: 'id', orderable: true, searchable: false, visible: false },
],
language: datatableLanguage,
autoWidth: false,
order: [[6, 'desc']],
pagingType: "simple",
lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']],
scrollX: true,
// scrollY: "300px",
// scrollCollapse: true,
});
});
</script>
@endif
@if ($datatable === 'content_recap')
<script>
$(document).ready(function() {

View File

@ -45,6 +45,7 @@ function deleteItem(url, message) {
});
}
</script>
<script>
$(document).ready(function() {
$.ajaxSetup({
@ -92,6 +93,7 @@ function statusAction(url, message, confirmButtonAction) {
});
}
</script>
@if (session('success-status'))
<script>
Swal.fire({
@ -113,3 +115,100 @@ function statusAction(url, message, confirmButtonAction) {
});
</script>
@endif
<script>
$('#submitButton').click(function(e) {
e.preventDefault();
Swal.fire({
title: 'Apakah Anda yakin?',
text: 'Pastikan data yang Anda masukkan sudah benar.',
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Ya, kirim!',
cancelButtonText: 'Batal',
reverseButtons: true
}).then((result) => {
if (result.isConfirmed) {
console.log("Form akan dikirim...");
$('#myForm').off('submit').submit(); // Pastikan hanya submit 1x
}
});
});
</script>
<script>
function showDetail(reason) {
Swal.fire({
title: 'Alasan Penolakan', // Judul utama
html: `
<div class="card" style="border: none; border-radius: 12px; padding: 15px; text-align: left; background-color: #f8f9fa; max-width: 500px; margin: auto; box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1); margin-top:0.5rem;">
<div class="card-body" style="font-size: 14px; color: #555; line-height: 1.6;">
<p style="margin: 0; padding: 10px 0; font-style: italic; color: #888;">
${reason || "<i>Tidak ada alasan yang diberikan.</i>"}
</p>
</div>
</div>
`,
icon: 'info',
confirmButtonText: 'Tutup',
confirmButtonColor: '#3085d6', // Mengubah warna tombol
padding: '25px', // Padding sekitar modal
backdrop: true, // Mengaktifkan backdrop
customClass: {
popup: 'custom-popup',
}
});
}
</script>
<script>
$(document).ready(function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
});
function itemConfirm(url, message, buttonText) {
Swal.fire({
title: 'Apakah Anda yakin?',
text: message,
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: buttonText,
cancelButtonText: 'Batal',
reverseButtons: true
}).then((result) => {
if (result.isConfirmed) {
$.ajax({
type: "POST",
url: url,
success: function(response) {
$('#usersTable').DataTable().ajax.reload();
Swal.fire(
'Berhasil!',
response.message,
'success'
).then(() => {
location.reload();
});
},
error: function(xhr) {
Swal.fire(
'Terjadi kesalahan!',
xhr.responseText,
'error'
);
}
});
}
});
}
</script>

View File

@ -54,8 +54,13 @@
<!-- app-root @e -->
<!-- JavaScript -->
<script src="{{asset('assets/dashboard/js/bundle.js?ver=3.0.3')}}"></script>
@if (isset($proposal))
<script src="{{asset('assets/dashboard/js/script-wizard.js?ver=3.0.3')}}"></script>
@else
<script src="{{asset('assets/dashboard/js/scripts.js?ver=3.0.3')}}"></script>
@endif
<script src="{{asset('assets/dashboard/js/custom.js')}}"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js"></script>
@include('partials.app.sweetalert')

View File

@ -32,10 +32,10 @@
</li><!-- .nk-menu-item -->
@if (is_role([3]))
<li class="nk-menu-item">
<a href="javascript:void(0);" class="nk-menu-link">
<span class="nk-menu-icon"><em class="icon ni ni-bell"></em></span>
<span class="nk-menu-text">Ajakan Kerjasama</span>
<span class="nk-menu-badge bg-info text-white">10</span>
<a href="{{route('dashboard.cooperations.requests.index')}}" class="nk-menu-link {{$page === 'cooperation_requests' ? 'active-page' : ''}}">
<span class="nk-menu-icon"><em class="icon ni ni-star"></em></span>
<span class="nk-menu-text">Ajuan Kerjasama</span>
<span class="nk-menu-badge bg-success text-white" style="color: white !important;">{{get_cooperation_notif()}}</span>
</a>
</li><!-- .nk-menu-item -->
@endif
@ -104,7 +104,7 @@
</li><!-- .nk-menu-item -->
@endif
<li class="nk-menu-heading">
<h6 class="overline-title text-primary-alt">Data</h6>
<h6 class="overline-title text-primary-alt">Data @if(is_role(['3'])) Saya @endif</h6>
</li><!-- .nk-menu-item -->
<li class="nk-menu-item">
<a href="{{route('dashboard.companies.index')}}" class="nk-menu-link {{$page === 'companies' ? 'active-page' : ''}}">
@ -128,11 +128,12 @@
<h6 class="overline-title text-primary-alt">Kerjasama {{is_role(['1']) ? 'Eksternal' : ''}}</h6>
</li><!-- .nk-menu-item -->
<li class="nk-menu-item">
<a href="javascript:void(0);" class="nk-menu-link">
<a href="{{route('dashboard.cooperations.index')}}" class="nk-menu-link {{$page === 'cooperations' ? 'active-page' : ''}}">
<span class="nk-menu-icon"><em class="icon ni ni-globe"></em></span>
<span class="nk-menu-text">Kerjasama Media</span>
</a>
</li><!-- .nk-menu-item -->
@if (is_role(['1']))
<li class="nk-menu-item">
<a href="javascript:void(0);" class="nk-menu-link">
<span class="nk-menu-icon"><em class="icon ni ni-briefcase"></em></span>
@ -145,6 +146,7 @@
<span class="nk-menu-text">Laporan</span>
</a>
</li><!-- .nk-menu-item -->
@endif
<li class="nk-menu-item">
<a href="javascript:void(0);" class="nk-menu-link">
<span class="nk-menu-icon"><em class="icon ni ni-check-circle-cut"></em></span>

View File

@ -5,12 +5,14 @@
use App\Http\Controllers\Dashboard\ClassificationController;
use App\Http\Controllers\Dashboard\CompanyController;
use App\Http\Controllers\Dashboard\ContentRecapController;
use App\Http\Controllers\Dashboard\CooperationRequestController;
use App\Http\Controllers\Dashboard\DatatableController;
use App\Http\Controllers\Dashboard\GovernmentAgencyController;
use App\Http\Controllers\Dashboard\IssueManagementController;
use App\Http\Controllers\Dashboard\JournalistController;
use App\Http\Controllers\Dashboard\LocationController;
use App\Http\Controllers\Dashboard\MediaController;
use App\Http\Controllers\Dashboard\MediaCooperationController;
use App\Http\Controllers\Dashboard\MediaMonitoringController;
use App\Http\Controllers\Dashboard\NewsController;
use App\Http\Controllers\Dashboard\OverviewController;
@ -224,19 +226,55 @@
});
});
Route::middleware('role:1,4')->group(function(){});
Route::prefix('content-recaps')->name('content.recaps.')->group(function(){
Route::controller(ContentRecapController::class)->group(function(){
Route::prefix('cooperations')->name('cooperations.')->group(function(){
Route::controller(MediaCooperationController::class)->group(function(){
Route::get('/', 'index')->name('index');
Route::get('/{id}/show', 'show')->name('show');
Route::get('/create', 'create')->name('create');
Route::post('/', 'store')->name('store');
Route::get('/{id}/show', 'show')->name('show');
Route::get('/{id}/edit', 'edit')->name('edit');
Route::put('/{id}', 'update')->name('update');
Route::delete('/{id}', 'destroy')->name('destroy');
});
Route::get('/data', [DatatableController::class, 'contentRecap'])->name('data');
Route::get('/data', [DatatableController::class, 'cooperation'])->name('data');
Route::get('/data-media/{id}', [DatatableController::class, 'cooperationMedia'])->name('media.data');
});
Route::middleware('role:1,3')->group(function(){
Route::prefix('cooperations-requests')->name('cooperations.requests.')->group(function(){
Route::controller(CooperationRequestController::class)->group(function(){
Route::get('/', 'index')->name('index');
Route::get('/{id}/show', 'show')->name('show');
Route::get('/create', 'create')->name('create');
Route::post('/', 'store')->name('store');
Route::post('/{id}/accept', 'accept')->name('accept');
Route::get('/{id}/proposal', 'proposal')->name('proposal');
Route::get('/{id}/reject', 'reject')->name('reject');
Route::post('/{id}/reject', 'rejectAction')->name('reject.action');
Route::get('/{id}/edit', 'edit')->name('edit');
Route::put('/{id}', 'update')->name('update');
Route::delete('/{id}', 'destroy')->name('destroy');
});
Route::get('/data', [DatatableController::class, 'cooperationRequest'])->name('data');
});
});
Route::middleware('role:1,4')->group(function(){
Route::prefix('content-recaps')->name('content.recaps.')->group(function(){
Route::controller(ContentRecapController::class)->group(function(){
Route::get('/', 'index')->name('index');
Route::get('/create', 'create')->name('create');
Route::post('/', 'store')->name('store');
Route::get('/{id}/show', 'show')->name('show');
Route::get('/{id}/edit', 'edit')->name('edit');
Route::put('/{id}', 'update')->name('update');
Route::delete('/{id}', 'destroy')->name('destroy');
});
Route::get('/data', [DatatableController::class, 'contentRecap'])->name('data');
});
});
Route::middleware('role:1,2')->group(function(){