feat: add chart in overview financial role

This commit is contained in:
myqnrrhmn 2025-07-01 10:46:37 +07:00
parent 5b65ffce0a
commit 4988247336
12 changed files with 362 additions and 28 deletions

View File

@ -2180,7 +2180,7 @@ class="text-dark"
// $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') {
if (is_role(['1', '5']) && $data->status === '0') {
$dropdown .= '<li><a href="'.$processUrl.'"><em class="icon ni ni-loader"></em><span>Proses</span></a></li>';
}

View File

@ -31,7 +31,11 @@ public function store(OrderRequest $request, $id){
$validatedData = $request->validated();
try{
$validatedData['image'] = store_file($validatedData['image'], '/uploads/media-orders')['randomFileName'];
if($request->hasFile('image')){
$validatedData['image'] = store_file($validatedData['image'], '/uploads/media-orders')['randomFileName'];
}else{
$validatedData['image'] = null;
}
$cooperation = Cooperation::findOrFail(decrypt_id($id));
$validatedData['cooperation_id'] = $cooperation->id;

View File

@ -5,6 +5,7 @@
use App\Http\Controllers\Controller;
use App\Models\ContentRecap;
use App\Models\Cooperation;
use App\Models\CooperationCompletion;
use App\Models\IssueManagement;
use App\Models\Media;
use App\Models\MediaMonitoring;
@ -115,6 +116,17 @@ public function index(){
// Data kalender media order
$data['mediaOrders'] = Order::with(['cooperation'])->get();
}else if(is_role(['5'])){
// Statistik Penyelesaian Kerjasama
$cooperationCompletion = CooperationCompletion::all();
$cooperationCompletionCounts = $cooperationCompletion->groupBy('status')->map(function ($group) {
return $group->count();
});
$data['cooperationCompletionWaiting'] = $cooperationCompletionCounts->get('0', 0);
$data['cooperationCompletionAccepted'] = $cooperationCompletionCounts->get('1', 0);
$data['cooperationCompletionRejected'] = $cooperationCompletionCounts->get('2', 0);
}
return view('dashboard.overview.index', $data);

View File

@ -1,5 +1,5 @@
@include('partials.dashboard.head')
@include('partials.dashboard.sidebar', ['page' => 'cooperations'])
@include('partials.dashboard.sidebar', ['page' => 'cooperation-completions'])
@include('partials.dashboard.header')
<!-- content @s -->
<div class="nk-content ">

View File

@ -1,5 +1,5 @@
@include('partials.dashboard.head')
@include('partials.dashboard.sidebar', ['page' => 'cooperations'])
@include('partials.dashboard.sidebar', ['page' => 'cooperation-completions'])
@include('partials.dashboard.header')
<!-- content @s -->
<div class="nk-content ">

View File

@ -0,0 +1,286 @@
@include('partials.dashboard.head')
@include('partials.dashboard.sidebar', ['page' => 'overview'])
@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">Ikhtisar</h3>
</div><!-- .nk-block-head-content -->
{{-- {{dd($cooperationRequests)}} --}}
<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="javascript:void(0);" class="btn btn-white btn-dim btn-outline-light"><em class="d-none d-sm-inline icon ni ni-calender-date"></em><span>{{idn_date(now(), 'l, d F Y')}}</a>
</div>
</li>
</ul>
</div>
</div>
</div><!-- .nk-block-head-content -->
</div><!-- .nk-block-between -->
</div><!-- .nk-block-head -->
<div class="nk-block">
<div class="row g-gs">
@if (is_role(['1']))
<div class="col-xxl-3 col-md-6">
<div class="card card-full overflow-hidden">
<div class="nk-ecwg nk-ecwg7 h-100">
<div class="card-inner flex-grow-1">
<div class="card-title-group mb-4">
<div class="card-title">
<h6 class="title">Statistik Isu</h6>
</div>
</div>
<div class="nk-ecwg7-ck">
<canvas class="ecommerce-doughnut-s1" id="issueStatistics"></canvas>
</div>
<ul class="nk-ecwg7-legends">
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#FE4F2D"></span>
<span>Krisis</span>
</div>
</li>
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#E50046"></span>
<span>Negatif</span>
</div>
</li>
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#5CB338"></span>
<span>Netral</span>
</div>
</li>
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#3572EF"></span>
<span>Positif</span>
</div>
</li>
</ul>
</div><!-- .card-inner -->
</div>
</div><!-- .card -->
</div><!-- .col -->
<div class="col-xxl-3 col-md-6">
<div class="card card-full overflow-hidden">
<div class="nk-ecwg nk-ecwg7 h-100">
<div class="card-inner flex-grow-1">
<div class="card-title-group mb-4">
<div class="card-title">
<h6 class="title">Statistik Kanal Monitoring Media</h6>
</div>
</div>
<div class="nk-ecwg7-ck">
<canvas class="ecommerce-doughnut-s1" id="mediaMonitoringStatistic"></canvas>
</div>
<ul class="nk-ecwg7-legends">
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#1877F2"></span>
<span>Facebook</span>
</div>
</li>
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#1DA1F2"></span>
<span>Twitter</span>
</div>
</li>
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#28A745"></span>
<span>Website</span>
</div>
</li>
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#FF0000"></span>
<span>YouTube</span>
</div>
</li>
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#E4405F"></span>
<span>Instagram</span>
</div>
</li>
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#00F2EA"></span>
<span>TikTok</span>
</div>
</li>
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#333333"></span>
<span>Cetak</span>
</div>
</li>
</ul>
</div><!-- .card-inner -->
</div>
</div><!-- .card -->
</div><!-- .col -->
<div class="col-xxl-3 col-md-6">
<div class="card card-full overflow-hidden">
<div class="nk-ecwg nk-ecwg7 h-100">
<div class="card-inner flex-grow-1">
<div class="card-title-group mb-4">
<div class="card-title">
<h6 class="title">Statistik Media Order</h6>
</div>
</div>
<div class="nk-ecwg7-ck">
<canvas class="ecommerce-doughnut-s1" id="mediaOrderStatistic"></canvas>
</div>
<ul class="nk-ecwg7-legends">
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#FFB200"></span>
<span>Menunggu</span>
</div>
</li>
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#4F75FF"></span>
<span>Diterima</span>
</div>
</li>
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#E50046"></span>
<span>Ditolak</span>
</div>
</li>
</ul>
</div><!-- .card-inner -->
</div>
</div><!-- .card -->
</div><!-- .col -->
<div class="col-xxl-3 col-md-6">
<div class="card card-full overflow-hidden">
<div class="nk-ecwg nk-ecwg7 h-100">
<div class="card-inner flex-grow-1">
<div class="card-title-group mb-4">
<div class="card-title">
<h6 class="title">Statistik Kanal Rekap Konten</h6>
</div>
</div>
<div class="nk-ecwg7-ck">
<canvas class="ecommerce-doughnut-s1" id="recapContentChannelStatistic"></canvas>
</div>
<ul class="nk-ecwg7-legends">
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#1877F2"></span>
<span>Facebook</span>
</div>
</li>
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#1DA1F2"></span>
<span>Twitter</span>
</div>
</li>
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#28A745"></span>
<span>Website</span>
</div>
</li>
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#FF0000"></span>
<span>YouTube</span>
</div>
</li>
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#E4405F"></span>
<span>Instagram</span>
</div>
</li>
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#00F2EA"></span>
<span>TikTok</span>
</div>
</li>
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#333333"></span>
<span>Cetak</span>
</div>
</li>
</ul>
</div><!-- .card-inner -->
</div>
</div><!-- .card -->
</div><!-- .col -->
@elseif (is_role(['5']))
<div class="col-xxl-3 col-md-6">
<div class="card card-full overflow-hidden">
<div class="nk-ecwg nk-ecwg7 h-100">
<div class="card-inner flex-grow-1">
<div class="card-title-group mb-4">
<div class="card-title">
<h6 class="title">Statistik Penyelesaian Kerjasama</h6>
</div>
</div>
<div class="nk-ecwg7-ck">
<canvas class="ecommerce-doughnut-s1" id="cooperationCompletionsStatisti"></canvas>
</div>
<ul class="nk-ecwg7-legends">
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#FE4F2D"></span>
<span>Menunggu</span>
</div>
</li>
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#E50046"></span>
<span>Diterima</span>
</div>
</li>
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#5CB338"></span>
<span>Ditolak</span>
</div>
</li>
</ul>
</div><!-- .card-inner -->
</div>
</div><!-- .card -->
</div><!-- .col -->
@endif
</div><!-- .row -->
</div><!-- .nk-block -->
@if (!is_role(['5']))
<div class="nk-block">
<div class="card">
<div class="card-inner">
<div id="calendar" class="nk-calendar"></div>
</div>
</div>
</div>
@endif
</div>
</div>
</div>
</div>
<!-- content @e -->
@include('partials.dashboard.footer', ['overview_page' => true])

View File

@ -229,9 +229,47 @@
</div>
</div><!-- .card -->
</div><!-- .col -->
@elseif (is_role(['5']))
<div class="col-xxl-3 col-md-6">
<div class="card card-full overflow-hidden">
<div class="nk-ecwg nk-ecwg7 h-100">
<div class="card-inner flex-grow-1">
<div class="card-title-group mb-4">
<div class="card-title">
<h6 class="title">Statistik Penyelesaian Kerjasama</h6>
</div>
</div>
<div class="nk-ecwg7-ck">
<canvas class="ecommerce-doughnut-s1" id="cooperationCompletionsStatistics"></canvas>
</div>
<ul class="nk-ecwg7-legends">
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#FFB200"></span>
<span>Menunggu</span>
</div>
</li>
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#5CB338"></span>
<span>Diterima</span>
</div>
</li>
<li>
<div class="title">
<span class="dot dot-lg sq" data-bg="#E50046"></span>
<span>Ditolak</span>
</div>
</li>
</ul>
</div><!-- .card-inner -->
</div>
</div><!-- .card -->
</div><!-- .col -->
@endif
</div><!-- .row -->
</div><!-- .nk-block -->
@if (!is_role(['5']))
<div class="nk-block">
<div class="card">
<div class="card-inner">
@ -239,6 +277,7 @@
</div>
</div>
</div>
@endif
</div>
</div>
</div>

View File

@ -17,7 +17,7 @@
Sistem Media Komunikasi Kabupaten Purwakarta
</div>
<div class="overflow-hidden pt-30px">
<a href="{{route('login')}}" class="btn btn-extra-large fw-600 btn-rounded with-rounded btn-white btn-box-shadow d-table d-lg-inline-block lg-mb-15px md-mx-auto">Masuk<span class="text-white" style="background-color: #3572EF;"><i class="fa-solid fa-arrow-right"></i></span></a>
<a href="{{Auth::check() ? route('dashboard.overview') : route('login')}}" class="btn btn-extra-large fw-600 btn-rounded with-rounded btn-white btn-box-shadow d-table d-lg-inline-block lg-mb-15px md-mx-auto">{{Auth::check() ? 'Dasbor' : 'Masuk'}}<span class="text-white" style="background-color: #3572EF;"><i class="fa-solid fa-arrow-right"></i></span></a>
</div>
</div>
</div>

View File

@ -744,6 +744,17 @@ function ecommerceBarS1(selector, set_data) {
data: ["{{ $facebookContentRecap }}", "{{ $twitterContentRecap }}", "{{ $websiteContentRecap }}", "{{ $youtubeContentRecap }}", "{{ $instagramContentRecap }}", "{{ $tiktokContentRecap }}", "{{ $cetakContentRecap }}"]
}]
};
@elseif(is_role(['5']))
var cooperationCompletionsStatistics = {
labels: ["Menunggu", "Diterima", "Ditolak"],
dataUnit: 'Data',
legend: false,
datasets: [{
borderColor: "#fff",
background: ["#FFB200", "#5CB338", "#E50046"],
data: ["{{$cooperationCompletionWaiting}}", "{{$cooperationCompletionAccepted}}", "{{$cooperationCompletionRejected}}"]
}]
};
@endif
function ecommerceDoughnutS1(selector, set_data) {

View File

@ -149,32 +149,14 @@
<span class="nk-menu-text">Penyelesaian Kerjasama</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>
<span class="nk-menu-text">Media Order</span>
</a>
</li><!-- .nk-menu-item -->
<li class="nk-menu-item">
<a href="javascript:void(0);" class="nk-menu-link">
<span class="nk-menu-icon"><em class="icon ni ni-report"></em></span>
<span class="nk-menu-text">Laporan</span>
</a>
</li><!-- .nk-menu-item -->
<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>
<span class="nk-menu-text">Selesai</span>
</a>
</li><!-- .nk-menu-item -->
@endif --}}
@if (!is_role(['5']))
<li class="nk-menu-item">
<a href="{{route('dashboard.cooperation.archives.index')}}" class="nk-menu-link {{$page === 'cooperation_archives' ? 'active-page' : ''}}">
<span class="nk-menu-icon"><em class="icon ni ni-archive"></em></span>
<span class="nk-menu-text">Arsip</span>
</a>
</li><!-- .nk-menu-item -->
@endif
@if (is_role(['1', '2', '4']))
<li class="nk-menu-heading">
<h6 class="overline-title text-primary-alt">Monitoring</h6>

