diff --git a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php index 3960240..5c5e62e 100644 --- a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php +++ b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php @@ -42,7 +42,7 @@ class FormEntertainmentPresentationController extends Controller 'tanggal' => 'required', 'jenis' => 'required|in:entertainment,presentation,sponsorship', 'keterangan' => 'required', - 'total' => 'required|integer', + 'total' => 'required', 'name' => 'required', 'alamat' => 'required', 'nik_or_npwp' => 'required', @@ -141,7 +141,7 @@ class FormEntertainmentPresentationController extends Controller 'tanggal' => 'required', 'jenis' => 'required|in:entertainment,presentation,sponsorship', 'keterangan' => 'required', - 'total' => 'required|integer', + 'total' => 'required', 'name' => 'required', 'alamat' => 'required', 'nik_or_npwp' => 'required', @@ -155,7 +155,7 @@ class FormEntertainmentPresentationController extends Controller $kategori = Kategori::where('name', 'Entertainment & Presentation')->first(); $filePaths = []; - $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/entertainment/'; + $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/entertainment'; if ($request->hasFile('bukti1')) { $bukti1 = $request->file('bukti1'); diff --git a/app/Http/Controllers/Forms/FormMeetingSeminarController.php b/app/Http/Controllers/Forms/FormMeetingSeminarController.php new file mode 100644 index 0000000..90b1ee1 --- /dev/null +++ b/app/Http/Controllers/Forms/FormMeetingSeminarController.php @@ -0,0 +1,217 @@ +checkAuthorization(auth()->user(), ['forms.meeting.view']); + + $forms = FormMeetingSeminar::where('user_id', auth()->user()->id)->get(); + return view('backend.pages.forms.meeting.index', [ + 'forms' => $forms + ]); + } + + public function create() + { + $this->checkAuthorization(auth()->user(), ['forms.meeting.create']); + + return view('backend.pages.forms.meeting.create'); + } + + public function store(Request $request) + { + $this->checkAuthorization(auth()->user(), ['forms.meeting.create']); + + $request->validate([ + 'allowance' => 'required', + 'transport_ankot' => 'required', + 'hotel' => 'required', + 'total' => 'required', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048', + 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', + 'bukti3' => 'nullable|file|mimes:pdf', + ]); + + $cabang = UserHasCabang::with('cabang')->where('user_id', auth()->user()->id)->first()->cabang; + $region = Region::where('id', $cabang->region_id)->first(); + $kategori = Kategori::where('name', 'Meeting & Seminar')->first(); + + $filePaths = []; + $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/meeting'; + + if ($request->hasFile('bukti1')) { + $bukti1 = $request->file('bukti1'); + $filename = Str::uuid() . '.' . $bukti1->extension(); + + $filePaths['bukti1'] = $folderPath . '/' . $filename; + + NextCloudHelper::uploadFile( + $folderPath, + $bukti1->getContent(), + $filename + ); + + } + if ($request->hasFile('bukti2')) { + $bukti2 = $request->file('bukti2'); + $filename = Str::uuid() . '.' . $bukti2->extension(); + + $filePaths['bukti2'] = $folderPath . '/' . $filename; + + NextCloudHelper::uploadFile( + $folderPath, + $bukti2->getContent(), + $filename + ); + } + if ($request->hasFile('bukti3')) { + $bukti3 = $request->file('bukti3'); + $filename = Str::uuid() . '.' . $bukti3->extension(); + + $filePaths['bukti3'] = $folderPath . '/' . $filename; + + NextCloudHelper::uploadFile( + $folderPath, + $bukti3->getContent(), + $filename + ); + } + + // Generate sequence number and expense number + $sequence_number = FormMeetingSeminar::withTrashed()->where('expense_number', 'like', $region->code . '-' . $cabang->code . '-MTG-' . date('ym') . '%')->count() + 1; + $formatted_sequence_number = str_pad($sequence_number, 4, '0', STR_PAD_LEFT); + $expense_number = $region->code . '-' . $cabang->code . '-MTG-' . date('ym') . $formatted_sequence_number; + + // Save the form data + FormMeetingSeminar::create([ + 'expense_number' => $expense_number, + 'user_id' => auth()->user()->id, + 'allowance' => $request->allowance, + 'transport_ankot' => $request->transport_ankot, + 'hotel' => $request->hotel, + 'total' => $request->total, + 'bukti1' => $filePaths['bukti1'] ?? null, + 'bukti2' => $filePaths['bukti2'] ?? null, + 'bukti3' => $filePaths['bukti3'] ?? null, + 'account_number' => $kategori->account_number, + 'status' => 'On Progress', + ]); + + session()->flash('success', 'Form has been created.'); + return redirect()->route('forms.meeting'); + } + + public function edit($id) + { + $this->checkAuthorization(auth()->user(), ['forms.meeting.edit']); + + $form = FormMeetingSeminar::findOrfail($id); + return view('backend.pages.forms.meeting.edit', [ + 'form' => $form + ]); + } + + public function update(Request $request, $id) + { + $this->checkAuthorization(auth()->user(), ['forms.meeting.edit']); + + $request->validate([ + 'allowance' => 'required', + 'transport_ankot' => 'required', + 'hotel' => 'required', + 'total' => 'required', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048', + 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', + 'bukti3' => 'nullable|file|mimes:pdf', + ]); + + $cabang = UserHasCabang::with('cabang')->where('user_id', auth()->user()->id)->first()->cabang; + $region = Region::where('id', $cabang->region_id)->first(); + $kategori = Kategori::where('name', 'Meeting & Seminar')->first(); + + $filePaths = []; + $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/meeting'; + + if ($request->hasFile('bukti1')) { + $bukti1 = $request->file('bukti1'); + $filename = Str::uuid() . '.' . $bukti1->extension(); + + $filePaths['bukti1'] = $folderPath . '/' . $filename; + + NextCloudHelper::uploadFile( + $folderPath, + $bukti1->getContent(), + $filename + ); + + } + if ($request->hasFile('bukti2')) { + $bukti2 = $request->file('bukti2'); + $filename = Str::uuid() . '.' . $bukti2->extension(); + + $filePaths['bukti2'] = $folderPath . '/' . $filename; + + NextCloudHelper::uploadFile( + $folderPath, + $bukti2->getContent(), + $filename + ); + } + if ($request->hasFile('bukti3')) { + $bukti3 = $request->file('bukti3'); + $filename = Str::uuid() . '.' . $bukti3->extension(); + + $filePaths['bukti3'] = $folderPath . '/' . $filename; + + NextCloudHelper::uploadFile( + $folderPath, + $bukti3->getContent(), + $filename + ); + } + + // Save the form data + $form = FormMeetingSeminar::findOrfail($id); + $form->update([ + 'allowance' => $request->allowance, + 'transport_ankot' => $request->transport_ankot, + 'hotel' => $request->hotel, + 'total' => $request->total, + 'bukti1' => $filePaths['bukti1'] ?? $form->bukti1, + 'bukti2' => $filePaths['bukti2'] ?? $form->bukti2, + 'bukti3' => $filePaths['bukti3'] ?? $form->bukti3, + 'account_number' => $kategori->account_number, + 'status' => 'On Progress', + ]); + + session()->flash('success', 'Form has been updated.'); + return redirect()->route('forms.meeting'); + } + + public function destroy($id) + { + $this->checkAuthorization(auth()->user(), ['forms.meeting.delete']); + + $form = FormMeetingSeminar::findOrfail($id); + $form->delete(); + + session()->flash('success', 'Form has been deleted.'); + return redirect()->route('forms.meeting'); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Forms/FormUpCountryController.php b/app/Http/Controllers/Forms/FormUpCountryController.php index 9eea225..a352504 100644 --- a/app/Http/Controllers/Forms/FormUpCountryController.php +++ b/app/Http/Controllers/Forms/FormUpCountryController.php @@ -60,7 +60,7 @@ class FormUpCountryController extends Controller $kategori = Kategori::where('name', 'Up Country')->first(); $filePaths = []; - $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/upcountry/'; + $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/upcountry'; if ($request->hasFile('bukti1')) { $bukti1 = $request->file('bukti1'); @@ -164,7 +164,7 @@ class FormUpCountryController extends Controller $kategori = Kategori::where('name', 'Up Country')->first(); $filePaths = []; - $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/upcountry/'; + $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/upcountry'; if ($request->hasFile('bukti1')) { $bukti1 = $request->file('bukti1'); diff --git a/app/Http/Controllers/Forms/FormVehicleController.php b/app/Http/Controllers/Forms/FormVehicleController.php index 3835042..b35716e 100644 --- a/app/Http/Controllers/Forms/FormVehicleController.php +++ b/app/Http/Controllers/Forms/FormVehicleController.php @@ -56,7 +56,7 @@ class FormVehicleController extends Controller $kategori = Kategori::where('name', 'Vehicle Running Cost')->first(); $filePaths = []; - $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/vehicle/'; + $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/vehicle'; if ($request->hasFile('bukti1')) { $bukti1 = $request->file('bukti1'); @@ -155,7 +155,7 @@ class FormVehicleController extends Controller $kategori = Kategori::where('name', 'Vehicle Running Cost')->first(); $filePaths = []; - $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/vehicle/'; + $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/vehicle'; if ($request->hasFile('bukti1')) { $bukti1 = $request->file('bukti1'); diff --git a/app/Models/FormMeetingSeminar.php b/app/Models/FormMeetingSeminar.php index c6b949d..574c311 100644 --- a/app/Models/FormMeetingSeminar.php +++ b/app/Models/FormMeetingSeminar.php @@ -23,4 +23,9 @@ class FormMeetingSeminar extends Model 'account_number', 'status', ]; + + public function user() + { + return $this->belongsTo(Admin::class, 'user_id'); + } } diff --git a/resources/views/backend/pages/forms/meeting/create.blade.php b/resources/views/backend/pages/forms/meeting/create.blade.php new file mode 100644 index 0000000..e19a0ef --- /dev/null +++ b/resources/views/backend/pages/forms/meeting/create.blade.php @@ -0,0 +1,124 @@ +@extends('layouts.app') + +@section('title') + Dashboard +@endsection + +@section('admin-content') + + +
+
+
+
+

Tambahkan Expense Meeting & Seminar Baru

+
+
+ +
+
+
+
+
+
+
+
+
+ @csrf + @include('backend.layouts.partials.messages') +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+
+ + + + +@endsection diff --git a/resources/views/backend/pages/forms/meeting/edit.blade.php b/resources/views/backend/pages/forms/meeting/edit.blade.php new file mode 100644 index 0000000..6d9838f --- /dev/null +++ b/resources/views/backend/pages/forms/meeting/edit.blade.php @@ -0,0 +1,125 @@ +@extends('layouts.app') + +@section('title') + Dashboard +@endsection + +@section('admin-content') + + +
+
+
+
+

Edit Expense Meeting & Seminar

+
+
+ +
+
+
+
+
+
+
+
+
+ @csrf + @method('PUT') + @include('backend.layouts.partials.messages') +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+
+ + + + +@endsection diff --git a/resources/views/backend/pages/forms/meeting/index.blade.php b/resources/views/backend/pages/forms/meeting/index.blade.php new file mode 100644 index 0000000..00bcf64 --- /dev/null +++ b/resources/views/backend/pages/forms/meeting/index.blade.php @@ -0,0 +1,134 @@ +@extends('layouts.app') + +@section('title') + Dashboard +@endsection + +@section('admin-content') +
+
+
+
+

Forms Meeting Seminar

+
+
+ +
+
+
+
+
+
+
+
+

List Data Forms Meeting Seminar Anda

+

+ @if (auth()->user()->can('forms.meeting.create')) + + Add New Expense Meeting Seminar + + @endif +

+
+
+ @include('backend.layouts.partials.messages') + + + + + + + + + + + + + + + + + + + + @php + use App\Helpers\NextCloudHelper; + @endphp + @foreach ($forms as $item) + + + + + + + + + + + + + + + + @endforeach + +
#NamaTanggalAllowanceTransport AnkotHotelTotalBukti 1Bukti 2Bukti 3Account NumberStatusAksi
{{ $loop->iteration }}{{ $item->user->name }}{{ \Carbon\Carbon::parse($item->created_at)->locale('id')->isoFormat('D MMMM Y') }}{{ number_format($item->allowance, 0, ',', '.') }}{{ number_format($item->transport_ankot, 0, ',', '.') }}{{ number_format($item->hotel, 0, ',', '.') }}{{ number_format($item->total, 0, ',', '.') }} + @if ($item->bukti1) + + Download + + @else + - + @endif + + @if ($item->bukti2) + + Download + + @else + - + @endif + + @if ($item->bukti3) + + Download + + @else + - + @endif + {{ $item->account_number }} + @if ($item->status == 'On Progress') + {{ $item->status }} + @elseif ($item->status == 'Completed') + {{ $item->status }} + @else + {{ $item->status }} + @endif + + @if (auth()->user()->can('forms.meeting.edit')) + + + + @endif + + @if (auth()->user()->can('forms.meeting.delete')) +
+ @csrf + @method('DELETE') + +
+ @endif +
+
+
+
+
+
+@endsection diff --git a/resources/views/layouts/partials/scripts.blade.php b/resources/views/layouts/partials/scripts.blade.php index 371f808..a619aeb 100644 --- a/resources/views/layouts/partials/scripts.blade.php +++ b/resources/views/layouts/partials/scripts.blade.php @@ -15,6 +15,7 @@ +