mirror of
https://gitlab.com/izyim/prototypes/ddd-example.git
synced 2026-08-23 22:44:14 +00:00
50 lines
1.7 KiB
PHP
50 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace Src\Zone\Company\Application\Repositories\Eloquent;
|
|
|
|
use Src\Zone\Company\Application\Mappers\CompanyMapper;
|
|
use Src\Zone\Company\Domain\Model\Company;
|
|
use Src\Zone\Company\Domain\Repositories\CompanyRepositoryInterface;
|
|
use Src\Zone\Company\Infrastructure\EloquentModels\CompanyEloquentModel;
|
|
|
|
class CompanyRepository implements CompanyRepositoryInterface
|
|
{
|
|
public function findAll(): array
|
|
{
|
|
$companies = [];
|
|
foreach (CompanyEloquentModel::all() as $companyEloquent) {
|
|
$companies[] = CompanyMapper::fromEloquent($companyEloquent);
|
|
}
|
|
return $companies;
|
|
}
|
|
public function findById(string $id): Company
|
|
{
|
|
$companyEloquent = CompanyEloquentModel::query()->findOrFail($id);
|
|
return CompanyMapper::fromEloquent($companyEloquent);
|
|
}
|
|
public function findByVat(string $vat): Company
|
|
{
|
|
$companyEloquent = CompanyEloquentModel::query()->where('vat', $vat)->firstOrFail();
|
|
return CompanyMapper::fromEloquent($companyEloquent);
|
|
}
|
|
|
|
public function store(Company $company): Company
|
|
{
|
|
$companyEloquent = CompanyMapper::toEloquent($company);
|
|
$companyEloquent->save();
|
|
|
|
return CompanyMapper::fromEloquent($companyEloquent);
|
|
}
|
|
public function update(Company $company): void
|
|
{
|
|
$companyArray = $company->toArray();
|
|
$companyEloquent = CompanyEloquentModel::query()->findOrFail($company->id);
|
|
$companyEloquent->fill($companyArray);
|
|
$companyEloquent->save();
|
|
}
|
|
public function delete(int $company_id): void
|
|
{
|
|
$companyEloquent = CompanyEloquentModel::query()->findOrFail($company_id);
|
|
$companyEloquent->delete();
|
|
}
|
|
} |