View File

@ -60,7 +60,7 @@
<div class="header-button ms-30px xxl-ms-10px xs-ms-0">
<a href="{{Auth::check() ? route('dashboard.overview') : route('login')}}" class="btn btn-dark-gray btn-small btn-rounded btn-box-shadow btn-switch-text fw-600">
<span>
<span class="btn-double-text" data-text="Masuk">Masuk</span>
<span class="btn-double-text" data-text="{{Auth::check() ? 'Dasbor' : 'Masuk'}}">{{Auth::check() ? 'Dasbor' : 'Masuk'}}</span>
</span>
</a>
</div>

View File

@ -474,7 +474,7 @@
});
});
Route::middleware('role:1,3')->group(function(){
Route::middleware('role:1,3,5')->group(function(){
Route::prefix('cooperation-completions')->name('cooperation.completions.')->group(function(){
Route::controller(CooperationCompletionController::class)->group(function(){
Route::get('/', 'index')->name('index');
@ -499,7 +499,7 @@
});
});
Route::middleware('role:1,3')->group(function(){
Route::middleware('role:1,3,5')->group(function(){
Route::prefix('cooperation-archives')->name('cooperation.archives.')->group(function(){
Route::controller(CooperationArchiveController::class)->group(function(){
Route::get('/', 'index')->name('index');