diff --git a/app/Http/Controllers/Backend/AuditTrailController.php b/app/Http/Controllers/Backend/AuditTrailController.php index 4510f2f..250ac5d 100644 --- a/app/Http/Controllers/Backend/AuditTrailController.php +++ b/app/Http/Controllers/Backend/AuditTrailController.php @@ -22,7 +22,8 @@ class AuditTrailController extends Controller return view( 'backend.pages.audit_trail.index', [ - 'data' => AuditTrail::orderBy('id', 'desc')->get(), + // sort by newest + 'data' => AuditTrail::orderBy('created_at', 'desc')->get(), 'pageInfo' => $pageInfo, ] ); diff --git a/app/Http/Controllers/Backend/DashboardController.php b/app/Http/Controllers/Backend/DashboardController.php index ac1b539..d04504e 100644 --- a/app/Http/Controllers/Backend/DashboardController.php +++ b/app/Http/Controllers/Backend/DashboardController.php @@ -63,7 +63,7 @@ class DashboardController extends Controller // Sum the filtered queries foreach ($forms as $key => $query) { - $forms[$key] = $query->sum('total'); + $forms[$key] = $query->sum('approved_total'); } return view( diff --git a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php index 9211235..cd454b4 100644 --- a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php +++ b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php @@ -20,6 +20,7 @@ use App\Mail\ExpenseRejected; use App\Mail\FinalApprove; use App\Helpers\WhatsappHelper; use App\Helpers\AuditTrailHelper; +use App\Rules\FileType; class FormEntertainmentPresentationController extends Controller { @@ -84,8 +85,8 @@ class FormEntertainmentPresentationController extends Controller 'alamat' => 'required', 'nik_or_npwp' => 'required', 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:51200', - 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', - 'bukti3' => 'nullable|file|mimes:pdf', + 'bukti2' => ['nullable', 'file', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], + 'bukti3' => ['nullable', 'file', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], ]); $cabang = UserHasCabang::with('cabang')->where('user_id', auth()->user()->id)->first()->cabang; @@ -189,8 +190,8 @@ class FormEntertainmentPresentationController extends Controller 'alamat' => 'required', 'nik_or_npwp' => 'required', 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:51200', - 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', - 'bukti3' => 'nullable|file|mimes:pdf', + 'bukti2' => ['nullable', 'file', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], + 'bukti3' => ['nullable', 'file', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], ]); $form = FormEntertaimentPresentation::findOrfail($id); diff --git a/app/Http/Controllers/Forms/FormMeetingSeminarController.php b/app/Http/Controllers/Forms/FormMeetingSeminarController.php index fe1768a..6991b01 100644 --- a/app/Http/Controllers/Forms/FormMeetingSeminarController.php +++ b/app/Http/Controllers/Forms/FormMeetingSeminarController.php @@ -20,6 +20,7 @@ use App\Mail\ExpenseRejected; use App\Mail\FinalApprove; use App\Helpers\WhatsappHelper; use App\Helpers\AuditTrailHelper; +use App\Rules\FileType; class FormMeetingSeminarController extends Controller { @@ -80,8 +81,8 @@ class FormMeetingSeminarController extends Controller 'transport_ankot' => 'required', 'hotel' => 'required', 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:51200', - 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', - 'bukti3' => 'nullable|file|mimes:pdf', + 'bukti2' => ['nullable', 'file', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], + 'bukti3' => ['nullable', 'file', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], ]); $cabang = UserHasCabang::with('cabang')->where('user_id', auth()->user()->id)->first()->cabang; @@ -178,8 +179,8 @@ class FormMeetingSeminarController extends Controller 'transport_ankot' => 'required', 'hotel' => 'required', 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:51200', - 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', - 'bukti3' => 'nullable|file|mimes:pdf', + 'bukti2' => ['nullable', 'file', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], + 'bukti3' => ['nullable', 'file', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], ]); $form = FormMeetingSeminar::findOrfail($id); diff --git a/app/Http/Controllers/Forms/FormOtherController.php b/app/Http/Controllers/Forms/FormOtherController.php index 6857b58..9254461 100644 --- a/app/Http/Controllers/Forms/FormOtherController.php +++ b/app/Http/Controllers/Forms/FormOtherController.php @@ -20,6 +20,7 @@ use App\Mail\ExpenseRejected; use App\Mail\FinalApprove; use App\Helpers\WhatsappHelper; use App\Helpers\AuditTrailHelper; +use App\Rules\FileType; class FormOtherController extends Controller { @@ -83,8 +84,8 @@ class FormOtherController extends Controller 'keterangan' => 'required', 'total' => 'required', 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:51200', - 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', - 'bukti3' => 'nullable|file|mimes:pdf', + 'bukti2' => ['nullable', 'file', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], + 'bukti3' => ['nullable', 'file', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], ]); $cabang = UserHasCabang::with('cabang')->where('user_id', auth()->user()->id)->first()->cabang; @@ -183,8 +184,8 @@ class FormOtherController extends Controller 'keterangan' => 'required', 'total' => 'required', 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:51200', - 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', - 'bukti3' => 'nullable|file|mimes:pdf', + 'bukti2' => ['nullable', 'file', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], + 'bukti3' => ['nullable', 'file', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], ]); $form = FormOthers::findOrfail($id); diff --git a/app/Http/Controllers/Forms/FormUpCountryController.php b/app/Http/Controllers/Forms/FormUpCountryController.php index f941fda..d1e4c07 100644 --- a/app/Http/Controllers/Forms/FormUpCountryController.php +++ b/app/Http/Controllers/Forms/FormUpCountryController.php @@ -12,7 +12,6 @@ use App\Models\Region; use App\Models\Cabang; use App\Models\UserHasCabang; use App\Models\Kategori; -use App\Helpers\NextCloudHelper; use Illuminate\Support\Str; use Illuminate\Support\Facades\Mail; use App\Mail\ExpenseApproved; @@ -20,6 +19,8 @@ use App\Mail\ExpenseRejected; use App\Mail\FinalApprove; use App\Helpers\WhatsappHelper; use App\Helpers\AuditTrailHelper; +use App\Helpers\NextCloudHelper; +use App\Rules\FileType; class FormUpCountryController extends Controller { @@ -64,6 +65,17 @@ class FormUpCountryController extends Controller ]); } + public function detail($id) + { + $this->checkAuthorization(auth()->user(), ['forms.country.view']); + + $form = FormUpCountry::with(['rayon', 'user'])->findOrFail($id); + $form->bukti1 = $form->bukti1 ? NextCloudHelper::getFileUrl($form->bukti1) : null; + $form->bukti2 = $form->bukti2 ? NextCloudHelper::getFileUrl($form->bukti2) : null; + $form->bukti3 = $form->bukti3 ? NextCloudHelper::getFileUrl($form->bukti3) : null; + return response()->json($form); + } + public function create() { $this->checkAuthorization(auth()->user(), ['forms.country.create']); @@ -86,8 +98,8 @@ class FormUpCountryController extends Controller 'transport_dalkot' => 'required', 'transport_ankot' => 'required', 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:51200', - 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', - 'bukti3' => 'nullable|file|mimes:pdf', + 'bukti2' => ['nullable', 'file', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], + 'bukti3' => ['nullable', 'file', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], ]); $cabang = UserHasCabang::with('cabang')->where('user_id', auth()->user()->id)->first()->cabang; @@ -195,8 +207,8 @@ class FormUpCountryController extends Controller 'transport_ankot' => 'required', 'hotel' => 'required', 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:51200', - 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', - 'bukti3' => 'nullable|file|mimes:pdf', + 'bukti2' => ['nullable', 'file', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], + 'bukti3' => ['nullable', 'file', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], ]); $form = FormUpCountry::findOrfail($id); @@ -272,15 +284,28 @@ class FormUpCountryController extends Controller return redirect()->back(); } - public function approve($id) + public function approve(Request $request, $id) { $this->checkAuthorization(auth()->user(), ['approval.approve']); $form = FormUpCountry::findOrfail($id); + $approved_data = [ + 'allowance' => $request->allowance ? $form->allowance : 0, + 'transport_dalkot' => $request->transport_dalkot ? $form->transport_dalkot : 0, + 'transport_ankot' => $request->transport_ankot ? $form->transport_ankot : 0, + 'hotel' => $request->hotel ? $form->hotel : 0, + ]; + $form->update([ 'approved_at' => now(), 'approved_by' => auth()->user()->id, - 'status' => 'Approved' + 'status' => 'Approved', + + 'approved_allowance' => $approved_data['allowance'], + 'approved_transport_dalkot' => $approved_data['transport_dalkot'], + 'approved_transport_ankot' => $approved_data['transport_ankot'], + 'approved_hotel' => $approved_data['hotel'], + 'approved_total' => array_sum($approved_data), ]); $heads = $form->user->getCabangAndRegionHead(); diff --git a/app/Http/Controllers/Forms/FormVehicleController.php b/app/Http/Controllers/Forms/FormVehicleController.php index 1ccbd85..f587144 100644 --- a/app/Http/Controllers/Forms/FormVehicleController.php +++ b/app/Http/Controllers/Forms/FormVehicleController.php @@ -20,6 +20,7 @@ use App\Mail\ExpenseRejected; use App\Mail\FinalApprove; use App\Helpers\WhatsappHelper; use App\Helpers\AuditTrailHelper; +use App\Rules\FileType; class FormVehicleController extends Controller { @@ -84,8 +85,8 @@ class FormVehicleController extends Controller 'nopol' => 'required', 'keterangan' => 'required', 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:51200', - 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', - 'bukti3' => 'nullable|file|mimes:pdf', + 'bukti2' => ['nullable', 'file', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], + 'bukti3' => ['nullable', 'file', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], ]); $cabang = UserHasCabang::with('cabang')->where('user_id', auth()->user()->id)->first()->cabang; @@ -189,8 +190,8 @@ class FormVehicleController extends Controller 'nopol' => 'required', 'keterangan' => 'required', 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:51200', - 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', - 'bukti3' => 'nullable|file|mimes:pdf', + 'bukti2' => ['nullable', 'file', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], + 'bukti3' => ['nullable', 'file', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], ]); $form = FormVehicleRunningCost::findOrfail($id); diff --git a/app/Models/FormEntertaimentPresentation.php b/app/Models/FormEntertaimentPresentation.php index d62e7d3..0bb0820 100644 --- a/app/Models/FormEntertaimentPresentation.php +++ b/app/Models/FormEntertaimentPresentation.php @@ -17,6 +17,7 @@ class FormEntertaimentPresentation extends Model 'jenis', 'keterangan', 'total', + 'approved_total', 'name', 'alamat', 'nik_or_npwp', diff --git a/app/Models/FormMeetingSeminar.php b/app/Models/FormMeetingSeminar.php index 36c7803..f0b8927 100644 --- a/app/Models/FormMeetingSeminar.php +++ b/app/Models/FormMeetingSeminar.php @@ -17,6 +17,10 @@ class FormMeetingSeminar extends Model 'transport_ankot', 'hotel', 'total', + 'approved_allowance', + 'approved_transport_ankot', + 'approved_hotel', + 'approved_total', 'bukti1', 'bukti2', 'bukti3', diff --git a/app/Models/FormOthers.php b/app/Models/FormOthers.php index 5cb8ec4..33e61d5 100644 --- a/app/Models/FormOthers.php +++ b/app/Models/FormOthers.php @@ -17,6 +17,7 @@ class FormOthers extends Model 'tanggal', 'keterangan', 'total', + 'approved_total', 'bukti1', 'bukti2', 'bukti3', diff --git a/app/Models/FormUpCountry.php b/app/Models/FormUpCountry.php index 425fb39..6fff4df 100644 --- a/app/Models/FormUpCountry.php +++ b/app/Models/FormUpCountry.php @@ -22,6 +22,11 @@ class FormUpCountry extends Model 'transport_ankot', 'hotel', 'total', + 'approved_allowance', + 'approved_transport_dalkot', + 'approved_transport_ankot', + 'approved_hotel', + 'approved_total', 'bukti1', 'bukti2', 'bukti3', diff --git a/app/Models/FormVehicleRunningCost.php b/app/Models/FormVehicleRunningCost.php index 620bc55..ca5cf1c 100644 --- a/app/Models/FormVehicleRunningCost.php +++ b/app/Models/FormVehicleRunningCost.php @@ -16,6 +16,7 @@ class FormVehicleRunningCost extends Model 'tanggal', 'liter', 'total', + 'approved_total', 'jarak', 'tipe_bensin', 'nopol', diff --git a/app/Rules/FileType.php b/app/Rules/FileType.php new file mode 100644 index 0000000..0b090ac --- /dev/null +++ b/app/Rules/FileType.php @@ -0,0 +1,43 @@ +disallowedExtensions = $disallowedExtensions; + } + + /** + * Run the validation rule. + * + * @param string $attribute + * @param mixed $value + * @param \Closure(string, ?string=): \Illuminate\Translation\PotentiallyTranslatedString $fail + */ + public function validate(string $attribute, mixed $value, Closure $fail): void + { + if ($value && $value->isValid()) { + // Get the file extension + $extension = strtolower($value->getClientOriginalExtension()); + + // Check if the extension is in the disallowed list + if (in_array($extension, $this->disallowedExtensions)) { + $fail("The file type '{$extension}' is not allowed."); + } + } else { + $fail("The uploaded file for '{$attribute}' is invalid."); + } + } +} diff --git a/database/migrations/2025_01_02_082311_revised_form_up_country_table.php b/database/migrations/2025_01_02_082311_revised_form_up_country_table.php new file mode 100644 index 0000000..179e361 --- /dev/null +++ b/database/migrations/2025_01_02_082311_revised_form_up_country_table.php @@ -0,0 +1,36 @@ +integer('approved_allowance')->after('total')->nullable(); + $table->integer('approved_transport_dalkot')->after('approved_allowance')->nullable(); + $table->integer('approved_transport_ankot')->after('approved_transport_dalkot')->nullable(); + $table->integer('approved_hotel')->after('approved_transport_ankot')->nullable(); + $table->integer('approved_total')->after('approved_hotel')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('form_up_country', function (Blueprint $table) { + $table->dropColumn('approved_allowance'); + $table->dropColumn('approved_transport_dalkot'); + $table->dropColumn('approved_transport_ankot'); + $table->dropColumn('approved_hotel'); + $table->dropColumn('approved_total'); + }); + } +}; diff --git a/database/migrations/2025_01_02_082747_revised_form_vehicle_running_cost_table.php b/database/migrations/2025_01_02_082747_revised_form_vehicle_running_cost_table.php new file mode 100644 index 0000000..227cb5e --- /dev/null +++ b/database/migrations/2025_01_02_082747_revised_form_vehicle_running_cost_table.php @@ -0,0 +1,28 @@ +integer('approved_total')->after('total')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('form_vehicle_running_cost', function (Blueprint $table) { + $table->dropColumn('approved_total'); + }); + } +}; diff --git a/database/migrations/2025_01_02_082854_revised_form_entertainment_presentation_table.php b/database/migrations/2025_01_02_082854_revised_form_entertainment_presentation_table.php new file mode 100644 index 0000000..c92225c --- /dev/null +++ b/database/migrations/2025_01_02_082854_revised_form_entertainment_presentation_table.php @@ -0,0 +1,28 @@ +integer('approved_total')->after('total')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('form_entertainment_presentation', function (Blueprint $table) { + $table->dropColumn('approved_total'); + }); + } +}; diff --git a/database/migrations/2025_01_02_082944_revised_form_meeting_seminar_table.php b/database/migrations/2025_01_02_082944_revised_form_meeting_seminar_table.php new file mode 100644 index 0000000..a0ebb42 --- /dev/null +++ b/database/migrations/2025_01_02_082944_revised_form_meeting_seminar_table.php @@ -0,0 +1,34 @@ +integer('approved_allowance')->after('total')->nullable(); + $table->integer('approved_transport_ankot')->after('approved_allowance')->nullable(); + $table->integer('approved_hotel')->after('approved_transport_ankot')->nullable(); + $table->integer('approved_total')->after('approved_hotel')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('form_meeting_seminar', function (Blueprint $table) { + $table->dropColumn('approved_allowance'); + $table->dropColumn('approved_transport_ankot'); + $table->dropColumn('approved_hotel'); + $table->dropColumn('approved_total'); + }); + } +}; diff --git a/database/migrations/2025_01_02_083046_revised_form_others_table.php b/database/migrations/2025_01_02_083046_revised_form_others_table.php new file mode 100644 index 0000000..66ca6be --- /dev/null +++ b/database/migrations/2025_01_02_083046_revised_form_others_table.php @@ -0,0 +1,28 @@ +integer('approved_total')->after('total')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('form_others', function (Blueprint $table) { + $table->dropColumn('approved_total'); + }); + } +}; diff --git a/resources/views/backend/pages/admins/expense.blade.php b/resources/views/backend/pages/admins/expense.blade.php index 9dae772..0288d84 100644 --- a/resources/views/backend/pages/admins/expense.blade.php +++ b/resources/views/backend/pages/admins/expense.blade.php @@ -35,150 +35,152 @@

Form Up Country

@include('backend.layouts.partials.messages') - - - - - - - - - - - - - - - - @if (auth()->user()->can('approval.approve') || auth()->user()->can('final_approval.approve')) - - @endif - - - - - @foreach ($forms['form_up_country'] as $index => $form) - - - - - - - - - - - - - - @if (auth()->user()->can('approval.approve')) +
+
#NamaRayonTanggalTujuanJarakTotalBukti 1Bukti 2Bukti 3Account NumberStatusApprovalAksi
{{ $loop->iteration }}{{ $form->user->name }}{{ $form->rayon->code }}{{ \Carbon\Carbon::parse($form->tanggal)->locale('id')->isoFormat('D MMMM Y') }}{{ $form->tujuan }}{{ $form->jarak }} km{{ number_format($form->total, 0, ',', '.') }} - @if ($form->bukti1) - - Download - - @else - - - @endif - - @if ($form->bukti2) - - Download - - @else - - - @endif - - @if ($form->bukti3) - - Download - - @else - - - @endif - {{ $form->account_number }} - @if ($form->status == 'On Progress') - {{ $form->status }} - @elseif ($form->status == 'Approved' || $form->status == 'Final Approved') - {{ $form->status }} - @else - {{ $form->status }} - @endif -
+ + + + + + + + + + + + + + + @if (auth()->user()->can('approval.approve') || auth()->user()->can('final_approval.approve')) + + @endif + + + + + @foreach ($forms['form_up_country'] as $index => $form) + + + + + + + + - @elseif(auth()->user()->can('final_approval.approve')) + + + + @if (auth()->user()->can('approval.approve')) + + @elseif(auth()->user()->can('final_approval.approve')) + + @endif + - @endif - - - @endforeach - -
#NamaRayonTanggalTujuanJarakTotalBukti 1Bukti 2Bukti 3Account NumberStatusApprovalAksi
{{ $loop->iteration }}{{ $form->user->name }}{{ $form->rayon->code }}{{ \Carbon\Carbon::parse($form->tanggal)->locale('id')->isoFormat('D MMMM Y') }}{{ $form->tujuan }}{{ $form->jarak }} km{{ number_format($form->total, 0, ',', '.') }} - {{-- approve / reject button --}} - @if ($form->status == 'On Progress') -
- @csrf - @method('PUT') - -
- -
- @csrf - @method('PUT') - -
+ @if ($form->bukti1) + + Download + @else - @if ($form->approved_at) - {{ \Carbon\Carbon::parse($form->approved_at)->locale('id')->isoFormat('D MMMM Y') }} - @elseif($form->rejected_at) - {{ \Carbon\Carbon::parse($form->rejected_at)->locale('id')->isoFormat('D MMMM Y') }} - @else - - - @endif + - @endif
- {{-- approve / reject button --}} - @if ($form->status == 'Approved' && $form->approved_at && !$form->final_approved_at) -
- @csrf - @method('PUT') - -
+ @if ($form->bukti2) + + Download + @else - @if ($form->final_approved_at) -
+ - + @endif +
+ @if ($form->bukti3) + + Download + + @else + - + @endif + {{ $form->account_number }} + @if ($form->status == 'On Progress') + {{ $form->status }} + @elseif ($form->status == 'Approved' || $form->status == 'Final Approved') + {{ $form->status }} + @else + {{ $form->status }} + @endif + + {{-- approve / reject button --}} + @if ($form->status == 'On Progress') + @csrf @method('PUT') + + +
+ @csrf + @method('PUT') +
@else - - + @if ($form->approved_at) + {{ \Carbon\Carbon::parse($form->approved_at)->locale('id')->isoFormat('D MMMM Y') }} + @elseif($form->rejected_at) + {{ \Carbon\Carbon::parse($form->rejected_at)->locale('id')->isoFormat('D MMMM Y') }} + @else + - + @endif @endif +
+ {{-- approve / reject button --}} + @if ($form->status == 'Approved' && $form->approved_at && !$form->final_approved_at) +
+ @csrf + @method('PUT') + +
+ @else + @if ($form->final_approved_at) +
+ @csrf + @method('PUT') + +
+ @else + - + @endif + @endif +
+ @if (auth()->user()->can('forms.country.edit')) + + + + @endif + + @if (auth()->user()->can('forms.country.delete')) +
+ @csrf + @method('DELETE') + +
@endif
- @if (auth()->user()->can('forms.country.edit')) - - - - @endif - - @if (auth()->user()->can('forms.country.delete')) -
- @csrf - @method('DELETE') - -
- @endif -
+ + @endforeach + + +
@@ -192,152 +194,154 @@

Form Vehicle Running Cost

- - - - - - - - - - - - - - - - - @if (auth()->user()->can('approval.approve') || auth()->user()->can('final_approval.approve')) - - @endif - - - - - @foreach ($forms['form_vehicle_running_cost'] as $index => $form) - - - - - - - - - - - - - - - @if (auth()->user()->can('approval.approve')) +
+
#NamaTanggalLiterHargaJarakTipe BensinNomor PolisiBukti 1Bukti 2Bukti 3Account NumberStatusApprovalAksi
{{ $loop->iteration }}{{ $form->user->name }}{{ \Carbon\Carbon::parse($form->tanggal)->locale('id')->isoFormat('dddd, D MMMM Y HH:mm:ss') }}{{ $form->liter }}{{ number_format($form->harga, 0, ',', '.') }}{{ $form->jarak }}{{ $form->tipe_bensin }}{{ $form->nopol }} - @if ($form->bukti1) - - Download - - @else - - - @endif - - @if ($form->bukti2) - - Download - - @else - - - @endif - - @if ($form->bukti3) - - Download - - @else - - - @endif - {{ $form->account_number }} - @if ($form->status == 'On Progress') - {{ $form->status }} - @elseif ($form->status == 'Approved' || $form->status == 'Final Approved') - {{ $form->status }} - @else - {{ $form->status }} - @endif -
+ + + + + + + + + + + + + + + + @if (auth()->user()->can('approval.approve') || auth()->user()->can('final_approval.approve')) + + @endif + + + + + @foreach ($forms['form_vehicle_running_cost'] as $index => $form) + + + + + + + + + - @elseif(auth()->user()->can('final_approval.approve')) + + + + @if (auth()->user()->can('approval.approve')) + + @elseif(auth()->user()->can('final_approval.approve')) + + @endif + - @endif - - - @endforeach - -
#NamaTanggalLiterHargaJarakTipe BensinNomor PolisiBukti 1Bukti 2Bukti 3Account NumberStatusApprovalAksi
{{ $loop->iteration }}{{ $form->user->name }}{{ \Carbon\Carbon::parse($form->tanggal)->locale('id')->isoFormat('dddd, D MMMM Y HH:mm:ss') }}{{ $form->liter }}{{ number_format($form->harga, 0, ',', '.') }}{{ $form->jarak }}{{ $form->tipe_bensin }}{{ $form->nopol }} - {{-- approve / reject button --}} - @if ($form->status == 'On Progress') -
- @csrf - @method('PUT') - -
- -
- @csrf - @method('PUT') - -
+ @if ($form->bukti1) + + Download + @else - @if ($form->approved_at) - {{ \Carbon\Carbon::parse($form->approved_at)->locale('id')->isoFormat('D MMMM Y') }} - @elseif($form->rejected_at) - {{ \Carbon\Carbon::parse($form->rejected_at)->locale('id')->isoFormat('D MMMM Y') }} - @else - - - @endif + - @endif
- {{-- approve / reject button --}} - @if ($form->status == 'Approved' && $form->approved_at && !$form->final_approved_at) -
- @csrf - @method('PUT') - -
+ @if ($form->bukti2) + + Download + @else - @if ($form->final_approved_at) -
+ - + @endif +
+ @if ($form->bukti3) + + Download + + @else + - + @endif + {{ $form->account_number }} + @if ($form->status == 'On Progress') + {{ $form->status }} + @elseif ($form->status == 'Approved' || $form->status == 'Final Approved') + {{ $form->status }} + @else + {{ $form->status }} + @endif + + {{-- approve / reject button --}} + @if ($form->status == 'On Progress') + @csrf @method('PUT') + + +
+ @csrf + @method('PUT') +
@else - - + @if ($form->approved_at) + {{ \Carbon\Carbon::parse($form->approved_at)->locale('id')->isoFormat('D MMMM Y') }} + @elseif($form->rejected_at) + {{ \Carbon\Carbon::parse($form->rejected_at)->locale('id')->isoFormat('D MMMM Y') }} + @else + - + @endif @endif +
+ {{-- approve / reject button --}} + @if ($form->status == 'Approved' && $form->approved_at && !$form->final_approved_at) +
+ @csrf + @method('PUT') + +
+ @else + @if ($form->final_approved_at) +
+ @csrf + @method('PUT') + +
+ @else + - + @endif + @endif +
+ @if (auth()->user()->can('forms.vehicle.edit')) + + + + @endif + + @if (auth()->user()->can('forms.vehicle.delete')) +
+ @csrf + @method('DELETE') + +
@endif
- @if (auth()->user()->can('forms.vehicle.edit')) - - - - @endif - - @if (auth()->user()->can('forms.vehicle.delete')) -
- @csrf - @method('DELETE') - -
- @endif -
+ + @endforeach + + +
@@ -351,150 +355,152 @@

Form Entertainment Presentation

- - - - - - - - - - - - - - - - @if (auth()->user()->can('approval.approve') || auth()->user()->can('final_approval.approve')) - - @endif - - - - - @foreach ($forms['form_entertainment_presentation'] as $index => $form) - - - - - - - - - - - - - - @if (auth()->user()->can('approval.approve')) +
+
#NamaTanggalJenisKeteranganTotalNama PenerimaBukti 1Bukti 2Bukti 3Account NumberStatusApprovalAksi
{{ $loop->iteration }}{{ $form->user->name }}{{ \Carbon\Carbon::parse($form->tanggal)->locale('id')->isoFormat('D MMMM Y') }}{{ $form->jenis }}{{ $form->keterangan }}{{ number_format($form->total, 0, ',', '.') }}{{ $form->name }} - @if ($form->bukti1) - - Download - - @else - - - @endif - - @if ($form->bukti2) - - Download - - @else - - - @endif - - @if ($form->bukti3) - - Download - - @else - - - @endif - {{ $form->account_number }} - @if ($form->status == 'On Progress') - {{ $form->status }} - @elseif ($form->status == 'Approved' || $form->status == 'Final Approved') - {{ $form->status }} - @else - {{ $form->status }} - @endif -
+ + + + + + + + + + + + + + + @if (auth()->user()->can('approval.approve') || auth()->user()->can('final_approval.approve')) + + @endif + + + + + @foreach ($forms['form_entertainment_presentation'] as $index => $form) + + + + + + + + - @elseif(auth()->user()->can('final_approval.approve')) + + + + @if (auth()->user()->can('approval.approve')) + + @elseif(auth()->user()->can('final_approval.approve')) + + @endif + - @endif - - - @endforeach - -
#NamaTanggalJenisKeteranganTotalNama PenerimaBukti 1Bukti 2Bukti 3Account NumberStatusApprovalAksi
{{ $loop->iteration }}{{ $form->user->name }}{{ \Carbon\Carbon::parse($form->tanggal)->locale('id')->isoFormat('D MMMM Y') }}{{ $form->jenis }}{{ $form->keterangan }}{{ number_format($form->total, 0, ',', '.') }}{{ $form->name }} - {{-- approve / reject button --}} - @if ($form->status == 'On Progress') -
- @csrf - @method('PUT') - -
- -
- @csrf - @method('PUT') - -
+ @if ($form->bukti1) + + Download + @else - @if ($form->approved_at) - {{ \Carbon\Carbon::parse($form->approved_at)->locale('id')->isoFormat('D MMMM Y') }} - @elseif($form->rejected_at) - {{ \Carbon\Carbon::parse($form->rejected_at)->locale('id')->isoFormat('D MMMM Y') }} - @else - - - @endif + - @endif
- {{-- approve / reject button --}} - @if ($form->status == 'Approved' && $form->approved_at && !$form->final_approved_at) -
- @csrf - @method('PUT') - -
+ @if ($form->bukti2) + + Download + @else - @if ($form->final_approved_at) -
+ - + @endif +
+ @if ($form->bukti3) + + Download + + @else + - + @endif + {{ $form->account_number }} + @if ($form->status == 'On Progress') + {{ $form->status }} + @elseif ($form->status == 'Approved' || $form->status == 'Final Approved') + {{ $form->status }} + @else + {{ $form->status }} + @endif + + {{-- approve / reject button --}} + @if ($form->status == 'On Progress') + @csrf @method('PUT') + + +
+ @csrf + @method('PUT') +
@else - - + @if ($form->approved_at) + {{ \Carbon\Carbon::parse($form->approved_at)->locale('id')->isoFormat('D MMMM Y') }} + @elseif($form->rejected_at) + {{ \Carbon\Carbon::parse($form->rejected_at)->locale('id')->isoFormat('D MMMM Y') }} + @else + - + @endif @endif +
+ {{-- approve / reject button --}} + @if ($form->status == 'Approved' && $form->approved_at && !$form->final_approved_at) +
+ @csrf + @method('PUT') + +
+ @else + @if ($form->final_approved_at) +
+ @csrf + @method('PUT') + +
+ @else + - + @endif + @endif +
+ @if (auth()->user()->can('forms.entertainment.edit')) + + + + @endif + + @if (auth()->user()->can('forms.entertainment.delete')) +
+ @csrf + @method('DELETE') + +
@endif
- @if (auth()->user()->can('forms.entertainment.edit')) - - - - @endif - - @if (auth()->user()->can('forms.entertainment.delete')) -
- @csrf - @method('DELETE') - -
- @endif -
+ + @endforeach + + +
@@ -508,150 +514,152 @@

Form Meeting Seminar

- - - - - - - - - - - - - - - - @if (auth()->user()->can('approval.approve') || auth()->user()->can('final_approval.approve')) - - @endif - - - - - @foreach ($forms['form_meeting_seminar'] as $index => $form) - - - - - - - - - - - - - - @if (auth()->user()->can('approval.approve')) +
+
#NamaTanggalAllowanceTransport AnkotHotelTotalBukti 1Bukti 2Bukti 3Account NumberStatusApprovalAksi
{{ $loop->iteration }}{{ $form->user->name }}{{ \Carbon\Carbon::parse($form->created_at)->locale('id')->isoFormat('D MMMM Y') }}{{ number_format($form->allowance, 0, ',', '.') }}{{ number_format($form->transport_ankot, 0, ',', '.') }}{{ number_format($form->hotel, 0, ',', '.') }}{{ number_format($form->total, 0, ',', '.') }} - @if ($form->bukti1) - - Download - - @else - - - @endif - - @if ($form->bukti2) - - Download - - @else - - - @endif - - @if ($form->bukti3) - - Download - - @else - - - @endif - {{ $form->account_number }} - @if ($form->status == 'On Progress') - {{ $form->status }} - @elseif ($form->status == 'Approved' || $form->status == 'Final Approved') - {{ $form->status }} - @else - {{ $form->status }} - @endif -
+ + + + + + + + + + + + + + + @if (auth()->user()->can('approval.approve') || auth()->user()->can('final_approval.approve')) + + @endif + + + + + @foreach ($forms['form_meeting_seminar'] as $index => $form) + + + + + + + + - @elseif(auth()->user()->can('final_approval.approve')) + + + + @if (auth()->user()->can('approval.approve')) + + @elseif(auth()->user()->can('final_approval.approve')) + + @endif + - @endif - - - @endforeach - -
#NamaTanggalAllowanceTransport AnkotHotelTotalBukti 1Bukti 2Bukti 3Account NumberStatusApprovalAksi
{{ $loop->iteration }}{{ $form->user->name }}{{ \Carbon\Carbon::parse($form->created_at)->locale('id')->isoFormat('D MMMM Y') }}{{ number_format($form->allowance, 0, ',', '.') }}{{ number_format($form->transport_ankot, 0, ',', '.') }}{{ number_format($form->hotel, 0, ',', '.') }}{{ number_format($form->total, 0, ',', '.') }} - {{-- approve / reject button --}} - @if ($form->status == 'On Progress') -
- @csrf - @method('PUT') - -
- -
- @csrf - @method('PUT') - -
+ @if ($form->bukti1) + + Download + @else - @if ($form->approved_at) - {{ \Carbon\Carbon::parse($form->approved_at)->locale('id')->isoFormat('D MMMM Y') }} - @elseif($form->rejected_at) - {{ \Carbon\Carbon::parse($form->rejected_at)->locale('id')->isoFormat('D MMMM Y') }} - @else - - - @endif + - @endif
- {{-- approve / reject button --}} - @if ($form->status == 'Approved' && $form->approved_at && !$form->final_approved_at) -
- @csrf - @method('PUT') - -
+ @if ($form->bukti2) + + Download + @else - @if ($form->final_approved_at) -
+ - + @endif +
+ @if ($form->bukti3) + + Download + + @else + - + @endif + {{ $form->account_number }} + @if ($form->status == 'On Progress') + {{ $form->status }} + @elseif ($form->status == 'Approved' || $form->status == 'Final Approved') + {{ $form->status }} + @else + {{ $form->status }} + @endif + + {{-- approve / reject button --}} + @if ($form->status == 'On Progress') + @csrf @method('PUT') + + +
+ @csrf + @method('PUT') +
@else - - + @if ($form->approved_at) + {{ \Carbon\Carbon::parse($form->approved_at)->locale('id')->isoFormat('D MMMM Y') }} + @elseif($form->rejected_at) + {{ \Carbon\Carbon::parse($form->rejected_at)->locale('id')->isoFormat('D MMMM Y') }} + @else + - + @endif @endif +
+ {{-- approve / reject button --}} + @if ($form->status == 'Approved' && $form->approved_at && !$form->final_approved_at) +
+ @csrf + @method('PUT') + +
+ @else + @if ($form->final_approved_at) +
+ @csrf + @method('PUT') + +
+ @else + - + @endif + @endif +
+ @if (auth()->user()->can('forms.meeting.edit')) + + + + @endif + + @if (auth()->user()->can('forms.meeting.delete')) +
+ @csrf + @method('DELETE') + +
@endif
- @if (auth()->user()->can('forms.meeting.edit')) - - - - @endif - - @if (auth()->user()->can('forms.meeting.delete')) -
- @csrf - @method('DELETE') - -
- @endif -
+ + @endforeach + + +
@@ -665,148 +673,150 @@

Form Others

- - - - - - - - - - - - - - - @if (auth()->user()->can('approval.approve') || auth()->user()->can('final_approval.approve')) - - @endif - - - - - @foreach ($forms['form_others'] as $index => $form) - - - - - - - - - - - - - @if (auth()->user()->can('approval.approve')) +
+
#NamaTanggalJenisKeteranganTotalBukti 1Bukti 2Bukti 3Account NumberStatusApprovalAksi
{{ $loop->iteration }}{{ $form->user->name }}{{ \Carbon\Carbon::parse($form->tanggal)->locale('id')->isoFormat('D MMMM Y') }}{{ $form->kategori->name }}{{ $form->keterangan }}{{ number_format($form->total, 0, ',', '.') }} - @if ($form->bukti1) - - Download - - @else - - - @endif - - @if ($form->bukti2) - - Download - - @else - - - @endif - - @if ($form->bukti3) - - Download - - @else - - - @endif - {{ $form->account_number }} - @if ($form->status == 'On Progress') - {{ $form->status }} - @elseif ($form->status == 'Approved' || $form->status == 'Final Approved') - {{ $form->status }} - @else - {{ $form->status }} - @endif -
+ + + + + + + + + + + + + + @if (auth()->user()->can('approval.approve') || auth()->user()->can('final_approval.approve')) + + @endif + + + + + @foreach ($forms['form_others'] as $index => $form) + + + + + + + - @elseif(auth()->user()->can('final_approval.approve')) + + + + @if (auth()->user()->can('approval.approve')) + + @elseif(auth()->user()->can('final_approval.approve')) + + @endif + - @endif - - - @endforeach - -
#NamaTanggalJenisKeteranganTotalBukti 1Bukti 2Bukti 3Account NumberStatusApprovalAksi
{{ $loop->iteration }}{{ $form->user->name }}{{ \Carbon\Carbon::parse($form->tanggal)->locale('id')->isoFormat('D MMMM Y') }}{{ $form->kategori->name }}{{ $form->keterangan }}{{ number_format($form->total, 0, ',', '.') }} - {{-- approve / reject button --}} - @if ($form->status == 'On Progress') -
- @csrf - @method('PUT') - -
- -
- @csrf - @method('PUT') - -
+ @if ($form->bukti1) + + Download + @else - @if ($form->approved_at) - {{ \Carbon\Carbon::parse($form->approved_at)->locale('id')->isoFormat('D MMMM Y') }} - @elseif($form->rejected_at) - {{ \Carbon\Carbon::parse($form->rejected_at)->locale('id')->isoFormat('D MMMM Y') }} - @else - - - @endif + - @endif
- {{-- approve / reject button --}} - @if ($form->status == 'Approved' && $form->approved_at && !$form->final_approved_at) -
- @csrf - @method('PUT') - -
+ @if ($form->bukti2) + + Download + @else - @if ($form->final_approved_at) -
+ - + @endif +
+ @if ($form->bukti3) + + Download + + @else + - + @endif + {{ $form->account_number }} + @if ($form->status == 'On Progress') + {{ $form->status }} + @elseif ($form->status == 'Approved' || $form->status == 'Final Approved') + {{ $form->status }} + @else + {{ $form->status }} + @endif + + {{-- approve / reject button --}} + @if ($form->status == 'On Progress') + @csrf @method('PUT') + + +
+ @csrf + @method('PUT') +
@else - - + @if ($form->approved_at) + {{ \Carbon\Carbon::parse($form->approved_at)->locale('id')->isoFormat('D MMMM Y') }} + @elseif($form->rejected_at) + {{ \Carbon\Carbon::parse($form->rejected_at)->locale('id')->isoFormat('D MMMM Y') }} + @else + - + @endif @endif +
+ {{-- approve / reject button --}} + @if ($form->status == 'Approved' && $form->approved_at && !$form->final_approved_at) +
+ @csrf + @method('PUT') + +
+ @else + @if ($form->final_approved_at) +
+ @csrf + @method('PUT') + +
+ @else + - + @endif + @endif +
+ @if (auth()->user()->can('forms.other.edit')) + + + + @endif + + @if (auth()->user()->can('forms.other.delete')) +
+ @csrf + @method('DELETE') + +
@endif
- @if (auth()->user()->can('forms.other.edit')) - - - - @endif - - @if (auth()->user()->can('forms.other.delete')) -
- @csrf - @method('DELETE') - -
- @endif -
+ + @endforeach + + +
@@ -820,19 +830,19 @@ @endsection diff --git a/resources/views/backend/pages/admins/index.blade.php b/resources/views/backend/pages/admins/index.blade.php index 80da4b6..f8d468c 100644 --- a/resources/views/backend/pages/admins/index.blade.php +++ b/resources/views/backend/pages/admins/index.blade.php @@ -40,58 +40,60 @@
@include('backend.layouts.partials.messages') - - - - - - - - - - - - - - @foreach ($admins as $admin) +
+
{{ __('Sl') }}{{ __('Name') }}{{ __('Email') }}{{ __('Roles') }}RegionCabang{{ __('Action') }}
+ - - - - - - - + + + + + + + - @endforeach - -
{{ $loop->index + 1 }}{{ $admin->name }}{{ $admin->email }} - @foreach ($admin->roles as $role) - - {{ $role->name }} - - @endforeach - {{ $admin->getMyCabangAndRegion()['region'] }}{{ $admin->getMyCabangAndRegion()['cabang'] }} - View Expense - @if (auth()->user()->can('admin.edit')) - Edit - @endif - - @if (auth()->user()->can('admin.delete')) - - {{ __('Delete') }} - - - - @endif - {{ __('Sl') }}{{ __('Name') }}{{ __('Email') }}{{ __('Roles') }}RegionCabang{{ __('Action') }}
+ + + @foreach ($admins as $admin) + + {{ $loop->index + 1 }} + {{ $admin->name }} + {{ $admin->email }} + + @foreach ($admin->roles as $role) + + {{ $role->name }} + + @endforeach + + {{ $admin->getMyCabangAndRegion()['region'] }} + {{ $admin->getMyCabangAndRegion()['cabang'] }} + + View Expense + @if (auth()->user()->can('admin.edit')) + Edit + @endif + + @if (auth()->user()->can('admin.delete')) + + {{ __('Delete') }} + + + + @endif + + + @endforeach + + +
@@ -106,7 +108,7 @@ $(document).ready(function () { if ($('#dataTable').length) { $('#dataTable').DataTable({ - responsive: true, + responsive: false, dom: 'Bfrtip', buttons: [ 'excel', 'pdf', 'print' diff --git a/resources/views/backend/pages/audit_trail/index.blade.php b/resources/views/backend/pages/audit_trail/index.blade.php index d6d3410..e477919 100644 --- a/resources/views/backend/pages/audit_trail/index.blade.php +++ b/resources/views/backend/pages/audit_trail/index.blade.php @@ -33,48 +33,52 @@
@include('backend.layouts.partials.messages') - - - - - - - - - - - - - - @foreach ($data as $item) +
+
{{ __('User') }}{{ __('Ip Address') }}{{ __('Action') }}{{ __('Activity') }}BrowserUser AgentTime
+ - - - - - - - + + + + + + + + - @endforeach - -
- {{ $item->user ? $item->user->username : preg_replace('/\).*$/', '', explode('(', $item->activity)[1]) }} - {{ $item->ip_address }} - @php - $color = 'info'; - if ($item->action == 'Create') { - $color = 'success'; - } elseif ($item->action == 'Update') { - $color = 'warning'; - } elseif ($item->action == 'Delete') { - $color = 'danger'; - } - @endphp -
- {{ $item->action }} -
-
{{ $item->activity }}{{ $item->browser }}{{ $item->user_agent }}{{ $item->created_at->diffForHumans() }}{{ __('User') }}{{ __('Ip Address') }}{{ __('Action') }}{{ __('Activity') }}BrowserUser AgentTanggalWaktu
+ + + @foreach ($data as $item) + + + {{ $item->user ? $item->user->username : preg_replace('/\).*$/', '', explode('(', $item->activity)[1]) }} + + {{ $item->ip_address }} + + @php + $color = 'info'; + if ($item->action == 'Create') { + $color = 'success'; + } elseif ($item->action == 'Update') { + $color = 'warning'; + } elseif ($item->action == 'Delete') { + $color = 'danger'; + } + @endphp +
+ {{ $item->action }} +
+ + {{ $item->activity }} + {{ $item->browser }} + {{ $item->user_agent }} + {{ $item->created_at }} + {{ $item->created_at->diffForHumans() }} + + @endforeach + + +
@@ -89,11 +93,12 @@ $(document).ready(function () { if ($('#dataTable').length) { $('#dataTable').DataTable({ - responsive: true, + responsive: false, dom: 'Bfrtip', buttons: [ 'excel', 'pdf', 'print' - ] + ], + order: [[6, 'desc']] }); } }); diff --git a/resources/views/backend/pages/forms/entertainment/index.blade.php b/resources/views/backend/pages/forms/entertainment/index.blade.php index 3382e67..f5fe56c 100644 --- a/resources/views/backend/pages/forms/entertainment/index.blade.php +++ b/resources/views/backend/pages/forms/entertainment/index.blade.php @@ -246,7 +246,7 @@ $(document).ready(function () { if ($('#dataTable').length) { $('#dataTable').DataTable({ - responsive: true, + responsive: false, dom: 'Bfrtip', buttons: [ 'excel', 'pdf', 'print' diff --git a/resources/views/backend/pages/forms/meeting/index.blade.php b/resources/views/backend/pages/forms/meeting/index.blade.php index 798045a..312bd01 100644 --- a/resources/views/backend/pages/forms/meeting/index.blade.php +++ b/resources/views/backend/pages/forms/meeting/index.blade.php @@ -246,7 +246,7 @@ $(document).ready(function () { if ($('#dataTable').length) { $('#dataTable').DataTable({ - responsive: true, + responsive: false, dom: 'Bfrtip', buttons: [ 'excel', 'pdf', 'print' diff --git a/resources/views/backend/pages/forms/other/index.blade.php b/resources/views/backend/pages/forms/other/index.blade.php index 759fe3e..a2f8599 100644 --- a/resources/views/backend/pages/forms/other/index.blade.php +++ b/resources/views/backend/pages/forms/other/index.blade.php @@ -244,7 +244,7 @@ $(document).ready(function () { if ($('#dataTable').length) { $('#dataTable').DataTable({ - responsive: true, + responsive: false, dom: 'Bfrtip', buttons: [ 'excel', 'pdf', 'print' diff --git a/resources/views/backend/pages/forms/upcountry/create.blade.php b/resources/views/backend/pages/forms/upcountry/create.blade.php index 1afca65..172b62c 100644 --- a/resources/views/backend/pages/forms/upcountry/create.blade.php +++ b/resources/views/backend/pages/forms/upcountry/create.blade.php @@ -48,7 +48,7 @@
- +
diff --git a/resources/views/backend/pages/forms/upcountry/edit.blade.php b/resources/views/backend/pages/forms/upcountry/edit.blade.php index 158f4ac..16043ff 100644 --- a/resources/views/backend/pages/forms/upcountry/edit.blade.php +++ b/resources/views/backend/pages/forms/upcountry/edit.blade.php @@ -5,6 +5,7 @@ @endsection @section('admin-content') +
@@ -48,27 +49,27 @@
- +
- +
- +
- +
- +
@@ -91,4 +92,38 @@
+ + @endsection diff --git a/resources/views/backend/pages/forms/upcountry/index.blade.php b/resources/views/backend/pages/forms/upcountry/index.blade.php index a080d90..3cd7a10 100644 --- a/resources/views/backend/pages/forms/upcountry/index.blade.php +++ b/resources/views/backend/pages/forms/upcountry/index.blade.php @@ -39,7 +39,7 @@
-

Rp {{ number_format($forms->whereIn('status', ['Approved', 'Closed'])->sum('total'), 0, ',', '.') }}

+

Rp {{ number_format($forms->whereIn('status', ['Approved', 'Closed'])->sum('approved_total'), 0, ',', '.') }}

Approved Expenses

@@ -90,6 +90,7 @@ Tujuan Jarak Total + Total Approved Bukti 1 Bukti 2 Bukti 3 @@ -117,9 +118,16 @@ {{ $item->tujuan }} {{ $item->jarak }} km {{ number_format($item->total, 0, ',', '.') }} + + @if ($item->approved_total) + {{ number_format($item->approved_total, 0, ',', '.') }} + @else + - + @endif + @if ($item->bukti1) - + Download @else @@ -128,7 +136,7 @@ @if ($item->bukti2) - + Download @else @@ -137,7 +145,7 @@ @if ($item->bukti3) - + Download @else @@ -158,15 +166,15 @@ {{-- approve / reject button --}} @if ($item->status == 'On Progress') -
- @csrf - @method('PUT') -
-
+ @csrf @method('PUT')
+
+ +
@endsection @section('scripts') + $(document).ready(function () { + // Uncheck all checkboxes on page refresh + $('.custom-control-input').prop('checked', false); + + if ($('#dataTable').length) { + $('#dataTable').DataTable({ + responsive: false, + dom: 'Bfrtip', + buttons: ['excel', 'pdf', 'print'] + }); + } + + // Handle Approve Button Click + $('.open-approve-modal').on('click', function () { + const approveUrl = $(this).data('id'); + + // Show spinner and hide content initially + $('#loadingSpinner').show(); + $('#modalContent').addClass('d-none'); + + $('#approveForm').attr('action', approveUrl); // Set the form action + $('#approveModal').modal('show'); // Show the modal + + // Get detail from /forms/up-country/detail/{id} + $.get(approveUrl.replace('approve', 'detail'), function (data) { + const formatter = new Intl.NumberFormat('id-ID', { + style: 'currency', + currency: 'IDR', + minimumFractionDigits: 0 + }); + + $('#allowance_value').text(formatter.format(data.allowance)); + $('#transport_dalkot_value').text(formatter.format(data.transport_dalkot)); + $('#transport_ankot_value').text(formatter.format(data.transport_ankot)); + $('#hotel_value').text(formatter.format(data.hotel)); + + // Assign data values to checkboxes + $('#allowance').data('value', data.allowance); + $('#transport_dalkot').data('value', data.transport_dalkot); + $('#transport_ankot').data('value', data.transport_ankot); + $('#hotel').data('value', data.hotel); + + // Detail data + $('#user').text(data.user.name); + $('#expense_number').text(data.expense_number); + $('#rayon').text(data.rayon.code); + $('#tanggal').text(new Date(data.tanggal).toLocaleDateString('id-ID', { + year: 'numeric', + month: 'long', + day: 'numeric' + })); + $('#tujuan').text(data.tujuan); + $('#jarak').text(data.jarak + ' km'); + $('#bukti1').html(data.bukti1 ? 'Download' : '-'); + $('#bukti2').html(data.bukti2 ? 'Download' : '-'); + $('#bukti3').html(data.bukti3 ? 'Download' : '-'); + + // Hide spinner and show content + $('#loadingSpinner').hide(); + $('#loadingSpinner').removeClass('d-flex'); + $('#loadingSpinner').addClass('d-none'); + $('#modalContent').removeClass('d-none'); + + // Reset the total to zero + $('#total').val(0); + }); + }); + + // Update total dynamically + $('.custom-control-input').on('change', function () { + let total = 0; + + // Calculate the total based on checked checkboxes + $('.custom-control-input:checked').each(function () { + total += parseFloat($(this).data('value') || 0); + }); + + // Update the total field with formatted value + const formatter = new Intl.NumberFormat('id-ID', { + style: 'currency', + currency: 'IDR', + minimumFractionDigits: 0 + }); + + $('#total').val(formatter.format(total)); + }); + + // Uncheck all checkboxes when the modal is closed + $('#approveModal').on('hidden.bs.modal', function () { + $('.custom-control-input').prop('checked', false); // Uncheck all checkboxes + $('#total').val('0'); // Reset total to 0 + }); + }); + @endsection diff --git a/resources/views/backend/pages/forms/vehicle/create.blade.php b/resources/views/backend/pages/forms/vehicle/create.blade.php index bb16674..9086f07 100644 --- a/resources/views/backend/pages/forms/vehicle/create.blade.php +++ b/resources/views/backend/pages/forms/vehicle/create.blade.php @@ -44,7 +44,7 @@
- +
diff --git a/resources/views/backend/pages/forms/vehicle/edit.blade.php b/resources/views/backend/pages/forms/vehicle/edit.blade.php index caa20b2..0bd3b0d 100644 --- a/resources/views/backend/pages/forms/vehicle/edit.blade.php +++ b/resources/views/backend/pages/forms/vehicle/edit.blade.php @@ -44,7 +44,7 @@
- +
diff --git a/resources/views/backend/pages/forms/vehicle/index.blade.php b/resources/views/backend/pages/forms/vehicle/index.blade.php index bea8331..ba04e22 100644 --- a/resources/views/backend/pages/forms/vehicle/index.blade.php +++ b/resources/views/backend/pages/forms/vehicle/index.blade.php @@ -116,7 +116,7 @@ {{ \Carbon\Carbon::parse($item->tanggal)->locale('id')->isoFormat('dddd, D MMMM Y HH:mm:ss') }} {{ $item->liter }} {{ number_format($item->total, 0, ',', '.') }} - {{ $item->jarak }} + {{ $item->jarak }} km {{ $item->tipe_bensin }} {{ $item->nopol }} @@ -248,7 +248,7 @@ $(document).ready(function () { if ($('#dataTable').length) { $('#dataTable').DataTable({ - responsive: true, + responsive: false, dom: 'Bfrtip', buttons: [ 'excel', 'pdf', 'print' diff --git a/resources/views/backend/pages/master/category/index.blade.php b/resources/views/backend/pages/master/category/index.blade.php index c1559e4..129507f 100644 --- a/resources/views/backend/pages/master/category/index.blade.php +++ b/resources/views/backend/pages/master/category/index.blade.php @@ -35,45 +35,47 @@
@include('backend.layouts.partials.messages') - - - - - - - - - - - @foreach ($categories as $category) - - - - - + + @endforeach + +
#NamaAccount NumberAksi
{{ $loop->index + 1 }}{{ $category->name }}{{ $category->account_number }} - @if (auth()->user()->can('admin.edit')) - Edit - @endif - @if (auth()->user()->can('admin.delete')) - - {{ __('Delete') }} - +
+ + + + + + + + + + + @foreach ($categories as $category) + + + + + - - @endforeach - -
#NamaAccount NumberAksi
{{ $loop->index + 1 }}{{ $category->name }}{{ $category->account_number }} + @if (auth()->user()->can('admin.edit')) + Edit + @endif + @if (auth()->user()->can('admin.delete')) + + {{ __('Delete') }} + - - @endif -
+ + @endif +
+
@@ -86,7 +88,7 @@ $(document).ready(function () { if ($('#dataTable').length) { $('#dataTable').DataTable({ - responsive: true, + responsive: false, dom: 'Bfrtip', buttons: [ 'excel', 'pdf', 'print' diff --git a/resources/views/backend/pages/master/cost/index.blade.php b/resources/views/backend/pages/master/cost/index.blade.php index 8efb131..b21dffb 100644 --- a/resources/views/backend/pages/master/cost/index.blade.php +++ b/resources/views/backend/pages/master/cost/index.blade.php @@ -35,45 +35,47 @@
@include('backend.layouts.partials.messages') - - - - - - - - - - - @foreach ($costs as $cost) - - - - - + + @endforeach + +
#CodeNamaAksi
{{ $loop->index + 1 }}{{ $cost->code }}{{ $cost->name }} - @if (auth()->user()->can('admin.edit')) - Edit - @endif - @if (auth()->user()->can('admin.delete')) - - {{ __('Delete') }} - +
+ + + + + + + + + + + @foreach ($costs as $cost) + + + + + - - @endforeach - -
#CodeNamaAksi
{{ $loop->index + 1 }}{{ $cost->code }}{{ $cost->name }} + @if (auth()->user()->can('admin.edit')) + Edit + @endif + @if (auth()->user()->can('admin.delete')) + + {{ __('Delete') }} + - - @endif -
+ + @endif +
+
@@ -86,7 +88,7 @@ $(document).ready(function () { if ($('#dataTable').length) { $('#dataTable').DataTable({ - responsive: true, + responsive: false, dom: 'Bfrtip', buttons: [ 'excel', 'pdf', 'print' diff --git a/resources/views/backend/pages/master/rayon/index.blade.php b/resources/views/backend/pages/master/rayon/index.blade.php index 396b561..ddd42c9 100644 --- a/resources/views/backend/pages/master/rayon/index.blade.php +++ b/resources/views/backend/pages/master/rayon/index.blade.php @@ -35,45 +35,47 @@
@include('backend.layouts.partials.messages') - - - - - - - - - - - @foreach ($rayons as $rayon) - - - - - + + @endforeach + +
#CodeNamaAksi
{{ $loop->index + 1 }}{{ $rayon->code }}{{ $rayon->name }} - @if (auth()->user()->can('admin.edit')) - Edit - @endif - @if (auth()->user()->can('admin.delete')) - - {{ __('Delete') }} - +
+ + + + + + + + + + + @foreach ($rayons as $rayon) + + + + + - - @endforeach - -
#CodeNamaAksi
{{ $loop->index + 1 }}{{ $rayon->code }}{{ $rayon->name }} + @if (auth()->user()->can('admin.edit')) + Edit + @endif + @if (auth()->user()->can('admin.delete')) + + {{ __('Delete') }} + - - @endif -
+ + @endif +
+
diff --git a/resources/views/backend/pages/roles/index.blade.php b/resources/views/backend/pages/roles/index.blade.php index 70f44ac..7eb2a0c 100644 --- a/resources/views/backend/pages/roles/index.blade.php +++ b/resources/views/backend/pages/roles/index.blade.php @@ -38,56 +38,58 @@
@include('backend.layouts.partials.messages') - - - - - - - - - - - @foreach ($roles as $role) +
+
{{ __('Sl') }}{{ __('Role Name') }}{{ __('Permission List') }}{{ __('Action') }}
+ - - - - + + + + - @endforeach - -
{{ $loop->index + 1 }}{{ $role->name }} - @foreach ($role->permissions as $permission) - - {{ $permission->name }} - - @endforeach - - @if (auth()->user()->can('admin.edit')) - Edit - @endif - @if (auth()->user()->can('admin.delete')) - - {{ __('Delete') }} - - - - @endif - Assign - Menus - - {{ __('Sl') }}{{ __('Role Name') }}{{ __('Permission List') }}{{ __('Action') }}
+ + + @foreach ($roles as $role) + + {{ $loop->index + 1 }} + {{ $role->name }} + + @foreach ($role->permissions as $permission) + + {{ $permission->name }} + + @endforeach + + + @if (auth()->user()->can('admin.edit')) + Edit + @endif + @if (auth()->user()->can('admin.delete')) + + {{ __('Delete') }} + + + + @endif + Assign + Menus + + + + @endforeach + + +
@@ -103,7 +105,7 @@ $(document).ready(function () { if ($('#dataTable').length) { $('#dataTable').DataTable({ - responsive: true, + responsive: false, dom: 'Bfrtip', buttons: [ 'excel', 'pdf', 'print' diff --git a/resources/views/layouts/partials/styles.blade.php b/resources/views/layouts/partials/styles.blade.php index 4493b0a..39eb2ba 100644 --- a/resources/views/layouts/partials/styles.blade.php +++ b/resources/views/layouts/partials/styles.blade.php @@ -25,6 +25,11 @@