Files
expense/app/Http/Controllers/Backend/ReportController.php
T

404 lines
14 KiB
PHP
Raw Normal View History

2025-01-08 14:12:45 +07:00
<?php
declare(strict_types=1);
namespace App\Http\Controllers\Backend;
use App\Http\Controllers\Controller;
use App\Models\AuditTrail;
use App\Models\FormUpCountry;
use App\Models\FormEntertaimentPresentation;
use App\Models\FormMeetingSeminar;
use App\Models\FormVehicleRunningCost;
use App\Models\FormOthers;
2025-01-08 15:01:42 +07:00
use App\Models\UserHasCabang;
use App\Models\Cabang;
2025-01-08 14:12:45 +07:00
class ReportController extends Controller
{
2025-01-08 15:36:08 +07:00
public function upcountry()
2025-01-08 14:12:45 +07:00
{
2025-01-08 15:01:42 +07:00
$role = auth()->user()->getRoleNames()[0];
$cabangs = [];
2025-01-08 15:36:08 +07:00
$forms = null;
2025-01-08 15:01:42 +07:00
if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') {
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
if ($region_id) {
$users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) {
$query->where('region_id', $region_id);
})->get();
$userIds = $users->pluck('user_id')->toArray();
$cabangs = Cabang::where('region_id', $region_id)->get();
2025-01-08 15:36:08 +07:00
$forms = FormUpCountry::whereIn('user_id', $userIds)->get();
2025-01-08 15:01:42 +07:00
}
} else if ($role == 'Area Manager Cabang') {
$cabang_id = auth()->user()->getMyCabangAndRegionId()['cabang'];
if ($cabang_id) {
$users = UserHasCabang::where('cabang_id', $cabang_id)->get();
$userIds = $users->pluck('user_id')->toArray();
$cabangs = Cabang::where('id', $cabang_id)->get();
2025-01-08 15:36:08 +07:00
$forms = FormUpCountry::whereIn('user_id', $userIds)->get();
2025-01-08 15:01:42 +07:00
}
} else if ($role == 'Medical Representatif') {
$userId = auth()->user()->id;
$cabangs = null;
2025-01-08 15:36:08 +07:00
$forms = FormUpCountry::where('user_id', $userId)->get();
2025-01-08 15:01:42 +07:00
} else {
$cabangs = Cabang::all();
2025-01-08 15:36:08 +07:00
$forms = FormUpCountry::all();
2025-01-08 15:01:42 +07:00
}
2025-01-08 14:12:45 +07:00
2025-01-08 15:01:42 +07:00
// get all params in url
$params = request()->all();
if($params) {
if ($params['cabang']) {
$cabang = Cabang::where('code', $params['cabang'])->first();
$users = UserHasCabang::where('cabang_id', $cabang->id)->get();
$userIds = $users->pluck('user_id')->toArray();
2025-01-08 15:36:08 +07:00
$forms = $forms->whereIn('user_id', $userIds);
2025-01-08 15:01:42 +07:00
}
if($params['start_date'] && $params['end_date']) {
2025-01-08 15:36:08 +07:00
$forms = $forms->whereBetween('tanggal', [$params['start_date'], $params['end_date']]);
2025-01-08 15:01:42 +07:00
}
if($params['start_date'] && !$params['end_date']) {
2025-01-08 15:36:08 +07:00
$forms = $forms->where('tanggal', $params['start_date']);
2025-01-08 15:01:42 +07:00
}
if(!$params['start_date'] && $params['end_date']) {
2025-01-08 15:36:08 +07:00
$forms = $forms->where('tanggal', $params['end_date']);
2025-01-08 15:01:42 +07:00
}
if($params['status']) {
2025-01-08 15:36:08 +07:00
$forms = $forms->where('status', $params['status']);
2025-01-08 15:01:42 +07:00
}
}
2025-01-08 15:36:08 +07:00
return view('backend.pages.report.upcountry', [
2025-01-08 15:01:42 +07:00
'pageInfo' => [
2025-01-08 15:36:08 +07:00
'title' => 'Generate Reports For Form Up Country',
],
'forms' => $forms,
'cabang' => $cabangs
]);
}
public function vehicle()
{
$role = auth()->user()->getRoleNames()[0];
$cabangs = [];
$forms = null;
if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') {
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
if ($region_id) {
$users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) {
$query->where('region_id', $region_id);
})->get();
$userIds = $users->pluck('user_id')->toArray();
$cabangs = Cabang::where('region_id', $region_id)->get();
$forms = FormVehicleRunningCost::whereIn('user_id', $userIds)->get();
}
} else if ($role == 'Area Manager Cabang') {
$cabang_id = auth()->user()->getMyCabangAndRegionId()['cabang'];
if ($cabang_id) {
$users = UserHasCabang::where('cabang_id', $cabang_id)->get();
$userIds = $users->pluck('user_id')->toArray();
$cabangs = Cabang::where('id', $cabang_id)->get();
$forms = FormVehicleRunningCost::whereIn('user_id', $userIds)->get();
}
} else if ($role == 'Medical Representatif') {
$userId = auth()->user()->id;
$cabangs = null;
$forms = FormVehicleRunningCost::where('user_id', $userId)->get();
} else {
$cabangs = Cabang::all();
$forms = FormVehicleRunningCost::all();
}
// get all params in url
$params = request()->all();
if($params) {
if ($params['cabang']) {
$cabang = Cabang::where('code', $params['cabang'])->first();
$users = UserHasCabang::where('cabang_id', $cabang->id)->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
}
if($params['start_date'] && $params['end_date']) {
$forms = $forms->whereBetween('tanggal', [$params['start_date'], $params['end_date']]);
}
if($params['start_date'] && !$params['end_date']) {
$forms = $forms->where('tanggal', $params['start_date']);
}
if(!$params['start_date'] && $params['end_date']) {
$forms = $forms->where('tanggal', $params['end_date']);
}
if($params['status']) {
$forms = $forms->where('status', $params['status']);
}
}
return view('backend.pages.report.vehicle', [
'pageInfo' => [
'title' => 'Generate Reports For Form Vehicle Running Cost',
],
'forms' => $forms,
'cabang' => $cabangs
]);
}
public function entertainment()
{
$role = auth()->user()->getRoleNames()[0];
$cabangs = [];
$forms = null;
if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') {
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
if ($region_id) {
$users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) {
$query->where('region_id', $region_id);
})->get();
$userIds = $users->pluck('user_id')->toArray();
$cabangs = Cabang::where('region_id', $region_id)->get();
$forms = FormEntertaimentPresentation::whereIn('user_id', $userIds)->get();
}
} else if ($role == 'Area Manager Cabang') {
$cabang_id = auth()->user()->getMyCabangAndRegionId()['cabang'];
if ($cabang_id) {
$users = UserHasCabang::where('cabang_id', $cabang_id)->get();
$userIds = $users->pluck('user_id')->toArray();
$cabangs = Cabang::where('id', $cabang_id)->get();
$forms = FormEntertaimentPresentation::whereIn('user_id', $userIds)->get();
}
} else if ($role == 'Medical Representatif') {
$userId = auth()->user()->id;
$cabangs = null;
$forms = FormEntertaimentPresentation::where('user_id', $userId)->get();
} else {
$cabangs = Cabang::all();
$forms = FormEntertaimentPresentation::all();
}
// get all params in url
$params = request()->all();
if($params) {
if ($params['cabang']) {
$cabang = Cabang::where('code', $params['cabang'])->first();
$users = UserHasCabang::where('cabang_id', $cabang->id)->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
}
if($params['start_date'] && $params['end_date']) {
$forms = $forms->whereBetween('tanggal', [$params['start_date'], $params['end_date']]);
}
if($params['start_date'] && !$params['end_date']) {
$forms = $forms->where('tanggal', $params['start_date']);
}
if(!$params['start_date'] && $params['end_date']) {
$forms = $forms->where('tanggal', $params['end_date']);
}
if($params['status']) {
$forms = $forms->where('status', $params['status']);
}
}
return view('backend.pages.report.entertainment', [
'pageInfo' => [
'title' => 'Generate Reports For Form Entertainment & Presentation',
],
'forms' => $forms,
'cabang' => $cabangs
]);
}
public function meeting()
{
$role = auth()->user()->getRoleNames()[0];
$cabangs = [];
$forms = null;
if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') {
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
if ($region_id) {
$users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) {
$query->where('region_id', $region_id);
})->get();
$userIds = $users->pluck('user_id')->toArray();
$cabangs = Cabang::where('region_id', $region_id)->get();
$forms = FormMeetingSeminar::whereIn('user_id', $userIds)->get();
}
} else if ($role == 'Area Manager Cabang') {
$cabang_id = auth()->user()->getMyCabangAndRegionId()['cabang'];
if ($cabang_id) {
$users = UserHasCabang::where('cabang_id', $cabang_id)->get();
$userIds = $users->pluck('user_id')->toArray();
$cabangs = Cabang::where('id', $cabang_id)->get();
$forms = FormMeetingSeminar::whereIn('user_id', $userIds)->get();
}
} else if ($role == 'Medical Representatif') {
$userId = auth()->user()->id;
$cabangs = null;
$forms = FormMeetingSeminar::where('user_id', $userId)->get();
} else {
$cabangs = Cabang::all();
$forms = FormMeetingSeminar::all();
}
// get all params in url
$params = request()->all();
if($params) {
if ($params['cabang']) {
$cabang = Cabang::where('code', $params['cabang'])->first();
$users = UserHasCabang::where('cabang_id', $cabang->id)->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
}
if($params['start_date'] && $params['end_date']) {
$forms = $forms->whereBetween('tanggal', [$params['start_date'], $params['end_date']]);
}
if($params['start_date'] && !$params['end_date']) {
$forms = $forms->where('tanggal', $params['start_date']);
}
if(!$params['start_date'] && $params['end_date']) {
$forms = $forms->where('tanggal', $params['end_date']);
}
if($params['status']) {
$forms = $forms->where('status', $params['status']);
}
}
return view('backend.pages.report.meeting', [
'pageInfo' => [
'title' => 'Generate Reports For Form Meeting & Seminar',
],
'forms' => $forms,
'cabang' => $cabangs
]);
}
public function others()
{
$role = auth()->user()->getRoleNames()[0];
$cabangs = [];
$forms = null;
if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') {
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
if ($region_id) {
$users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) {
$query->where('region_id', $region_id);
})->get();
$userIds = $users->pluck('user_id')->toArray();
$cabangs = Cabang::where('region_id', $region_id)->get();
$forms = FormOthers::whereIn('user_id', $userIds)->get();
}
} else if ($role == 'Area Manager Cabang') {
$cabang_id = auth()->user()->getMyCabangAndRegionId()['cabang'];
if ($cabang_id) {
$users = UserHasCabang::where('cabang_id', $cabang_id)->get();
$userIds = $users->pluck('user_id')->toArray();
$cabangs = Cabang::where('id', $cabang_id)->get();
$forms = FormOthers::whereIn('user_id', $userIds)->get();
}
} else if ($role == 'Medical Representatif') {
$userId = auth()->user()->id;
$cabangs = null;
$forms = FormOthers::where('user_id', $userId)->get();
} else {
$cabangs = Cabang::all();
$forms = FormOthers::all();
}
// get all params in url
$params = request()->all();
if($params) {
if ($params['cabang']) {
$cabang = Cabang::where('code', $params['cabang'])->first();
$users = UserHasCabang::where('cabang_id', $cabang->id)->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
}
if($params['start_date'] && $params['end_date']) {
$forms = $forms->whereBetween('tanggal', [$params['start_date'], $params['end_date']]);
}
if($params['start_date'] && !$params['end_date']) {
$forms = $forms->where('tanggal', $params['start_date']);
}
if(!$params['start_date'] && $params['end_date']) {
$forms = $forms->where('tanggal', $params['end_date']);
}
if($params['status']) {
$forms = $forms->where('status', $params['status']);
}
}
return view('backend.pages.report.others', [
'pageInfo' => [
'title' => 'Generate Reports For Form Others',
2025-01-08 15:01:42 +07:00
],
'forms' => $forms,
'cabang' => $cabangs
]);
2025-01-08 14:12:45 +07:00
}
}