diff --git a/.env b/.env index d80988b..0750f1e 100644 --- a/.env +++ b/.env @@ -68,6 +68,7 @@ AWS_USE_PATH_STYLE_ENDPOINT=false VITE_APP_NAME="${APP_NAME}" -NEXT_CLOUD_URL=https://mkt.tunggal-pharma.com/ +NEXT_CLOUD_URL=https://mkt.tunggal-pharma.com/remote.php/dav/files/user_dev/ NEXT_CLOUD_USERNAME=user_dev NEXT_CLOUD_PASSWORD=userdev12345 +NEXT_CLOUD_PATHPREFIX="" diff --git a/app/Http/Controllers/Forms/FormUpCountryController.php b/app/Http/Controllers/Forms/FormUpCountryController.php index e28fa01..8dc04e0 100644 --- a/app/Http/Controllers/Forms/FormUpCountryController.php +++ b/app/Http/Controllers/Forms/FormUpCountryController.php @@ -6,40 +6,189 @@ use Illuminate\Http\Request; use App\Http\Controllers\Controller; use App\Models\FormUpCountry; use App\Models\Rayon; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Storage; +use App\Models\Region; +use App\Models\Cabang; +use App\Models\UserHasCabang; +use App\Models\Kategori; class FormUpCountryController extends Controller { public function index() { - return view('backend.pages.forms.upcountry.index'); - } + $this->checkAuthorization(auth()->user(), ['forms.country.view']); + + $forms = FormUpCountry::with('rayon')->where('user_id', auth()->user()->id)->get(); + return view('backend.pages.forms.upcountry.index', [ + 'forms' => $forms + ]); + } public function create() { + $this->checkAuthorization(auth()->user(), ['forms.country.create']); + return view('backend.pages.forms.upcountry.create', [ 'rayons' => Rayon::all() ]); } - public function store() + public function store(Request $request) { + $this->checkAuthorization(auth()->user(), ['forms.country.create']); + $request->validate([ + 'rayon_id' => 'required|exists:rayon,id', + 'tanggal' => 'required', + 'tujuan' => 'required', + 'jarak' => 'required', + 'allowance' => 'required', + 'transport_dalkot' => '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', 'Up Country')->first(); + + $filePaths = []; + $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/upcountry/'; + + // check if folder not exists + // if (!Storage::disk('nextcloud')->exists(trim($folderPath, '/'))) { + // Storage::disk('nextcloud')->makeDirectory(trim($folderPath, '/')); + // } + + // Store files to Nextcloud and collect their paths + if ($request->hasFile('bukti1')) { + $filePaths['bukti1'] = Storage::disk('nextcloud')->putFileAs($folderPath, $request->file('bukti1'), $request->file('bukti1')->getClientOriginalName()); + } + if ($request->hasFile('bukti2')) { + $filePaths['bukti2'] = Storage::disk('nextcloud')->putFileAs($folderPath, $request->file('bukti2'), $request->file('bukti2')->getClientOriginalName()); + } + if ($request->hasFile('bukti3')) { + $filePaths['bukti3'] = Storage::disk('nextcloud')->putFileAs($folderPath, $request->file('bukti3'), $request->file('bukti3')->getClientOriginalName()); + } + + // Generate sequence number and expense number + $sequence_number = FormUpCountry::withTrashed()->where('expense_number', 'like', $region->code . '-' . $cabang->code . '-UPC-' . date('ym') . '%')->count() + 1; + $formatted_sequence_number = str_pad($sequence_number, 4, '0', STR_PAD_LEFT); + $expense_number = $region->code . '-' . $cabang->code . '-UPC-' . date('ym') . $formatted_sequence_number; + + // Save the form data + FormUpCountry::create([ + 'expense_number' => $expense_number, + 'user_id' => auth()->user()->id, + 'rayon_id' => $request->rayon_id, + 'tanggal' => $request->tanggal, + 'tujuan' => $request->tujuan, + 'jarak' => $request->jarak, + 'allowance' => $request->allowance, + 'transport_dalkot' => $request->transport_dalkot, + '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.up-country'); } - public function edit() + public function edit($id) { + $this->checkAuthorization(auth()->user(), ['forms.country.edit']); + + $form = FormUpCountry::with('rayon')->findOrfail($id); return view('backend.pages.forms.upcountry.edit', [ - 'rayons' => Rayon::all() + 'rayons' => Rayon::all(), + 'form' => $form ]); } - public function update() + public function update(Request $request, $id) { + $this->checkAuthorization(auth()->user(), ['forms.country.edit']); + $request->validate([ + 'rayon_id' => 'required|exists:rayon,id', + 'tanggal' => 'required', + 'tujuan' => 'required', + 'jarak' => 'required', + 'allowance' => 'required', + 'transport_dalkot' => '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', 'Up Country')->first(); + + $filePaths = []; + $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/upcountry/'; + + // check if folder not exists + // if (!Storage::disk('nextcloud')->exists(trim($folderPath, '/'))) { + // Storage::disk('nextcloud')->makeDirectory(trim($folderPath, '/')); + // } + + // Store files to Nextcloud and collect their paths + if ($request->hasFile('bukti1')) { + $filePaths['bukti1'] = Storage::disk('nextcloud')->putFileAs($folderPath, $request->file('bukti1'), $request->file('bukti1')->getClientOriginalName()); + } + if ($request->hasFile('bukti2')) { + $filePaths['bukti2'] = Storage::disk('nextcloud')->putFileAs($folderPath, $request->file('bukti2'), $request->file('bukti2')->getClientOriginalName()); + } + if ($request->hasFile('bukti3')) { + $filePaths['bukti3'] = Storage::disk('nextcloud')->putFileAs($folderPath, $request->file('bukti3'), $request->file('bukti3')->getClientOriginalName()); + } + + // Save the form data + $form = FormUpCountry::findOrfail($id); + $form->update([ + 'rayon_id' => $request->rayon_id, + 'tanggal' => $request->tanggal, + 'tujuan' => $request->tujuan, + 'jarak' => $request->jarak, + 'allowance' => $request->allowance, + 'transport_dalkot' => $request->transport_dalkot, + '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.up-country'); } - public function destroy() + public function destroy($id) { + $this->checkAuthorization(auth()->user(), ['forms.country.delete']); + + $form = FormUpCountry::findOrfail($id); + $form->delete(); + session()->flash('success', 'Form has been deleted.'); + return redirect()->route('forms.up-country'); } } \ No newline at end of file diff --git a/app/Http/Controllers/Forms/FormVehicleController.php b/app/Http/Controllers/Forms/FormVehicleController.php new file mode 100644 index 0000000..95812bf --- /dev/null +++ b/app/Http/Controllers/Forms/FormVehicleController.php @@ -0,0 +1,183 @@ +checkAuthorization(auth()->user(), ['forms.vehicle.view']); + + $forms = FormVehicleRunningCost::where('user_id', auth()->user()->id)->get(); + return view('backend.pages.forms.vehicle.index', [ + 'forms' => $forms + ]); + } + + public function create() + { + $this->checkAuthorization(auth()->user(), ['forms.vehicle.create']); + + return view('backend.pages.forms.vehicle.create'); + } + + public function store(Request $request) + { + $this->checkAuthorization(auth()->user(), ['forms.vehicle.create']); + + $request->validate([ + 'tanggal' => 'required', + 'liter' => 'required', + 'harga' => 'required', + 'jarak' => 'required', + 'tipe_bensin' => 'required|in:pertalite,pertamax', + 'nopol' => 'required', + 'keterangan' => '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', 'Vehicle Running Cost')->first(); + + $filePaths = []; + $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/vehicle/'; + + // check if folder not exists + // if (!Storage::disk('nextcloud')->exists(trim($folderPath, '/'))) { + // Storage::disk('nextcloud')->makeDirectory(trim($folderPath, '/')); + // } + + // Store files to Nextcloud and collect their paths + if ($request->hasFile('bukti1')) { + $filePaths['bukti1'] = Storage::disk('nextcloud')->putFileAs($folderPath, $request->file('bukti1'), $request->file('bukti1')->getClientOriginalName()); + } + if ($request->hasFile('bukti2')) { + $filePaths['bukti2'] = Storage::disk('nextcloud')->putFileAs($folderPath, $request->file('bukti2'), $request->file('bukti2')->getClientOriginalName()); + } + if ($request->hasFile('bukti3')) { + $filePaths['bukti3'] = Storage::disk('nextcloud')->putFileAs($folderPath, $request->file('bukti3'), $request->file('bukti3')->getClientOriginalName()); + } + + // Generate sequence number and expense number + $sequence_number = FormVehicleRunningCost::withTrashed()->where('expense_number', 'like', $region->code . '-' . $cabang->code . '-VHC-' . date('ym') . '%')->count() + 1; + $formatted_sequence_number = str_pad($sequence_number, 4, '0', STR_PAD_LEFT); + $expense_number = $region->code . '-' . $cabang->code . '-VHC-' . date('ym') . $formatted_sequence_number; + + // Save the form data + FormVehicleRunningCost::create([ + 'expense_number' => $expense_number, + 'user_id' => auth()->user()->id, + 'tanggal' => $request->tanggal, + 'liter' => $request->liter, + 'harga' => $request->harga, + 'jarak' => $request->jarak, + 'tipe_bensin' => $request->tipe_bensin, + 'nopol' => $request->nopol, + 'keterangan' => $request->keterangan, + '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.vehicle'); + } + + public function edit($id) + { + $this->checkAuthorization(auth()->user(), ['forms.vehicle.edit']); + + $form = FormVehicleRunningCost::findOrfail($id); + return view('backend.pages.forms.vehicle.edit', [ + 'form' => $form + ]); + } + + public function update(Request $request, $id) + { + $this->checkAuthorization(auth()->user(), ['forms.vehicle.edit']); + + $request->validate([ + 'tanggal' => 'required', + 'liter' => 'required', + 'harga' => 'required', + 'jarak' => 'required', + 'tipe_bensin' => 'required|in:pertalite,pertamax', + 'nopol' => 'required', + 'keterangan' => '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', 'Vehicle Running Cost')->first(); + + $filePaths = []; + $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/vehicle/'; + + // check if folder not exists + // if (!Storage::disk('nextcloud')->exists(trim($folderPath, '/'))) { + // Storage::disk('nextcloud')->makeDirectory(trim($folderPath, '/')); + // } + + // Store files to Nextcloud and collect their paths + if ($request->hasFile('bukti1')) { + $filePaths['bukti1'] = Storage::disk('nextcloud')->putFileAs($folderPath, $request->file('bukti1'), $request->file('bukti1')->getClientOriginalName()); + } + if ($request->hasFile('bukti2')) { + $filePaths['bukti2'] = Storage::disk('nextcloud')->putFileAs($folderPath, $request->file('bukti2'), $request->file('bukti2')->getClientOriginalName()); + } + if ($request->hasFile('bukti3')) { + $filePaths['bukti3'] = Storage::disk('nextcloud')->putFileAs($folderPath, $request->file('bukti3'), $request->file('bukti3')->getClientOriginalName()); + } + + // Save the form data + $form = FormVehicleRunningCost::findOrfail($id); + $form->update([ + 'tanggal' => $request->tanggal, + 'liter' => $request->liter, + 'harga' => $request->harga, + 'jarak' => $request->jarak, + 'tipe_bensin' => $request->tipe_bensin, + 'nopol' => $request->nopol, + 'keterangan' => $request->keterangan, + '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.vehicle'); + } + + public function destroy($id) + { + $this->checkAuthorization(auth()->user(), ['forms.vehicle.delete']); + + $form = FormVehicleRunningCost::findOrfail($id); + $form->delete(); + + session()->flash('success', 'Form has been deleted.'); + return redirect()->route('forms.vehicle'); + } +} \ No newline at end of file diff --git a/app/Models/FormUpCountry.php b/app/Models/FormUpCountry.php index 5cdfca3..6f2be10 100644 --- a/app/Models/FormUpCountry.php +++ b/app/Models/FormUpCountry.php @@ -28,4 +28,14 @@ class FormUpCountry extends Model 'account_number', 'status', ]; + + public function user() + { + return $this->belongsTo('App\Models\Admin'); + } + + public function rayon() + { + return $this->belongsTo('App\Models\Rayon'); + } } diff --git a/app/Models/FormVehicleRunningCost.php b/app/Models/FormVehicleRunningCost.php index 3f18764..b666677 100644 --- a/app/Models/FormVehicleRunningCost.php +++ b/app/Models/FormVehicleRunningCost.php @@ -26,4 +26,9 @@ class FormVehicleRunningCost extends Model 'account_number', 'status', ]; + + public function user() + { + return $this->belongsTo('App\Models\Admin', 'user_id'); + } } diff --git a/app/Models/UserHasCabang.php b/app/Models/UserHasCabang.php index 8a1ccdd..21a136e 100644 --- a/app/Models/UserHasCabang.php +++ b/app/Models/UserHasCabang.php @@ -14,4 +14,14 @@ class UserHasCabang extends Model 'user_id', 'cabang_id', ]; + + public function user() + { + return $this->belongsTo('App\Models\Admin'); + } + + public function cabang() + { + return $this->belongsTo('App\Models\Cabang'); + } } diff --git a/composer.json b/composer.json index 8a819be..c646c79 100644 --- a/composer.json +++ b/composer.json @@ -16,6 +16,7 @@ "laravolt/avatar": "^6.0", "nino/laravel-nextcloud-fs": "^2.0", "phpoffice/phpspreadsheet": "^3.5", + "singlequote/laravel-webdav": "^1.1", "spatie/laravel-html": "^3.11", "spatie/laravel-menu": "^4.2", "spatie/laravel-permission": "^6.10", diff --git a/composer.lock b/composer.lock index 4b406ec..fd8a12c 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "e20816a5ac8758dcf14572597c4d7627", + "content-hash": "83771e2a711327eac79ef3f7b30673da", "packages": [ { "name": "barryvdh/laravel-dompdf", @@ -4797,6 +4797,65 @@ }, "time": "2024-09-06T07:37:46+00:00" }, + { + "name": "singlequote/laravel-webdav", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/singlequote/laravel-webdav.git", + "reference": "07bb4f177fc61b65d7dd0aaa37779a82ff100681" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/singlequote/laravel-webdav/zipball/07bb4f177fc61b65d7dd0aaa37779a82ff100681", + "reference": "07bb4f177fc61b65d7dd0aaa37779a82ff100681", + "shasum": "" + }, + "require": { + "laravel/framework": ">=10", + "league/flysystem-webdav": "^3.15", + "php": "^8.1" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "WebDav": "SingleQuote\\WebDav\\WebDavFacade" + }, + "providers": [ + "SingleQuote\\WebDav\\WebDavServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "SingleQuote\\WebDav\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Wim Pruiksma", + "email": "wim@quotec.nl", + "homepage": "https://quotec.nl/" + } + ], + "homepage": "https://github.com/singlequote/laravel-webdav", + "keywords": [ + "Flysystem", + "WebDAV", + "filesystem", + "laravel" + ], + "support": { + "issues": "https://github.com/singlequote/laravel-webdav/issues", + "source": "https://github.com/singlequote/laravel-webdav/tree/1.1.1" + }, + "time": "2024-06-07T12:41:19+00:00" + }, { "name": "spatie/laravel-html", "version": "3.11.1", diff --git a/config/filesystems.php b/config/filesystems.php index 2ac1540..1de83d6 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -58,11 +58,14 @@ return [ ], 'nextcloud' => [ - 'driver' => 'nextcloud', + 'driver' => 'webdav', 'baseUri' => env('NEXT_CLOUD_URL'), 'userName' => env('NEXT_CLOUD_USERNAME'), 'password' => env('NEXT_CLOUD_PASSWORD'), - 'directory' => '', + 'pathPrefix' => env("NEXT_CLOUD_PATHPREFIX", ''), + 'options' => [ + 'verify' => false, + ], ], ], diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index 871b6cb..d706f7d 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -7,6 +7,7 @@ use Database\Seeds\RolePermissionSeeder; use Database\Seeds\MenuSeeder; use Database\Seeds\RayonSeeder; use Database\Seeds\RolePermissionSeeder2; +use Database\Seeds\RolePermissionSeeder3; class DatabaseSeeder extends Seeder { @@ -17,11 +18,12 @@ class DatabaseSeeder extends Seeder */ public function run() { - $this->call(UserSeeder::class); - $this->call(AdminSeeder::class); - $this->call(RolePermissionSeeder::class); - $this->call(MenuSeeder::class); - $this->call(RayonSeeder::class); - $this->call(RolePermissionSeeder2::class); + // $this->call(UserSeeder::class); + // $this->call(AdminSeeder::class); + // $this->call(RolePermissionSeeder::class); + // $this->call(MenuSeeder::class); + // $this->call(RayonSeeder::class); + // $this->call(RolePermissionSeeder2::class); + $this->call(RolePermissionSeeder3::class); } } diff --git a/database/seeds/RolePermissionSeeder3.php b/database/seeds/RolePermissionSeeder3.php new file mode 100644 index 0000000..06053a7 --- /dev/null +++ b/database/seeds/RolePermissionSeeder3.php @@ -0,0 +1,126 @@ + 'forms.country', + 'permissions' => [ + 'forms.country.view', + 'forms.country.create', + 'forms.country.edit', + 'forms.country.delete', + 'forms.country.approve', + ] + ], + [ + 'group_name' => 'forms.vehicle', + 'permissions' => [ + 'forms.vehicle.view', + 'forms.vehicle.create', + 'forms.vehicle.edit', + 'forms.vehicle.delete', + 'forms.vehicle.approve', + ] + ], + [ + 'group_name' => 'forms.entertainment', + 'permissions' => [ + 'forms.entertainment.view', + 'forms.entertainment.create', + 'forms.entertainment.edit', + 'forms.entertainment.delete', + 'forms.entertainment.approve', + ] + ], + [ + 'group_name' => 'forms.meeting', + 'permissions' => [ + 'forms.meeting.view', + 'forms.meeting.create', + 'forms.meeting.edit', + 'forms.meeting.delete', + 'forms.meeting.approve', + ] + ], + [ + 'group_name' => 'forms.other', + 'permissions' => [ + 'forms.other.view', + 'forms.other.create', + 'forms.other.edit', + 'forms.other.delete', + 'forms.other.approve', + ] + ] + ]; + + // 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; + } +} diff --git a/resources/views/backend/pages/forms/upcountry/create.blade.php b/resources/views/backend/pages/forms/upcountry/create.blade.php index 3205b90..a362425 100644 --- a/resources/views/backend/pages/forms/upcountry/create.blade.php +++ b/resources/views/backend/pages/forms/upcountry/create.blade.php @@ -24,12 +24,14 @@
- - Add New Expense Up Country - + @if (auth()->user()->can('forms.country.create')) + + Add New Expense Up Country + + @endif
+ @if (auth()->user()->can('forms.vehicle.create')) + + Add New Expense Vehicle Running Cost + + @endif +
+ +| # | +Nama | +Tanggal | +Liter | +Harga | +Jarak | +Tipe Bensin | +Nomor Polisi | +Bukti 1 | +Bukti 2 | +Bukti 3 | +Account Number | +Status | +Aksi | +
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ $loop->iteration }} | +{{ $item->user->name }} | +{{ \Carbon\Carbon::parse($item->tanggal)->locale('id')->isoFormat('dddd, D MMMM Y HH:mm:ss') }} | +{{ $item->liter }} | +{{ $item->harga }} | +{{ $item->jarak }} | +{{ $item->tipe_bensin }} | +{{ $item->nopol }} | +{{ $item->bukti1 }} | +{{ $item->bukti2 }} | +{{ $item->bukti3 }} | +{{ $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.vehicle.edit')) + + + + @endif + + @if (auth()->user()->can('forms.vehicle.delete')) + + @endif + | +