Merge branch 'branch-jagad' into 'main'
Branch jagad See merge request fiqhpratama1/xpendify!18
This commit is contained in:
@@ -0,0 +1,403 @@
|
||||
<?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;
|
||||
use App\Models\UserHasCabang;
|
||||
use App\Models\Cabang;
|
||||
|
||||
class ReportController extends Controller
|
||||
{
|
||||
public function upcountry()
|
||||
{
|
||||
$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 = FormUpCountry::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 = FormUpCountry::whereIn('user_id', $userIds)->get();
|
||||
}
|
||||
} else if ($role == 'Medical Representatif') {
|
||||
$userId = auth()->user()->id;
|
||||
|
||||
$cabangs = null;
|
||||
$forms = FormUpCountry::where('user_id', $userId)->get();
|
||||
} else {
|
||||
$cabangs = Cabang::all();
|
||||
$forms = FormUpCountry::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.upcountry', [
|
||||
'pageInfo' => [
|
||||
'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',
|
||||
],
|
||||
'forms' => $forms,
|
||||
'cabang' => $cabangs
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Master;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Cabang;
|
||||
use App\Helpers\AuditTrailHelper;
|
||||
use App\Models\Admin;
|
||||
use App\Models\CostCentre;
|
||||
use App\Models\Region;
|
||||
|
||||
class CabangController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['cabang.view']);
|
||||
session()->put('redirect_url', route('admin.cabang.index'));
|
||||
|
||||
return view('backend.pages.master.cabang.index', [
|
||||
'cabang' => Cabang::all()
|
||||
]);
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['cabang.create']);
|
||||
return view('backend.pages.master.cabang.create', [
|
||||
'users' => Admin::getUserWhereRoleIsNot('Medical Representatif'),
|
||||
'cost_centres' => CostCentre::all(),
|
||||
'regions' => Region::all()
|
||||
]);
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['cabang.create']);
|
||||
$request->validate([
|
||||
'head_id' => 'required|exists:admins,id',
|
||||
'region_id' => 'required|exists:region,id',
|
||||
'cost_id' => 'required|exists:cost_centre,id',
|
||||
'code' => 'required|unique:cabang',
|
||||
'name' => 'required|unique:cabang'
|
||||
]);
|
||||
|
||||
Cabang::create([
|
||||
'head_id' => $request->head_id,
|
||||
'region_id' => $request->region_id,
|
||||
'cost_id' => $request->cost_id,
|
||||
'code' => $request->code,
|
||||
'name' => $request->name
|
||||
]);
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Record at Cabang Table (' . $request->name . ')');
|
||||
session()->flash('success', 'Cabang has been added successfully.');
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['cabang.edit']);
|
||||
return view('backend.pages.master.cabang.edit', [
|
||||
'cabang' => Cabang::findOrfail($id),
|
||||
'users' => Admin::getUserWhereRoleIsNot('Medical Representatif'),
|
||||
'cost_centres' => CostCentre::all(),
|
||||
'regions' => Region::all()
|
||||
]);
|
||||
}
|
||||
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['cabang.edit']);
|
||||
$request->validate([
|
||||
'head_id' => 'required|exists:admins,id',
|
||||
'region_id' => 'required|exists:region,id',
|
||||
'cost_id' => 'required|exists:cost_centre,id',
|
||||
'code' => 'required|unique:cabang,code,' . $id,
|
||||
'name' => 'required|unique:cabang,name,' . $id
|
||||
]);
|
||||
|
||||
Cabang::findOrfail($id)->update([
|
||||
'head_id' => $request->head_id,
|
||||
'region_id' => $request->region_id,
|
||||
'cost_id' => $request->cost_id,
|
||||
'code' => $request->code,
|
||||
'name' => $request->name
|
||||
]);
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Update', 'Update New Record at Cabang Table (' . $request->name . ')');
|
||||
session()->flash('success', 'Cabang has been updated successfully.');
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['cabang.delete']);
|
||||
$cabang = Cabang::findOrfail($id);
|
||||
AuditTrailHelper::AddAuditTrail('Delete', 'Delete Record at Cabang Table (' . $cabang->name . ')');
|
||||
|
||||
$cabang->delete();
|
||||
session()->flash('success', 'Cabang has been deleted successfully.');
|
||||
return redirect()->back();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Master;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Region;
|
||||
use App\Helpers\AuditTrailHelper;
|
||||
use App\Models\Admin;
|
||||
|
||||
class RegionController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['region.view']);
|
||||
session()->put('redirect_url', route('admin.region.index'));
|
||||
|
||||
return view('backend.pages.master.region.index', [
|
||||
'region' => Region::all()
|
||||
]);
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['region.create']);
|
||||
return view('backend.pages.master.region.create', [
|
||||
'users' => Admin::getUserWhereRoleIsNot('Medical Representatif')
|
||||
]);
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['region.create']);
|
||||
$request->validate([
|
||||
'head_id' => 'required|exists:admins,id',
|
||||
'code' => 'required|unique:region',
|
||||
'name' => 'required|unique:region'
|
||||
]);
|
||||
|
||||
Region::create([
|
||||
'head_id' => $request->head_id,
|
||||
'code' => $request->code,
|
||||
'name' => $request->name
|
||||
]);
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Record at Region Table (' . $request->name . ')');
|
||||
session()->flash('success', 'Region has been added successfully.');
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['region.edit']);
|
||||
return view('backend.pages.master.region.edit', [
|
||||
'region' => Region::findOrfail($id),
|
||||
'users' => Admin::getUserWhereRoleIsNot('Medical Representatif')
|
||||
]);
|
||||
}
|
||||
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['region.edit']);
|
||||
$request->validate([
|
||||
'head_id' => 'required|exists:admins,id',
|
||||
'code' => 'required|unique:region,code,' . $id,
|
||||
'name' => 'required|unique:region,name,' . $id
|
||||
]);
|
||||
|
||||
Region::findOrfail($id)->update([
|
||||
'head_id' => $request->head_id,
|
||||
'code' => $request->code,
|
||||
'name' => $request->name
|
||||
]);
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Update', 'Update New Record at Region Table (' . $request->name . ')');
|
||||
session()->flash('success', 'Region has been updated successfully.');
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['region.delete']);
|
||||
$region = Region::findOrfail($id);
|
||||
AuditTrailHelper::AddAuditTrail('Delete', 'Delete Record at Region Table (' . $region->name . ')');
|
||||
|
||||
$region->delete();
|
||||
session()->flash('success', 'Region has been deleted successfully.');
|
||||
return redirect()->back();
|
||||
}
|
||||
}
|
||||
@@ -27,7 +27,7 @@ class LogLoginActivity
|
||||
|
||||
// Simpan log login
|
||||
LoginLog::create([
|
||||
'user_id' => $user->id,
|
||||
'user_id' => $user->id ?? null,
|
||||
'ip_address' => request()->ip(),
|
||||
'user_agent' => request()->userAgent(),
|
||||
'status' => 'login',
|
||||
|
||||
@@ -27,7 +27,7 @@ class LogLogoutActivity
|
||||
|
||||
// Simpan log logout
|
||||
LoginLog::create([
|
||||
'user_id' => $user->id,
|
||||
'user_id' => $user->id ?? null,
|
||||
'ip_address' => request()->ip(),
|
||||
'user_agent' => request()->userAgent(),
|
||||
'status' => 'logout', // Kolom tambahan untuk menandakan logout
|
||||
|
||||
@@ -167,4 +167,11 @@ class Admin extends Authenticatable
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
public static function getUserWhereRoleIsNot($roleName)
|
||||
{
|
||||
return self::whereDoesntHave('roles', function ($query) use ($roleName) {
|
||||
$query->where('name', $roleName);
|
||||
})->get();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,4 +27,9 @@ class Cabang extends Model
|
||||
{
|
||||
return $this->belongsTo(Region::class, 'region_id');
|
||||
}
|
||||
|
||||
public function cost()
|
||||
{
|
||||
return $this->belongsTo(CostCentre::class, 'cost_id');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ use Database\Seeds\RolePermissionSeeder3;
|
||||
use Database\Seeds\RolePermissionSeeder4;
|
||||
use Database\Seeds\RolePermissionSeeder5;
|
||||
use Database\Seeds\RolePermissionSeeder6;
|
||||
use Database\Seeds\RolePermissionSeeder7;
|
||||
|
||||
class DatabaseSeeder extends Seeder
|
||||
{
|
||||
@@ -30,6 +31,7 @@ class DatabaseSeeder extends Seeder
|
||||
// $this->call(RolePermissionSeeder3::class);
|
||||
// $this->call(RolePermissionSeeder4::class);
|
||||
// $this->call(RolePermissionSeeder5::class);
|
||||
$this->call(RolePermissionSeeder6::class);
|
||||
// $this->call(RolePermissionSeeder6::class);
|
||||
$this->call(RolePermissionSeeder7::class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeds;
|
||||
|
||||
use App\Models\Admin;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Spatie\Permission\Models\Role;
|
||||
use Spatie\Permission\Models\Permission;
|
||||
|
||||
/**
|
||||
* Class RolePermissionSeeder.
|
||||
*
|
||||
* @see https://spatie.be/docs/laravel-permission/v5/basic-usage/multiple-guards
|
||||
*
|
||||
* @package App\Database\Seeds
|
||||
*/
|
||||
class RolePermissionSeeder7 extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
/**
|
||||
* Enable these options if you need same role and other permission for User Model
|
||||
* Else, please follow the below steps for admin guard
|
||||
*/
|
||||
$permissions = [
|
||||
[
|
||||
'group_name' => 'region',
|
||||
'permissions' => [
|
||||
'region.view',
|
||||
'region.edit',
|
||||
'region.create',
|
||||
'region.delete',
|
||||
]
|
||||
],
|
||||
[
|
||||
'group_name' => 'cabang',
|
||||
'permissions' => [
|
||||
'cabang.view',
|
||||
'cabang.edit',
|
||||
'cabang.create',
|
||||
'cabang.delete',
|
||||
]
|
||||
],
|
||||
];
|
||||
|
||||
// Do same for the admin guard for tutorial purposes.
|
||||
$admin = Admin::where('username', 'superadmin')->first();
|
||||
$roleSuperAdmin = $this->maybeCreateSuperAdminRole($admin);
|
||||
|
||||
// Create and Assign Permissions
|
||||
for ($i = 0; $i < count($permissions); $i++) {
|
||||
$permissionGroup = $permissions[$i]['group_name'];
|
||||
for ($j = 0; $j < count($permissions[$i]['permissions']); $j++) {
|
||||
$permissionExist = Permission::where('name', $permissions[$i]['permissions'][$j])->first();
|
||||
if (is_null($permissionExist)) {
|
||||
$permission = Permission::create(
|
||||
[
|
||||
'name' => $permissions[$i]['permissions'][$j],
|
||||
'group_name' => $permissionGroup,
|
||||
'guard_name' => 'admin'
|
||||
]
|
||||
);
|
||||
$roleSuperAdmin->givePermissionTo($permission);
|
||||
$permission->assignRole($roleSuperAdmin);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Assign super admin role permission to superadmin user
|
||||
if ($admin) {
|
||||
$admin->assignRole($roleSuperAdmin);
|
||||
}
|
||||
}
|
||||
|
||||
private function maybeCreateSuperAdminRole($admin): Role
|
||||
{
|
||||
if (is_null($admin)) {
|
||||
$roleSuperAdmin = Role::create(['name' => 'superadmin', 'guard_name' => 'admin']);
|
||||
} else {
|
||||
$roleSuperAdmin = Role::where('name', 'superadmin')->where('guard_name', 'admin')->first();
|
||||
}
|
||||
|
||||
if (is_null($roleSuperAdmin)) {
|
||||
$roleSuperAdmin = Role::create(['name' => 'superadmin', 'guard_name' => 'admin']);
|
||||
}
|
||||
|
||||
return $roleSuperAdmin;
|
||||
}
|
||||
}
|
||||
@@ -26,7 +26,7 @@
|
||||
<section class="content">
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-12 mt-5">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h4 class="header-title float-left">{{ $pageInfo['title'] }}</h4>
|
||||
|
||||
@@ -84,7 +84,9 @@
|
||||
<thead class="bg-light text-capitalize">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>No Expense</th>
|
||||
<th>User</th>
|
||||
<th>Cabang</th>
|
||||
<th>Nama Penerima</th>
|
||||
<th>Tanggal</th>
|
||||
<th>Jenis</th>
|
||||
@@ -111,7 +113,9 @@
|
||||
@foreach ($forms as $item)
|
||||
<tr>
|
||||
<td>{{ $loop->iteration }}</td>
|
||||
<td>{{ $item->expense_number }}</td>
|
||||
<td>{{ $item->user->name }}</td>
|
||||
<td>{{ $item->user->cabang->cabang->name }}</td>
|
||||
<td>{{ $item->name }}</td>
|
||||
<td>{{ \Carbon\Carbon::parse($item->tanggal)->locale('id')->isoFormat('D MMMM Y') }}</td>
|
||||
<td>{{ $item->jenis }}</td>
|
||||
@@ -322,7 +326,7 @@
|
||||
$('#dataTable').DataTable({
|
||||
responsive: false,
|
||||
dom: 'Bfrtip',
|
||||
buttons: ['excel', 'pdf', 'print']
|
||||
buttons: ['excel', 'pdf', 'print', 'colvis'],
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -86,6 +86,7 @@
|
||||
<th>#</th>
|
||||
<th>No Expense</th>
|
||||
<th>Nama</th>
|
||||
<th>Cabang</th>
|
||||
<th>Tanggal</th>
|
||||
<th>Allowance</th>
|
||||
<th>Transport Ankot</th>
|
||||
@@ -113,6 +114,7 @@
|
||||
<td>{{ $loop->iteration }}</td>
|
||||
<td>{{ $item->expense_number }}</td>
|
||||
<td>{{ $item->user->name }}</td>
|
||||
<td>{{ $item->user->cabang->cabang->name }}</td>
|
||||
<td>{{ \Carbon\Carbon::parse($item->created_at)->locale('id')->isoFormat('D MMMM Y') }}</td>
|
||||
<td>{{ number_format($item->allowance, 0, ',', '.') }}</td>
|
||||
<td>{{ number_format($item->transport_ankot, 0, ',', '.') }}</td>
|
||||
@@ -324,7 +326,7 @@
|
||||
$('#dataTable').DataTable({
|
||||
responsive: false,
|
||||
dom: 'Bfrtip',
|
||||
buttons: ['excel', 'pdf', 'print']
|
||||
buttons: ['excel', 'pdf', 'print', 'colvis'],
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -84,7 +84,9 @@
|
||||
<thead class="bg-light text-capitalize" style="width: 100%">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>No Expense</th>
|
||||
<th>Nama</th>
|
||||
<th>Cabang</th>
|
||||
<th>Tanggal</th>
|
||||
<th>Jenis</th>
|
||||
<th>Keterangan</th>
|
||||
@@ -109,7 +111,9 @@
|
||||
@foreach ($forms as $item)
|
||||
<tr>
|
||||
<td>{{ $loop->iteration }}</td>
|
||||
<td>{{ $item->expense_number }}</td>
|
||||
<td>{{ $item->user->name }}</td>
|
||||
<td>{{ $item->user->cabang->cabang->name }}</td>
|
||||
<td>{{ \Carbon\Carbon::parse($item->tanggal)->locale('id')->isoFormat('D MMMM Y') }}</td>
|
||||
<td>{{ $item->kategori->name }}</td>
|
||||
<td>{{ $item->keterangan }}</td>
|
||||
@@ -309,7 +313,7 @@
|
||||
$('#dataTable').DataTable({
|
||||
responsive: false,
|
||||
dom: 'Bfrtip',
|
||||
buttons: ['excel', 'pdf', 'print']
|
||||
buttons: ['excel', 'pdf', 'print', 'colvis'],
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -86,6 +86,7 @@
|
||||
<th>#</th>
|
||||
<th>No Expense</th>
|
||||
<th>Nama</th>
|
||||
<th>Cabang</th>
|
||||
<th>Rayon</th>
|
||||
<th>Tanggal</th>
|
||||
<th>Tujuan</th>
|
||||
@@ -113,6 +114,7 @@
|
||||
<td>{{ $loop->iteration }}</td>
|
||||
<td>{{ $item->expense_number }}</td>
|
||||
<td>{{ $item->user->name }}</td>
|
||||
<td>{{ $item->user->cabang->cabang->name }}</td>
|
||||
<td>{{ $item->rayon->code }}</td>
|
||||
<td>{{ \Carbon\Carbon::parse($item->tanggal)->locale('id')->isoFormat('D MMMM Y') }}</td>
|
||||
<td>{{ $item->tujuan }}</td>
|
||||
@@ -350,7 +352,7 @@
|
||||
$('#dataTable').DataTable({
|
||||
responsive: false,
|
||||
dom: 'Bfrtip',
|
||||
buttons: ['excel', 'pdf', 'print']
|
||||
buttons: ['excel', 'pdf', 'print', 'colvis'],
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -84,7 +84,9 @@
|
||||
<thead class="bg-light text-capitalize">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>No Expense</th>
|
||||
<th>Nama</th>
|
||||
<th>Cabang</th>
|
||||
<th>Tanggal</th>
|
||||
<th>Liter</th>
|
||||
<th>Total</th>
|
||||
@@ -112,7 +114,9 @@
|
||||
@foreach ($forms as $item)
|
||||
<tr>
|
||||
<td>{{ $loop->iteration }}</td>
|
||||
<td>{{ $item->expense_number }}</td>
|
||||
<td>{{ $item->user->name }}</td>
|
||||
<td>{{ $item->user->cabang->cabang->name }}</td>
|
||||
<td>{{ \Carbon\Carbon::parse($item->tanggal)->locale('id')->isoFormat('dddd, D MMMM Y HH:mm:ss') }}</td>
|
||||
<td>{{ $item->liter }}</td>
|
||||
<td>{{ number_format($item->total, 0, ',', '.') }}</td>
|
||||
@@ -327,7 +331,7 @@
|
||||
$('#dataTable').DataTable({
|
||||
responsive: false,
|
||||
dom: 'Bfrtip',
|
||||
buttons: ['excel', 'pdf', 'print']
|
||||
buttons: ['excel', 'pdf', 'print', 'colvis'],
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title')
|
||||
Dashboard
|
||||
@endsection
|
||||
|
||||
@section('admin-content')
|
||||
<section class="content-header">
|
||||
<div class="container-fluid">
|
||||
<div class="row mb-2">
|
||||
<div class="col-sm-6">
|
||||
<h1>Tambahkan Cabang Baru</h1>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<ol class="breadcrumb float-sm-right">
|
||||
<li class="breadcrumb-item"><a href="{{ route('dashboard.index') }}">Dashboard</a></li>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="content">
|
||||
<div class="container-fluid">
|
||||
<div class="card card-primary card-outline">
|
||||
<div class="card-body">
|
||||
<form method="POST" action="{{ route('admin.cabang.store') }}">
|
||||
@csrf
|
||||
@include('backend.layouts.partials.messages')
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Pilih Kepala Cabang</label>
|
||||
<select class="form-control" name="head_id">
|
||||
<option value="">Pilih Kepala Cabang</option>
|
||||
@foreach ($users as $user)
|
||||
<option value="{{ $user->id }}">{{ $user->name }} | {{ $user->email }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Pilih Induk Region</label>
|
||||
<select class="form-control" name="region_id">
|
||||
<option value="">Pilih Region</option>
|
||||
@foreach ($regions as $item)
|
||||
<option value="{{ $item->id }}">{{ $item->code }} | {{ $item->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Pilih Cost Centre</label>
|
||||
<select class="form-control" name="cost_id">
|
||||
<option value="">Pilih Cost Centre</option>
|
||||
@foreach ($cost_centres as $item)
|
||||
<option value="{{ $item->id }}">{{ $item->code }} | {{ $item->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Code Cabang</label>
|
||||
<input type="text" class="form-control" name="code">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Nama Cabang</label>
|
||||
<input type="text" class="form-control" name="name">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
@@ -0,0 +1,72 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title')
|
||||
Dashboard
|
||||
@endsection
|
||||
|
||||
@section('admin-content')
|
||||
<section class="content-header">
|
||||
<div class="container-fluid">
|
||||
<div class="row mb-2">
|
||||
<div class="col-sm-6">
|
||||
<h1>Edit Cabang</h1>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<ol class="breadcrumb float-sm-right">
|
||||
<li class="breadcrumb-item"><a href="{{ route('dashboard.index') }}">Dashboard</a></li>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="content">
|
||||
<div class="container-fluid">
|
||||
<div class="card card-primary card-outline">
|
||||
<div class="card-body">
|
||||
<form method="POST" action="{{ route('admin.cabang.update', $cabang->id) }}">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
@include('backend.layouts.partials.messages')
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Pilih Kepala Cabang</label>
|
||||
<select class="form-control" name="head_id">
|
||||
<option value="">Pilih Kepala Cabang</option>
|
||||
@foreach ($users as $user)
|
||||
<option value="{{ $user->id }}" {{ $cabang->head_id == $user->id ? 'selected' : '' }}>{{ $user->name }} | {{ $user->email }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Pilih Induk Region</label>
|
||||
<select class="form-control" name="region_id">
|
||||
<option value="">Pilih Region</option>
|
||||
@foreach ($regions as $item)
|
||||
<option value="{{ $item->id }}" {{ $cabang->region_id == $item->id ? 'selected' : '' }}>{{ $item->code }} | {{ $item->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Pilih Cost Centre</label>
|
||||
<select class="form-control" name="cost_id">
|
||||
<option value="">Pilih Cost Centre</option>
|
||||
@foreach ($cost_centres as $item)
|
||||
<option value="{{ $item->id }}" {{ $cabang->cost_id == $item->id ? 'selected' : '' }}>{{ $item->code }} | {{ $item->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Code Cabang</label>
|
||||
<input type="text" class="form-control" name="code" value="{{ $cabang->code }}">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Nama Cabang</label>
|
||||
<input type="text" class="form-control" name="name" value="{{ $cabang->name }}">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Save</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
@@ -0,0 +1,108 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title')
|
||||
Dashboard
|
||||
@endsection
|
||||
|
||||
@section('admin-content')
|
||||
<section class="content-header">
|
||||
<div class="container-fluid">
|
||||
<div class="row mb-2">
|
||||
<div class="col-sm-6">
|
||||
<h1>Data Master Cabang</h1>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<ol class="breadcrumb float-sm-right">
|
||||
<li class="breadcrumb-item"><a href="{{ route('dashboard.index') }}">Dashboard</a></li>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="content">
|
||||
<div class="container-fluid">
|
||||
<div class="card card-primary card-outline">
|
||||
<div class="card-body">
|
||||
<h4 class="header-title float-left">List Data Cabang</h4>
|
||||
<p class="float-right mb-2">
|
||||
@if (Auth::user()->can('cabang.create'))
|
||||
<a class="btn btn-primary text-white" href="{{ route('admin.cabang.create') }}">
|
||||
Add New Cabang
|
||||
</a>
|
||||
@endif
|
||||
</p>
|
||||
<div class="clearfix"></div>
|
||||
<div class="dataTables_wrapper dt-bootstrap4 mt-2">
|
||||
@include('backend.layouts.partials.messages')
|
||||
<div class="table-responsive">
|
||||
<table id="dataTable"
|
||||
class="table table-bordered table-striped table-head-fixed dataTable dtr-inline"
|
||||
style="width:100%">
|
||||
<thead class="bg-light text-capitalize">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Nama Kepala Cabang</th>
|
||||
<th>Email Kepala Cabang</th>
|
||||
<th>Region</th>
|
||||
<th>Code</th>
|
||||
<th>Nama</th>
|
||||
<th>Cost Centre</th>
|
||||
<th>Aksi</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($cabang as $item)
|
||||
<tr>
|
||||
<td>{{ $loop->index + 1 }}</td>
|
||||
<td>{{ $item->head->name }}</td>
|
||||
<td>{{ $item->head->email }}</td>
|
||||
<td>{{ $item->region->name }}</td>
|
||||
<td>{{ $item->code }}</td>
|
||||
<td>{{ $item->name }}</td>
|
||||
<td>{{ $item->cost->name }} ({{ $item->cost->code }})</td>
|
||||
<td>
|
||||
@if (auth()->user()->can('cabang.edit'))
|
||||
<a class="btn btn-success btn-sm text-white" href="{{ route('admin.cabang.edit', $item->id) }}">Edit</a>
|
||||
@endif
|
||||
@if (auth()->user()->can('cabang.delete'))
|
||||
<a class="btn btn-danger text-white btn-sm" href="javascript:void(0);"
|
||||
onclick="event.preventDefault(); if(confirm('Are you sure you want to delete?')) { document.getElementById('delete-form-{{ $item->id }}').submit(); }">
|
||||
{{ __('Delete') }}
|
||||
</a>
|
||||
|
||||
<form id="delete-form-{{ $item->id }}"
|
||||
action="{{ route('admin.cabang.destroy', $item->id) }}"
|
||||
method="POST" style="display: none;">
|
||||
@method('DELETE')
|
||||
@csrf
|
||||
</form>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
if ($('#dataTable').length) {
|
||||
$('#dataTable').DataTable({
|
||||
responsive: true,
|
||||
dom: 'Bfrtip',
|
||||
buttons: [
|
||||
'excel', 'pdf', 'print'
|
||||
]
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
@@ -37,7 +37,7 @@
|
||||
<label class="form-label">Account Number</label>
|
||||
<input type="text" class="form-control" name="account_number" value="{{ $category->account_number }}">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<button type="submit" class="btn btn-primary">Save</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -54,10 +54,10 @@
|
||||
<td>{{ $category->name }}</td>
|
||||
<td>{{ $category->account_number }}</td>
|
||||
<td>
|
||||
@if (auth()->user()->can('admin.edit'))
|
||||
@if (auth()->user()->can('category.edit'))
|
||||
<a class="btn btn-success btn-sm text-white" href="{{ route('admin.category.edit', $category->id) }}">Edit</a>
|
||||
@endif
|
||||
@if (auth()->user()->can('admin.delete'))
|
||||
@if (auth()->user()->can('category.delete'))
|
||||
<a class="btn btn-danger text-white btn-sm" href="javascript:void(0);"
|
||||
onclick="event.preventDefault(); if(confirm('Are you sure you want to delete?')) { document.getElementById('delete-form-{{ $category->id }}').submit(); }">
|
||||
{{ __('Delete') }}
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
<label class="form-label">Nama Cost Centre</label>
|
||||
<input type="text" class="form-control" name="name" value="{{ $cost->name }}">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<button type="submit" class="btn btn-primary">Save</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -54,10 +54,10 @@
|
||||
<td>{{ $cost->code }}</td>
|
||||
<td>{{ $cost->name }}</td>
|
||||
<td>
|
||||
@if (auth()->user()->can('admin.edit'))
|
||||
@if (auth()->user()->can('cost.edit'))
|
||||
<a class="btn btn-success btn-sm text-white" href="{{ route('admin.cost.edit', $cost->id) }}">Edit</a>
|
||||
@endif
|
||||
@if (auth()->user()->can('admin.delete'))
|
||||
@if (auth()->user()->can('cost.delete'))
|
||||
<a class="btn btn-danger text-white btn-sm" href="javascript:void(0);"
|
||||
onclick="event.preventDefault(); if(confirm('Are you sure you want to delete?')) { document.getElementById('delete-form-{{ $cost->id }}').submit(); }">
|
||||
{{ __('Delete') }}
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<label class="form-label">Nama Rayon</label>
|
||||
<input type="text" class="form-control" name="name" value="{{ $rayon->name }}">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<button type="submit" class="btn btn-primary">Save</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -54,10 +54,10 @@
|
||||
<td>{{ $rayon->code }}</td>
|
||||
<td>{{ $rayon->name }}</td>
|
||||
<td>
|
||||
@if (auth()->user()->can('admin.edit'))
|
||||
@if (auth()->user()->can('rayon.edit'))
|
||||
<a class="btn btn-success btn-sm text-white" href="{{ route('admin.rayon.edit', $rayon->id) }}">Edit</a>
|
||||
@endif
|
||||
@if (auth()->user()->can('admin.delete'))
|
||||
@if (auth()->user()->can('rayon.delete'))
|
||||
<a class="btn btn-danger text-white btn-sm" href="javascript:void(0);"
|
||||
onclick="event.preventDefault(); if(confirm('Are you sure you want to delete?')) { document.getElementById('delete-form-{{ $rayon->id }}').submit(); }">
|
||||
{{ __('Delete') }}
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title')
|
||||
Dashboard
|
||||
@endsection
|
||||
|
||||
@section('admin-content')
|
||||
<section class="content-header">
|
||||
<div class="container-fluid">
|
||||
<div class="row mb-2">
|
||||
<div class="col-sm-6">
|
||||
<h1>Tambahkan Region Baru</h1>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<ol class="breadcrumb float-sm-right">
|
||||
<li class="breadcrumb-item"><a href="{{ route('dashboard.index') }}">Dashboard</a></li>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="content">
|
||||
<div class="container-fluid">
|
||||
<div class="card card-primary card-outline">
|
||||
<div class="card-body">
|
||||
<form method="POST" action="{{ route('admin.region.store') }}">
|
||||
@csrf
|
||||
@include('backend.layouts.partials.messages')
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Pilih Kepala Region</label>
|
||||
<select class="form-control" name="head_id">
|
||||
<option value="">Pilih Kepala Region</option>
|
||||
@foreach ($users as $user)
|
||||
<option value="{{ $user->id }}">{{ $user->name }} | {{ $user->email }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Code Region</label>
|
||||
<input type="text" class="form-control" name="code">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Nama Region</label>
|
||||
<input type="text" class="form-control" name="name">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
@@ -0,0 +1,54 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title')
|
||||
Dashboard
|
||||
@endsection
|
||||
|
||||
@section('admin-content')
|
||||
<section class="content-header">
|
||||
<div class="container-fluid">
|
||||
<div class="row mb-2">
|
||||
<div class="col-sm-6">
|
||||
<h1>Edit Region</h1>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<ol class="breadcrumb float-sm-right">
|
||||
<li class="breadcrumb-item"><a href="{{ route('dashboard.index') }}">Dashboard</a></li>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="content">
|
||||
<div class="container-fluid">
|
||||
<div class="card card-primary card-outline">
|
||||
<div class="card-body">
|
||||
<form method="POST" action="{{ route('admin.region.update', $region->id) }}">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
@include('backend.layouts.partials.messages')
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Pilih Kepala Region</label>
|
||||
<select class="form-control" name="head_id">
|
||||
<option value="">Pilih Kepala Region</option>
|
||||
@foreach ($users as $user)
|
||||
<option value="{{ $user->id }}" {{ $region->head_id == $user->id ? 'selected' : '' }}>{{ $user->name }} | {{ $user->email }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Code Region</label>
|
||||
<input type="text" class="form-control" name="code" value="{{ $region->code }}">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Nama Region</label>
|
||||
<input type="text" class="form-control" name="name" value="{{ $region->name }}">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Save</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
@@ -0,0 +1,104 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title')
|
||||
Dashboard
|
||||
@endsection
|
||||
|
||||
@section('admin-content')
|
||||
<section class="content-header">
|
||||
<div class="container-fluid">
|
||||
<div class="row mb-2">
|
||||
<div class="col-sm-6">
|
||||
<h1>Data Master Region</h1>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<ol class="breadcrumb float-sm-right">
|
||||
<li class="breadcrumb-item"><a href="{{ route('dashboard.index') }}">Dashboard</a></li>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="content">
|
||||
<div class="container-fluid">
|
||||
<div class="card card-primary card-outline">
|
||||
<div class="card-body">
|
||||
<h4 class="header-title float-left">List Data Region</h4>
|
||||
<p class="float-right mb-2">
|
||||
@if (Auth::user()->can('region.create'))
|
||||
<a class="btn btn-primary text-white" href="{{ route('admin.region.create') }}">
|
||||
Add New Region
|
||||
</a>
|
||||
@endif
|
||||
</p>
|
||||
<div class="clearfix"></div>
|
||||
<div class="dataTables_wrapper dt-bootstrap4 mt-2">
|
||||
@include('backend.layouts.partials.messages')
|
||||
<div class="table-responsive">
|
||||
<table id="dataTable"
|
||||
class="table table-bordered table-striped table-head-fixed dataTable dtr-inline"
|
||||
style="width:100%">
|
||||
<thead class="bg-light text-capitalize">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Nama Kepala Region</th>
|
||||
<th>Email Kepala Region</th>
|
||||
<th>Code</th>
|
||||
<th>Nama</th>
|
||||
<th>Aksi</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($region as $item)
|
||||
<tr>
|
||||
<td>{{ $loop->index + 1 }}</td>
|
||||
<td>{{ $item->head->name }}</td>
|
||||
<td>{{ $item->head->email }}</td>
|
||||
<td>{{ $item->code }}</td>
|
||||
<td>{{ $item->name }}</td>
|
||||
<td>
|
||||
@if (auth()->user()->can('region.edit'))
|
||||
<a class="btn btn-success btn-sm text-white" href="{{ route('admin.region.edit', $item->id) }}">Edit</a>
|
||||
@endif
|
||||
@if (auth()->user()->can('region.delete'))
|
||||
<a class="btn btn-danger text-white btn-sm" href="javascript:void(0);"
|
||||
onclick="event.preventDefault(); if(confirm('Are you sure you want to delete?')) { document.getElementById('delete-form-{{ $item->id }}').submit(); }">
|
||||
{{ __('Delete') }}
|
||||
</a>
|
||||
|
||||
<form id="delete-form-{{ $item->id }}"
|
||||
action="{{ route('admin.region.destroy', $item->id) }}"
|
||||
method="POST" style="display: none;">
|
||||
@method('DELETE')
|
||||
@csrf
|
||||
</form>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
if ($('#dataTable').length) {
|
||||
$('#dataTable').DataTable({
|
||||
responsive: true,
|
||||
dom: 'Bfrtip',
|
||||
buttons: [
|
||||
'excel', 'pdf', 'print'
|
||||
]
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,169 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title')
|
||||
{{ $pageInfo['title'] }}
|
||||
@endsection
|
||||
|
||||
@section('admin-content')
|
||||
<section class="content-header">
|
||||
<div class="container-fluid">
|
||||
<div class="row mb-2">
|
||||
<div class="col-sm-6">
|
||||
<h1>{{ $pageInfo['title'] }}</h1>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<ol class="breadcrumb float-sm-right">
|
||||
<li class="breadcrumb-form"><a href="{{ route('admin.dashboard') }}">{{ __('Dashboard') }}</a> / </li>
|
||||
<li class="breadcrumb-form active"> {{ $pageInfo['title'] }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-4">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<form action="{{ route('reports.entertainment') }}" method="GET">
|
||||
<div class="d-flex">
|
||||
<div class="col-md-3">
|
||||
<div class="form-group mb-3">
|
||||
<label for="cabang">Pilih Cabang</label>
|
||||
<select name="cabang" id="cabang" class="form-control">
|
||||
<option value="">Semua Cabang</option>
|
||||
@foreach ($cabang as $cabang)
|
||||
<option value="{{ $cabang->code }}" {{ request()->cabang == $cabang->code ? 'selected' : '' }}>
|
||||
{{ $cabang->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group mb-3">
|
||||
<label for="status">Start Date</label>
|
||||
<input type="date" name="start_date" class="form-control" value="{{ request()->start_date }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group mb-3">
|
||||
<label for="status">End Date</label>
|
||||
<input type="date" name="end_date" class="form-control" value="{{ request()->end_date }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group mb-3">
|
||||
<label for="status">Status</label>
|
||||
<select name="status" id="status" class="form-control">
|
||||
<option value="">Semua Status</option>
|
||||
<option value="On Progress" {{ request()->status == 'On Progress' ? 'selected' : '' }}>On Progress</option>
|
||||
<option value="Approved" {{ request()->status == 'Approved' ? 'selected' : '' }}>Approved</option>
|
||||
<option value="Closed" {{ request()->status == 'Closed' ? 'selected' : '' }}>Closed</option>
|
||||
<option value="Rejected" {{ request()->status == 'Rejected' ? 'selected' : '' }}>Rejected</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{{-- submit button --}}
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary">Filter</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@php
|
||||
use App\Helpers\NextCloudHelper;
|
||||
@endphp
|
||||
|
||||
<section class="content">
|
||||
<div class="container-fluid">
|
||||
<!-- Form Entertainment Presentation Table -->
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h4 class="header-title">Form Entertainment & Presentation</h4>
|
||||
<div class="data-tables">
|
||||
@include('backend.layouts.partials.messages')
|
||||
<div class="table-responsive">
|
||||
<table id="dataTable-table">
|
||||
<thead class="bg-light text-capitalize">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>No Expense</th>
|
||||
<th>User</th>
|
||||
<th>Cabang</th>
|
||||
<th>Nama Penerima</th>
|
||||
<th>Tanggal</th>
|
||||
<th>Jenis</th>
|
||||
<th>Keterangan</th>
|
||||
<th>Total</th>
|
||||
<th>Total Approved</th>
|
||||
<th>Bukti</th>
|
||||
<th>Account Number</th>
|
||||
<th>Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($forms as $item)
|
||||
<tr>
|
||||
<td>{{ $loop->iteration }}</td>
|
||||
<td>{{ $item->expense_number }}</td>
|
||||
<td>{{ $item->user->name }}</td>
|
||||
<td>{{ $item->user->cabang->cabang->name }}</td>
|
||||
<td>{{ $item->name }}</td>
|
||||
<td>{{ \Carbon\Carbon::parse($item->tanggal)->locale('id')->isoFormat('D MMMM Y') }}</td>
|
||||
<td>{{ $item->jenis }}</td>
|
||||
<td>{{ $item->keterangan }}</td>
|
||||
<td>{{ number_format($item->total, 0, ',', '.') }}</td>
|
||||
<td>{{ number_format($item->approved_total, 0, ',', '.') }}</td>
|
||||
<td>
|
||||
@if ($item->bukti_total)
|
||||
<a href="{{ NextCloudHelper::getFileUrl($item->bukti_total) }}" target="_blank">
|
||||
Download
|
||||
</a>
|
||||
@else
|
||||
-
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ $item->account_number }}</td>
|
||||
<td>
|
||||
@if ($item->status == 'On Progress')
|
||||
<span class="badge badge-warning text-white">{{ $item->status }}</span>
|
||||
@elseif ($item->status == 'Approved' || $item->status == 'Final Approved')
|
||||
<span class="badge badge-success text-white">{{ $item->status }}</span>
|
||||
@else
|
||||
<span class="badge badge-danger text-white">{{ $item->status }}</span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
<script>
|
||||
if ($('#dataTable-table').length) {
|
||||
$('#dataTable-table').DataTable({
|
||||
responsive: false,
|
||||
dom: 'Bfrtip',
|
||||
buttons: ['excel', 'pdf', 'print', 'colvis'],
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,159 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title')
|
||||
{{ $pageInfo['title'] }}
|
||||
@endsection
|
||||
|
||||
@section('admin-content')
|
||||
<section class="content-header">
|
||||
<div class="container-fluid">
|
||||
<div class="row mb-2">
|
||||
<div class="col-sm-6">
|
||||
<h1>{{ $pageInfo['title'] }}</h1>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<ol class="breadcrumb float-sm-right">
|
||||
<li class="breadcrumb-form"><a href="{{ route('admin.dashboard') }}">{{ __('Dashboard') }}</a> / </li>
|
||||
<li class="breadcrumb-form active"> {{ $pageInfo['title'] }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-4">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<form action="{{ route('reports.meeting') }}" method="GET">
|
||||
<div class="d-flex">
|
||||
<div class="col-md-3">
|
||||
<div class="form-group mb-3">
|
||||
<label for="cabang">Pilih Cabang</label>
|
||||
<select name="cabang" id="cabang" class="form-control">
|
||||
<option value="">Semua Cabang</option>
|
||||
@foreach ($cabang as $cabang)
|
||||
<option value="{{ $cabang->code }}" {{ request()->cabang == $cabang->code ? 'selected' : '' }}>
|
||||
{{ $cabang->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group mb-3">
|
||||
<label for="status">Start Date</label>
|
||||
<input type="date" name="start_date" class="form-control" value="{{ request()->start_date }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group mb-3">
|
||||
<label for="status">End Date</label>
|
||||
<input type="date" name="end_date" class="form-control" value="{{ request()->end_date }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group mb-3">
|
||||
<label for="status">Status</label>
|
||||
<select name="status" id="status" class="form-control">
|
||||
<option value="">Semua Status</option>
|
||||
<option value="On Progress" {{ request()->status == 'On Progress' ? 'selected' : '' }}>On Progress</option>
|
||||
<option value="Approved" {{ request()->status == 'Approved' ? 'selected' : '' }}>Approved</option>
|
||||
<option value="Closed" {{ request()->status == 'Closed' ? 'selected' : '' }}>Closed</option>
|
||||
<option value="Rejected" {{ request()->status == 'Rejected' ? 'selected' : '' }}>Rejected</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{{-- submit button --}}
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary">Filter</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@php
|
||||
use App\Helpers\NextCloudHelper;
|
||||
@endphp
|
||||
|
||||
<section class="content">
|
||||
<div class="container-fluid">
|
||||
<!-- Form Meeting & Seminar Table -->
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h4 class="header-title">Form Meeting & Seminar</h4>
|
||||
<div class="data-tables">
|
||||
@include('backend.layouts.partials.messages')
|
||||
<div class="table-responsive">
|
||||
<table id="dataTable-table">
|
||||
<thead class="bg-light text-capitalize">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>No Expense</th>
|
||||
<th>Nama</th>
|
||||
<th>Cabang</th>
|
||||
<th>Tanggal</th>
|
||||
<th>Allowance</th>
|
||||
<th>Transport Ankot</th>
|
||||
<th>Hotel</th>
|
||||
<th>Total</th>
|
||||
<th>Total Approved</th>
|
||||
<th>Account Number</th>
|
||||
<th>Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($forms as $item)
|
||||
<tr>
|
||||
<td>{{ $loop->iteration }}</td>
|
||||
<td>{{ $item->expense_number }}</td>
|
||||
<td>{{ $item->user->name }}</td>
|
||||
<td>{{ $item->user->cabang->cabang->name }}</td>
|
||||
<td>{{ \Carbon\Carbon::parse($item->created_at)->locale('id')->isoFormat('D MMMM Y') }}</td>
|
||||
<td>{{ number_format($item->allowance, 0, ',', '.') }}</td>
|
||||
<td>{{ number_format($item->transport_ankot, 0, ',', '.') }}</td>
|
||||
<td>{{ number_format($item->hotel, 0, ',', '.') }}</td>
|
||||
<td>{{ number_format($item->total, 0, ',', '.') }}</td>
|
||||
<td>{{ number_format($item->approved_total, 0, ',', '.') }}</td>
|
||||
<td>{{ $item->account_number }}</td>
|
||||
<td>
|
||||
@if ($item->status == 'On Progress')
|
||||
<span class="badge badge-warning text-white">{{ $item->status }}</span>
|
||||
@elseif ($item->status == 'Approved' || $item->status == 'Final Approved')
|
||||
<span class="badge badge-success text-white">{{ $item->status }}</span>
|
||||
@else
|
||||
<span class="badge badge-danger text-white">{{ $item->status }}</span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
<script>
|
||||
if ($('#dataTable-table').length) {
|
||||
$('#dataTable-table').DataTable({
|
||||
responsive: false,
|
||||
dom: 'Bfrtip',
|
||||
buttons: ['excel', 'pdf', 'print', 'colvis'],
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,165 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title')
|
||||
{{ $pageInfo['title'] }}
|
||||
@endsection
|
||||
|
||||
@section('admin-content')
|
||||
<section class="content-header">
|
||||
<div class="container-fluid">
|
||||
<div class="row mb-2">
|
||||
<div class="col-sm-6">
|
||||
<h1>{{ $pageInfo['title'] }}</h1>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<ol class="breadcrumb float-sm-right">
|
||||
<li class="breadcrumb-form"><a href="{{ route('admin.dashboard') }}">{{ __('Dashboard') }}</a> / </li>
|
||||
<li class="breadcrumb-form active"> {{ $pageInfo['title'] }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-4">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<form action="{{ route('reports.others') }}" method="GET">
|
||||
<div class="d-flex">
|
||||
<div class="col-md-3">
|
||||
<div class="form-group mb-3">
|
||||
<label for="cabang">Pilih Cabang</label>
|
||||
<select name="cabang" id="cabang" class="form-control">
|
||||
<option value="">Semua Cabang</option>
|
||||
@foreach ($cabang as $cabang)
|
||||
<option value="{{ $cabang->code }}" {{ request()->cabang == $cabang->code ? 'selected' : '' }}>
|
||||
{{ $cabang->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group mb-3">
|
||||
<label for="status">Start Date</label>
|
||||
<input type="date" name="start_date" class="form-control" value="{{ request()->start_date }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group mb-3">
|
||||
<label for="status">End Date</label>
|
||||
<input type="date" name="end_date" class="form-control" value="{{ request()->end_date }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group mb-3">
|
||||
<label for="status">Status</label>
|
||||
<select name="status" id="status" class="form-control">
|
||||
<option value="">Semua Status</option>
|
||||
<option value="On Progress" {{ request()->status == 'On Progress' ? 'selected' : '' }}>On Progress</option>
|
||||
<option value="Approved" {{ request()->status == 'Approved' ? 'selected' : '' }}>Approved</option>
|
||||
<option value="Closed" {{ request()->status == 'Closed' ? 'selected' : '' }}>Closed</option>
|
||||
<option value="Rejected" {{ request()->status == 'Rejected' ? 'selected' : '' }}>Rejected</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{{-- submit button --}}
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary">Filter</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@php
|
||||
use App\Helpers\NextCloudHelper;
|
||||
@endphp
|
||||
|
||||
<section class="content">
|
||||
<div class="container-fluid">
|
||||
<!-- Form Others Table -->
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h4 class="header-title">Form Others</h4>
|
||||
<div class="data-tables">
|
||||
@include('backend.layouts.partials.messages')
|
||||
<div class="table-responsive">
|
||||
<table id="dataTable-table">
|
||||
<thead class="bg-light text-capitalize">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>No Expense</th>
|
||||
<th>Nama</th>
|
||||
<th>Cabang</th>
|
||||
<th>Tanggal</th>
|
||||
<th>Jenis</th>
|
||||
<th>Keterangan</th>
|
||||
<th>Total</th>
|
||||
<th>Bukti Total</th>
|
||||
<th>Account Number</th>
|
||||
<th>Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($forms as $item)
|
||||
<tr>
|
||||
<td>{{ $loop->iteration }}</td>
|
||||
<td>{{ $item->expense_number }}</td>
|
||||
<td>{{ $item->user->name }}</td>
|
||||
<td>{{ $item->user->cabang->cabang->name }}</td>
|
||||
<td>{{ \Carbon\Carbon::parse($item->tanggal)->locale('id')->isoFormat('D MMMM Y') }}</td>
|
||||
<td>{{ $item->kategori->name }}</td>
|
||||
<td>{{ $item->keterangan }}</td>
|
||||
<td>{{ number_format($item->total, 0, ',', '.') }}</td>
|
||||
<td>
|
||||
@if ($item->bukti_total)
|
||||
<a href="{{ NextCloudHelper::getFileUrl($item->bukti_total) }}" target="_blank">
|
||||
Download
|
||||
</a>
|
||||
@else
|
||||
-
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ $item->account_number }}</td>
|
||||
<td>
|
||||
@if ($item->status == 'On Progress')
|
||||
<span class="badge badge-warning text-white">{{ $item->status }}</span>
|
||||
@elseif ($item->status == 'Approved' || $item->status == 'Final Approved')
|
||||
<span class="badge badge-success text-white">{{ $item->status }}</span>
|
||||
@else
|
||||
<span class="badge badge-danger text-white">{{ $item->status }}</span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
<script>
|
||||
if ($('#dataTable-table').length) {
|
||||
$('#dataTable-table').DataTable({
|
||||
responsive: false,
|
||||
dom: 'Bfrtip',
|
||||
buttons: ['excel', 'pdf', 'print', 'colvis'],
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,165 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title')
|
||||
{{ $pageInfo['title'] }}
|
||||
@endsection
|
||||
|
||||
@section('admin-content')
|
||||
<section class="content-header">
|
||||
<div class="container-fluid">
|
||||
<div class="row mb-2">
|
||||
<div class="col-sm-6">
|
||||
<h1>{{ $pageInfo['title'] }}</h1>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<ol class="breadcrumb float-sm-right">
|
||||
<li class="breadcrumb-form"><a href="{{ route('admin.dashboard') }}">{{ __('Dashboard') }}</a> / </li>
|
||||
<li class="breadcrumb-form active"> {{ $pageInfo['title'] }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-4">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<form action="{{ route('reports.upcountry') }}" method="GET">
|
||||
<div class="d-flex">
|
||||
<div class="col-md-3">
|
||||
<div class="form-group mb-3">
|
||||
<label for="cabang">Pilih Cabang</label>
|
||||
<select name="cabang" id="cabang" class="form-control">
|
||||
<option value="">Semua Cabang</option>
|
||||
@foreach ($cabang as $cabang)
|
||||
<option value="{{ $cabang->code }}" {{ request()->cabang == $cabang->code ? 'selected' : '' }}>
|
||||
{{ $cabang->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group mb-3">
|
||||
<label for="status">Start Date</label>
|
||||
<input type="date" name="start_date" class="form-control" value="{{ request()->start_date }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group mb-3">
|
||||
<label for="status">End Date</label>
|
||||
<input type="date" name="end_date" class="form-control" value="{{ request()->end_date }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group mb-3">
|
||||
<label for="status">Status</label>
|
||||
<select name="status" id="status" class="form-control">
|
||||
<option value="">Semua Status</option>
|
||||
<option value="On Progress" {{ request()->status == 'On Progress' ? 'selected' : '' }}>On Progress</option>
|
||||
<option value="Approved" {{ request()->status == 'Approved' ? 'selected' : '' }}>Approved</option>
|
||||
<option value="Closed" {{ request()->status == 'Closed' ? 'selected' : '' }}>Closed</option>
|
||||
<option value="Rejected" {{ request()->status == 'Rejected' ? 'selected' : '' }}>Rejected</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{{-- submit button --}}
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary">Filter</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@php
|
||||
use App\Helpers\NextCloudHelper;
|
||||
@endphp
|
||||
|
||||
<section class="content">
|
||||
<div class="container-fluid">
|
||||
<!-- Form Up Country Table -->
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h4 class="header-title">Form Up Country</h4>
|
||||
<div class="data-tables">
|
||||
@include('backend.layouts.partials.messages')
|
||||
<div class="table-responsive">
|
||||
<table id="dataTable-table">
|
||||
<thead class="bg-light text-capitalize">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>No Expense</th>
|
||||
<th>Nama</th>
|
||||
<th>Cabang</th>
|
||||
<th>Rayon</th>
|
||||
<th>Tanggal</th>
|
||||
<th>Tujuan</th>
|
||||
<th>Jarak</th>
|
||||
<th>Total</th>
|
||||
<th>Total Approved</th>
|
||||
<th>Account Number</th>
|
||||
<th>Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($forms as $item)
|
||||
<tr>
|
||||
<td>{{ $loop->iteration }}</td>
|
||||
<td>{{ $item->expense_number }}</td>
|
||||
<td>{{ $item->user->name }}</td>
|
||||
<td>{{ $item->user->cabang->cabang->name }}</td>
|
||||
<td>{{ $item->rayon->code }}</td>
|
||||
<td>{{ \Carbon\Carbon::parse($item->tanggal)->locale('id')->isoFormat('D MMMM Y') }}</td>
|
||||
<td>{{ $item->tujuan }}</td>
|
||||
<td>{{ $item->jarak }} km</td>
|
||||
<td>{{ number_format($item->total, 0, ',', '.') }}</td>
|
||||
<td>
|
||||
@if ($item->approved_total)
|
||||
{{ number_format($item->approved_total, 0, ',', '.') }}
|
||||
@else
|
||||
-
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ $item->account_number }}</td>
|
||||
<td>
|
||||
@if ($item->status == 'On Progress')
|
||||
<span class="badge badge-warning text-white">{{ $item->status }}</span>
|
||||
@elseif ($item->status == 'Approved' || $item->status == 'Final Approved')
|
||||
<span class="badge badge-success text-white">{{ $item->status }}</span>
|
||||
@else
|
||||
<span class="badge badge-danger text-white">{{ $item->status }}</span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
<script>
|
||||
if ($('#dataTable-table').length) {
|
||||
$('#dataTable-table').DataTable({
|
||||
responsive: false,
|
||||
dom: 'Bfrtip',
|
||||
buttons: ['excel', 'pdf', 'print', 'colvis'],
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,171 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title')
|
||||
{{ $pageInfo['title'] }}
|
||||
@endsection
|
||||
|
||||
@section('admin-content')
|
||||
<section class="content-header">
|
||||
<div class="container-fluid">
|
||||
<div class="row mb-2">
|
||||
<div class="col-sm-6">
|
||||
<h1>{{ $pageInfo['title'] }}</h1>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<ol class="breadcrumb float-sm-right">
|
||||
<li class="breadcrumb-form"><a href="{{ route('admin.dashboard') }}">{{ __('Dashboard') }}</a> / </li>
|
||||
<li class="breadcrumb-form active"> {{ $pageInfo['title'] }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-4">
|
||||
<div class="col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<form action="{{ route('reports.vehicle') }}" method="GET">
|
||||
<div class="d-flex">
|
||||
<div class="col-md-3">
|
||||
<div class="form-group mb-3">
|
||||
<label for="cabang">Pilih Cabang</label>
|
||||
<select name="cabang" id="cabang" class="form-control">
|
||||
<option value="">Semua Cabang</option>
|
||||
@foreach ($cabang as $cabang)
|
||||
<option value="{{ $cabang->code }}" {{ request()->cabang == $cabang->code ? 'selected' : '' }}>
|
||||
{{ $cabang->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group mb-3">
|
||||
<label for="status">Start Date</label>
|
||||
<input type="date" name="start_date" class="form-control" value="{{ request()->start_date }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group mb-3">
|
||||
<label for="status">End Date</label>
|
||||
<input type="date" name="end_date" class="form-control" value="{{ request()->end_date }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group mb-3">
|
||||
<label for="status">Status</label>
|
||||
<select name="status" id="status" class="form-control">
|
||||
<option value="">Semua Status</option>
|
||||
<option value="On Progress" {{ request()->status == 'On Progress' ? 'selected' : '' }}>On Progress</option>
|
||||
<option value="Approved" {{ request()->status == 'Approved' ? 'selected' : '' }}>Approved</option>
|
||||
<option value="Closed" {{ request()->status == 'Closed' ? 'selected' : '' }}>Closed</option>
|
||||
<option value="Rejected" {{ request()->status == 'Rejected' ? 'selected' : '' }}>Rejected</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{{-- submit button --}}
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary">Filter</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@php
|
||||
use App\Helpers\NextCloudHelper;
|
||||
@endphp
|
||||
|
||||
<section class="content">
|
||||
<div class="container-fluid">
|
||||
<!-- Form Up Vehicle Table -->
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h4 class="header-title">Form Vehicle Running Cost</h4>
|
||||
<div class="data-tables">
|
||||
@include('backend.layouts.partials.messages')
|
||||
<div class="table-responsive">
|
||||
<table id="dataTable-table">
|
||||
<thead class="bg-light text-capitalize">
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>No Expense</th>
|
||||
<th>Nama</th>
|
||||
<th>Cabang</th>
|
||||
<th>Tanggal</th>
|
||||
<th>Liter</th>
|
||||
<th>Total</th>
|
||||
<th>Total Approved</th>
|
||||
<th>Jarak</th>
|
||||
<th>Tipe Bensin</th>
|
||||
<th>Nomor Polisi</th>
|
||||
<th>Bukti</th>
|
||||
<th>Account Number</th>
|
||||
<th>Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($forms as $item)
|
||||
<tr>
|
||||
<td>{{ $loop->iteration }}</td>
|
||||
<td>{{ $item->expense_number }}</td>
|
||||
<td>{{ $item->user->name }}</td>
|
||||
<td>{{ $item->user->cabang->cabang->name }}</td>
|
||||
<td>{{ \Carbon\Carbon::parse($item->tanggal)->locale('id')->isoFormat('dddd, D MMMM Y HH:mm:ss') }}</td>
|
||||
<td>{{ $item->liter }}</td>
|
||||
<td>{{ number_format($item->total, 0, ',', '.') }}</td>
|
||||
<td>{{ number_format($item->approved_total, 0, ',', '.') }}</td>
|
||||
<td>{{ $item->jarak }} km</td>
|
||||
<td>{{ $item->tipe_bensin }}</td>
|
||||
<td>{{ $item->nopol }}</td>
|
||||
<td>
|
||||
@if ($item->bukti_total)
|
||||
<a href="{{ NextCloudHelper::getFileUrl($item->bukti_total) }}" target="_blank">
|
||||
Download
|
||||
</a>
|
||||
@else
|
||||
-
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ $item->account_number }}</td>
|
||||
<td>
|
||||
@if ($item->status == 'On Progress')
|
||||
<span class="badge badge-warning text-white">{{ $item->status }}</span>
|
||||
@elseif ($item->status == 'Approved' || $item->status == 'Final Approved')
|
||||
<span class="badge badge-success text-white">{{ $item->status }}</span>
|
||||
@else
|
||||
<span class="badge badge-danger text-white">{{ $item->status }}</span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
<script>
|
||||
if ($('#dataTable-table').length) {
|
||||
$('#dataTable-table').DataTable({
|
||||
responsive: false,
|
||||
dom: 'Bfrtip',
|
||||
buttons: ['excel', 'pdf', 'print', 'colvis'],
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
@@ -89,4 +89,9 @@
|
||||
margin-bottom: 15px; /* Adjust the value as needed */
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.dt-search {
|
||||
float: right;
|
||||
text-align: right;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -18,6 +18,9 @@ use App\Http\Controllers\Forms\FormMeetingSeminarController;
|
||||
use App\Http\Controllers\Forms\FormOtherController;
|
||||
use App\Http\Controllers\Backend\AuditTrailController;
|
||||
use App\Http\Controllers\Backend\BudgetControlController;
|
||||
use App\Http\Controllers\Backend\ReportController;
|
||||
use App\Http\Controllers\Master\RegionController;
|
||||
use App\Http\Controllers\Master\CabangController;
|
||||
|
||||
Auth::routes();
|
||||
|
||||
@@ -63,6 +66,22 @@ Route::group(['prefix' => 'admin', 'as' => 'admin.', 'middleware' => ['auth:admi
|
||||
Route::put('/category/update/{id}', [CategoryController::class, 'update'])->name('category.update');
|
||||
Route::delete('/category/destroy/{id}', [CategoryController::class, 'destroy'])->name('category.destroy');
|
||||
|
||||
// Region
|
||||
Route::get('/region', [RegionController::class, 'index'])->name('region.index');
|
||||
Route::get('/region/create', [RegionController::class, 'create'])->name('region.create');
|
||||
Route::post('/region/store', [RegionController::class, 'store'])->name('region.store');
|
||||
Route::get('/region/edit/{id}', [RegionController::class, 'edit'])->name('region.edit');
|
||||
Route::put('/region/update/{id}', [RegionController::class, 'update'])->name('region.update');
|
||||
Route::delete('/region/destroy/{id}', [RegionController::class, 'destroy'])->name('region.destroy');
|
||||
|
||||
// Cabang
|
||||
Route::get('/cabang', [CabangController::class, 'index'])->name('cabang.index');
|
||||
Route::get('/cabang/create', [CabangController::class, 'create'])->name('cabang.create');
|
||||
Route::post('/cabang/store', [CabangController::class, 'store'])->name('cabang.store');
|
||||
Route::get('/cabang/edit/{id}', [CabangController::class, 'edit'])->name('cabang.edit');
|
||||
Route::put('/cabang/update/{id}', [CabangController::class, 'update'])->name('cabang.update');
|
||||
Route::delete('/cabang/destroy/{id}', [CabangController::class, 'destroy'])->name('cabang.destroy');
|
||||
|
||||
// Audit Trail
|
||||
Route::get('/audit-trails', [AuditTrailController::class, 'index'])->name('audit-trail.index');
|
||||
|
||||
@@ -83,6 +102,14 @@ Route::middleware(['auth:admin', 'menu'])->group(function () {
|
||||
Route::delete('/destroy/{id}', [BudgetControlController::class, 'destroy'])->name('budget_control.destroy');
|
||||
});
|
||||
|
||||
Route::prefix('reports')->group(function () {
|
||||
Route::get('/upcountry', [ReportController::class, 'upcountry'])->name('reports.upcountry');
|
||||
Route::get('/vehicle', [ReportController::class, 'vehicle'])->name('reports.vehicle');
|
||||
Route::get('/entertainment', [ReportController::class, 'entertainment'])->name('reports.entertainment');
|
||||
Route::get('/meeting', [ReportController::class, 'meeting'])->name('reports.meeting');
|
||||
Route::get('/others', [ReportController::class, 'others'])->name('reports.others');
|
||||
});
|
||||
|
||||
// Forms
|
||||
Route::prefix('forms')->group(function () {
|
||||
// Up Country
|
||||
|
||||
Reference in New Issue
Block a user