feat(bank-data): tambahkan layanan untuk pengelolaan data bank

- Menambahkan kelas BankDataService untuk mengelola data bank.
- Menyediakan metode untuk mendapatkan, membuat, memperbarui, dan menghapus data bank.
- Mengikat BankDataService di LpjServiceProvider untuk penggunaan di seluruh aplikasi.
This commit is contained in:
Daeng Deni Mardaeni
2025-03-18 07:19:16 +07:00
parent 8a7dccc784
commit 14e9435684
2 changed files with 121 additions and 0 deletions

View File

@@ -4,6 +4,8 @@
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;
use Modules\Lpj\Models\BankData;
use Modules\Lpj\Services\BankDataService;
class LpjServiceProvider extends ServiceProvider
{
@@ -118,6 +120,9 @@
{
$this->app->register(EventServiceProvider::class);
$this->app->register(RouteServiceProvider::class);
$this->app->bind(BankDataService::class, function ($app){
return new BankDataService($app->make(BankData::class));
});
}
/**

View File

@@ -0,0 +1,116 @@
<?php
namespace Modules\Lpj\Services;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
use Modules\Lpj\Models\BankData;
class BankDataService
{
protected $bankData;
public function __construct(BankData $bankData)
{
$this->bankData = $bankData;
}
/**
* Get all bank data with optional filtering and pagination
*
* @param array $filters
* @param int|null $perPage
*
* @return Collection|LengthAwarePaginator
*/
public function getAllBankData(array $filters = [], ?int $perPage = null)
{
$query = $this->bankData->newQuery();
// Apply filters
if (isset($filters['village_code'])) {
$query->ofVillage($filters['village_code']);
}
if (isset($filters['district_code'])) {
$query->ofDistrict($filters['district_code']);
}
if (isset($filters['city_code'])) {
$query->ofCity($filters['city_code']);
}
if (isset($filters['province_code'])) {
$query->ofProvince($filters['province_code']);
}
if (isset($filters['date'])) {
$query->ofDate($filters['date']);
}
if (isset($filters['start_date']) && isset($filters['end_date'])) {
$query->betweenDates($filters['start_date'], $filters['end_date']);
}
if (isset($filters['year'])) {
$query->ofYear($filters['year']);
}
if (isset($filters['asset_type'])) {
$query->ofAssetType($filters['asset_type']);
}
// Add more filters as needed
return $perPage ? $query->paginate($perPage) : $query->get();
}
/**
* Create a new bank data entry
*
* @param array $data
*
* @return BankData
*/
public function createBankData(array $data)
: BankData
{
return $this->bankData->create($data);
}
/**
* Update an existing bank data entry
*
* @param int $id
* @param array $data
*
* @return BankData
*/
public function updateBankData(int $id, array $data)
: BankData
{
$bankData = $this->bankData->findOrFail($id);
$bankData->update($data);
return $bankData;
}
/**
* Delete a bank data entry
*
* @param int $id
*
* @return bool
*/
public function deleteBankData(int $id)
: bool
{
$bankData = $this->bankData->findOrFail($id);
return $bankData->delete();
}
/**
* Find a bank data entry by ID
*
* @param int $id
*
* @return BankData|null
*/
public function findBankData(int $id)
: ?BankData
{
return $this->bankData->find($id);
}
}