diff --git a/app/Http/Controllers/HistoryController.php b/app/Http/Controllers/HistoryController.php index f2dab39..0c48a10 100644 --- a/app/Http/Controllers/HistoryController.php +++ b/app/Http/Controllers/HistoryController.php @@ -11,18 +11,7 @@ use Illuminate\Support\Facades\Log; class HistoryController extends Controller { - // public function historyPeminjaman() - // { - - - // $data = [ - // 'peminjaman' => asset_status::withTrashed()->orderBy('created_at', 'desc')->get(), - // 'warehouse' => m_warehouse::get(), - // 'active' => 'history-peminjaman', - // ]; - - // return view('dashboard.History.Peminjaman.index', $data); - // } + // Halaman index history peminjaman public function historyPeminjaman(Request $request) { $perPage = $request->input('perPage', 5); @@ -32,32 +21,110 @@ class HistoryController extends Controller //logika pencarian $search = $request->input('search') ?? ''; + if ($search) { + $searchArray = explode(' - ', $search); + + if (count($searchArray) === 2) { + // Case: DPM - B100X63 + list($codeCustomer, $typePeti) = $searchArray; + + $query->whereHas('peti.customer', function ($customerQuery) use ($codeCustomer) { + $customerQuery->where('code_customer', 'like', "%$codeCustomer%"); + })->whereHas('peti.tipe_peti', function ($tipePetiQuery) use ($typePeti) { + $tipePetiQuery->where('type', 'like', "%$typePeti%"); + }); + } else { + // Case: Other scenarios + $query->where(function ($q) use ($search) { + $q->where('mobile_id', 'like', "%$search%") + ->orWhereHas('peti', function ($warehouseQuery) use ($search) { + $warehouseQuery->where('fix_lot', 'like', "%$search%"); + }) + ->orWhereHas('customer', function ($warehouseQuery) use ($search) { + $warehouseQuery->where('name', 'like', "%$search%"); + }) + ->orWhereHas('peti.customer', function ($customerQuery) use ($search) { + $customerQuery->where('code_customer', 'like', "%$search%"); + }) + ->orWhereHas('peti.tipe_peti', function ($tipePetiQuery) use ($search) { + $tipePetiQuery->where('type', 'like', "%$search%"); + }) + ->orWhere(function ($dateQuery) use ($search) { + try { + // Format tanggal yang diharapkan dari input pengguna + $formattedDate = \Carbon\Carbon::createFromFormat('d-m-Y', $search)->format('Y-m-d'); + + // Cek kesamaan tanggal + $dateQuery->whereDate('exit_at', $formattedDate); + } catch (\Exception $e) { + Log::error('Error parsing date: ' . $e->getMessage()); + } + }) + ->orWhere(function ($dateQuery) use ($search) { + try { + // Format tanggal yang diharapkan dari input pengguna + $formattedDate = \Carbon\Carbon::createFromFormat('d-m-Y', $search)->format('Y-m-d'); + + // Cek kesamaan tanggal + $dateQuery->whereDate('est_pengembalian', $formattedDate); + } catch (\Exception $e) { + Log::error('Error parsing date: ' . $e->getMessage()); + } + }) + ->orWhere('exit_pic', 'like', "%$search%") + ->orWhereHas('warehouse', function ($warehouseQuery) use ($search) { + $warehouseQuery->where('name', 'like', "%$search%") + ->orWhere('address', 'like', "%$search%"); + }); + }); + } + } + + if ($perPage == 'Semua') { + $chunkSize = 100; + $stores = new Collection(); + $currentPage = 1; + + $query->chunk($chunkSize, function ($storesChunk) use ($stores, &$currentPage) { + foreach ($storesChunk as $store) { + $store->setAttribute('i', ($currentPage - 1) * $storesChunk->perPage() + 1); + $stores->push($store); + $currentPage++; + } + }); + } else { + $stores = $query->paginate($perPage); + } + $data = [ + 'peminjaman' => $stores, + 'warehouse' => m_warehouse::get(), + 'i' => ($stores->currentPage() - 1) * $stores->perPage() + 1, + 'search' => $search, + 'active' => 'history-peminjaman', + ]; + + return view('dashboard.History.Peminjaman.index', $data); + } + + // Halaman index history pengembalian + public function historyPengembalian(Request $request) + { + $perPage = $request->input('perPage', 5); + $query = asset_status::with(['customer', 'warehouseId', 'warehouse', 'warehouseEnter', 'kondisi_peti']) + ->where('status', '=', 1) + ->orderBy('created_at', 'desc'); + + // Logika pencarian + $search = $request->input('search') ?? ''; if ($search) { $query->where(function ($q) use ($search) { $q->where('mobile_id', 'like', "%$search%") ->orWhereHas('peti', function ($warehouseQuery) use ($search) { $warehouseQuery->where('fix_lot', 'like', "%$search%"); - }) + }) // sudah cari fix lot ->orWhereHas('customer', function ($warehouseQuery) use ($search) { $warehouseQuery->where('name', 'like', "%$search%"); - }) - // ->orWhereHas('peti.customer', function ($customerQuery) use ($search) { - // $customerQuery->where('code_customer', 'like', "%$search%"); - // }) - // ->orWhereHas('peti.tipe_peti', function ($tipePetiQuery) use ($search) { - // $tipePetiQuery->where('type', 'like', "%$search%"); - // }) - // ->orWhere(function ($combinedQuery) use ($search) { - // // Pisahkan code customer dan tipe peti dari pencarian - // list($codeCustomer, $typePeti) = explode(' - ', $search); - - // // Cek kesamaan code customer dan tipe peti - // $combinedQuery->whereHas('peti.customer', function ($customerQuery) use ($codeCustomer) { - // $customerQuery->where('code_customer', 'like', "%$codeCustomer%"); - // })->whereHas('peti.tipe_peti', function ($tipePetiQuery) use ($typePeti) { - // $tipePetiQuery->where('type', 'like', "%$typePeti%"); - // }); - // }) + }) // sudah cari nama customer ->orWhere(function ($dateQuery) use ($search) { try { // Format tanggal yang diharapkan dari input pengguna @@ -79,15 +146,41 @@ class HistoryController extends Controller } catch (\Exception $e) { Log::error('Error parsing date: ' . $e->getMessage()); } - }) - ->orWhere('exit_pic', 'like', "%$search%") + }) // sudah cari est pengembalian (tanggal pengembalian) + ->orWhere('exit_pic', 'like', "%$search%") // sudah cari exit pic (nama peminjam) ->orWhereHas('warehouse', function ($warehouseQuery) use ($search) { $warehouseQuery->where('name', 'like', "%$search%") ->orWhere('address', 'like', "%$search%"); - }); + }) // sudah cari warehouse (lokasi peminjaman) + ->orWhere(function ($dateQuery) use ($search) { + try { + // Format tanggal yang diharapkan dari input pengguna + $formattedDate = \Carbon\Carbon::createFromFormat('d-m-Y', $search)->format('Y-m-d'); + + // Cek kesamaan tanggal + $dateQuery->whereDate('enter_at', $formattedDate); + } catch (\Exception $e) { + Log::error('Error parsing date: ' . $e->getMessage()); + } + }) // sudah cari enter at (tanggal pengembalian) + ->orWhere('enter_pic', 'like', "%$search%") // sudah cari enter pic (nama pengembali) + ->orWhereHas('warehouseEnter', function ($warehouseQuery) use ($search) { + $warehouseQuery->where('name', 'like', "%$search%"); + }) // sudah cari warehouse enter (lokasi pengembalian) + ->orWhereHas('kondisi_peti', function ($warehouseQuery) use ($search) { + $warehouseQuery->where('nama_kondisi', 'like', "%$search%"); + }) // sudah cari kondisi peti + ->orWhere(function ($statusQuery) use ($search) { + if (strtolower($search) === 'return') { + $statusQuery->where('status', 1); + } else { + $statusQuery->where('status', 'like', "%$search%"); + } + }); // sudah cari status }); } + // Periksa apakah perPage adalah 'Semua' if ($perPage == 'Semua') { $chunkSize = 100; $stores = new Collection(); @@ -95,34 +188,35 @@ class HistoryController extends Controller $query->chunk($chunkSize, function ($storesChunk) use ($stores, &$currentPage) { foreach ($storesChunk as $store) { - $store->setAttribute('i', ($currentPage - 1) * $storesChunk->perPage() + 1); + $store->setAttribute('i', ($currentPage - 1) * $storesChunk->perPage() + $store->getQueueableId()); $stores->push($store); $currentPage++; } }); } else { - $stores = $query->paginate($perPage); + // Hitung halaman berdasarkan parameter halaman yang diberikan atau default ke halaman pertama + $page = $request->input('page') ?? 1; + + // Paginasi dengan parameter halaman + $stores = $query->paginate($perPage, ['*'], 'page', $page); + + // Hitung nomor urutan untuk setiap item di halaman + $stores->each(function ($store) use ($page, $perPage) { + $store->setAttribute('i', ($page - 1) * $perPage + $store->getQueueableId()); + }); } + $data = [ 'peminjaman' => $stores, 'warehouse' => m_warehouse::get(), 'i' => ($stores->currentPage() - 1) * $stores->perPage() + 1, 'search' => $search, - 'active' => 'history-peminjaman', - ]; - - return view('dashboard.History.Peminjaman.index', $data); - } - - public function historyPengembalian() - { - $data = [ - 'peminjaman' => asset_status::withTrashed()->orderBy('created_at', 'desc')->get(), 'active' => 'history-pengembalian', ]; return view('dashboard.History.Pengembalian.index', $data); } + // Halaman index history transfer public function historyTransfer() { $data = [ diff --git a/app/Http/Controllers/PeminjamanController.php b/app/Http/Controllers/PeminjamanController.php index d9551ff..c835e9e 100644 --- a/app/Http/Controllers/PeminjamanController.php +++ b/app/Http/Controllers/PeminjamanController.php @@ -32,42 +32,62 @@ class PeminjamanController extends Controller //logika pencarian $search = $request->input('search') ?? ''; if ($search) { - $query->where(function ($q) use ($search) { - $q->where('mobile_id', 'like', "%$search%") - ->orWhereHas('peti', function ($warehouseQuery) use ($search) { - $warehouseQuery->where('fix_lot', 'like', "%$search%"); - }) - ->orWhereHas('customer', function ($warehouseQuery) use ($search) { - $warehouseQuery->where('name', 'like', "%$search%"); - }) - ->orWhere(function ($dateQuery) use ($search) { - try { - // Format tanggal yang diharapkan dari input pengguna - $formattedDate = \Carbon\Carbon::createFromFormat('d-m-Y', $search)->format('Y-m-d'); - - // Cek kesamaan tanggal - $dateQuery->whereDate('exit_at', $formattedDate); - } catch (\Exception $e) { - Log::error('Error parsing date: ' . $e->getMessage()); - } - }) - ->orWhere(function ($dateQuery) use ($search) { - try { - // Format tanggal yang diharapkan dari input pengguna - $formattedDate = \Carbon\Carbon::createFromFormat('d-m-Y', $search)->format('Y-m-d'); - - // Cek kesamaan tanggal - $dateQuery->whereDate('est_pengembalian', $formattedDate); - } catch (\Exception $e) { - Log::error('Error parsing date: ' . $e->getMessage()); - } - }) - ->orWhere('exit_pic', 'like', "%$search%") - ->orWhereHas('warehouse', function ($warehouseQuery) use ($search) { - $warehouseQuery->where('name', 'like', "%$search%") - ->orWhere('address', 'like', "%$search%"); - }); - }); + $searchArray = explode(' - ', $search); + + if (count($searchArray) === 2) { + // Case: DPM - B100X63 + list($codeCustomer, $typePeti) = $searchArray; + + $query->whereHas('peti.customer', function ($customerQuery) use ($codeCustomer) { + $customerQuery->where('code_customer', 'like', "%$codeCustomer%"); + })->whereHas('peti.tipe_peti', function ($tipePetiQuery) use ($typePeti) { + $tipePetiQuery->where('type', 'like', "%$typePeti%"); + }); + } else { + // Case: Other scenarios + $query->where(function ($q) use ($search) { + $q->where('mobile_id', 'like', "%$search%") + ->orWhereHas('peti', function ($warehouseQuery) use ($search) { + $warehouseQuery->where('fix_lot', 'like', "%$search%"); + }) + ->orWhereHas('customer', function ($warehouseQuery) use ($search) { + $warehouseQuery->where('name', 'like', "%$search%"); + }) + ->orWhereHas('peti.customer', function ($customerQuery) use ($search) { + $customerQuery->where('code_customer', 'like', "%$search%"); + }) + ->orWhereHas('peti.tipe_peti', function ($tipePetiQuery) use ($search) { + $tipePetiQuery->where('type', 'like', "%$search%"); + }) + ->orWhere(function ($dateQuery) use ($search) { + try { + // Format tanggal yang diharapkan dari input pengguna + $formattedDate = \Carbon\Carbon::createFromFormat('d-m-Y', $search)->format('Y-m-d'); + + // Cek kesamaan tanggal + $dateQuery->whereDate('exit_at', $formattedDate); + } catch (\Exception $e) { + Log::error('Error parsing date: ' . $e->getMessage()); + } + }) + ->orWhere(function ($dateQuery) use ($search) { + try { + // Format tanggal yang diharapkan dari input pengguna + $formattedDate = \Carbon\Carbon::createFromFormat('d-m-Y', $search)->format('Y-m-d'); + + // Cek kesamaan tanggal + $dateQuery->whereDate('est_pengembalian', $formattedDate); + } catch (\Exception $e) { + Log::error('Error parsing date: ' . $e->getMessage()); + } + }) + ->orWhere('exit_pic', 'like', "%$search%") + ->orWhereHas('warehouse', function ($warehouseQuery) use ($search) { + $warehouseQuery->where('name', 'like', "%$search%") + ->orWhere('address', 'like', "%$search%"); + }); + }); + } } if ($perPage == 'Semua') { diff --git a/app/Models/User.php b/app/Models/User.php index 8cb2de9..0d02520 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -44,6 +44,11 @@ class User extends Authenticatable implements JWTSubject return $this->belongsTo(m_warehouse::class, 'warehouse_id')->withTrashed(); } + public function role() + { + return $this->belongsTo(m_role::class, 'role_id')->withTrashed(); + } + /** * The attributes that should be hidden for serialization. * diff --git a/resources/views/dashboard/History/Peminjaman/index.blade.php b/resources/views/dashboard/History/Peminjaman/index.blade.php index 1dd2050..12f6170 100644 --- a/resources/views/dashboard/History/Peminjaman/index.blade.php +++ b/resources/views/dashboard/History/Peminjaman/index.blade.php @@ -64,7 +64,7 @@
No | @@ -28,76 +58,107 @@Tgl Peinjaman | Estimasi Pengembalian | PJ Peminjaman | -Asal WH Peminjaman | +Asal GD Peminjaman | Tgl Pengembalian | PJ Pengembalian | -Tujuan WH Pengembalian | +Tujuan GD Pengembalian | Kondisi Peti | Status |
---|---|---|---|---|---|---|---|---|---|---|---|
{{ $no_peminjaman++ }} | -{{ $data->peti->fix_lot }} | -{{ $data->peti->customer->name }} | -{{ \Carbon\Carbon::parse($data->exit_at)->format('d/m/Y') }} | -{{ \Carbon\Carbon::parse($data->est_pengembalian)->format('d/m/Y') }} | -{{ $data->exit_pic }} | -
- @if ($data->exit_warehouse)
- {{ $data->warehouse->name }}
- @else
- - - @endif - |
-
- @if ($data->enter_at)
- {{ \Carbon\Carbon::parse($data->enter_at)->format('d-m-Y') }}
- @else
- - - @endif - |
-
- @if ($data->enter_pic)
- {{ $data->enter_pic }}
- @else
- - - @endif - |
-
- @if ($data->enter_warehouse)
- {{ $data->warehouseEnter->name }}
- @else
- - - @endif - |
-
- @if ($data->kondisi_peti)
- {{ $data->kondisi_peti->nama_kondisi }}
- @else
- - - @endif - |
- - @if ($data->enter_warehouse === null) - Not Return - @else - Return - @endif - | -
{{ $i++ }} | +{{ $data->peti->fix_lot }} | +{{ $data->peti->customer->name }} | +{{ \Carbon\Carbon::parse($data->exit_at)->format('d-m-Y') }} | +{{ \Carbon\Carbon::parse($data->est_pengembalian)->format('d-m-Y') }} | +{{ $data->exit_pic }} | +
+ @if ($data->exit_warehouse)
+ {{ $data->warehouse->name }}
+ @else
+ - + @endif + |
+
+ @if ($data->enter_at)
+ {{ \Carbon\Carbon::parse($data->enter_at)->format('d-m-Y') }}
+ @else
+ - + @endif + |
+
+ @if ($data->enter_pic)
+ {{ $data->enter_pic }}
+ @else
+ - + @endif + |
+
+ @if ($data->enter_warehouse)
+ {{ $data->warehouseEnter->name }}
+ @else
+ - + @endif + |
+
+ @if ($data->kondisi_peti)
+ {{ $data->kondisi_peti->nama_kondisi }}
+ @else
+ - + @endif + |
+ + @if ($data->status == 1) + Return + @elseif($data->status == 0) + Not Return + @endif + | +
Data Kosong | +
Showing {{ $peminjaman->firstItem() }} to + {{ $peminjaman->lastItem() }} of + {{ $peminjaman->total() }} entries
+ @endif +