|
|
|
@@ -0,0 +1,73 @@ |
|
|
|
<?php |
|
|
|
|
|
|
|
namespace App\Repositories; |
|
|
|
|
|
|
|
use App\Models\Contract; |
|
|
|
use App\Models\ReceiptIssuingHTParkingCustomOrder as CustomOrder; |
|
|
|
use App\Models\ReceiptIssuingOrder; |
|
|
|
use App\Models\User; |
|
|
|
use App\Repositories\BaseRepository; |
|
|
|
use Illuminate\Database\Query\JoinClause; |
|
|
|
use Illuminate\Support\Carbon; |
|
|
|
use Illuminate\Support\Collection; |
|
|
|
use Illuminate\Support\Facades\DB; |
|
|
|
|
|
|
|
class ContractRepository extends BaseRepository |
|
|
|
{ |
|
|
|
|
|
|
|
const CONDITION_ID = 'id'; |
|
|
|
|
|
|
|
const CONDITION_NAME = 'name'; |
|
|
|
|
|
|
|
const TABLE_CONTRACT = "contract"; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* コレクションを取得する |
|
|
|
* |
|
|
|
* @param array $condition |
|
|
|
* @return Collection<ContractRepositoryData> |
|
|
|
*/ |
|
|
|
public function get(array $condition): Collection |
|
|
|
{ |
|
|
|
$table = Contract::getBuilder(static::TABLE_CONTRACT); |
|
|
|
|
|
|
|
|
|
|
|
// -----検索条件 |
|
|
|
// ID |
|
|
|
$this->where($table, $condition, static::CONDITION_ID, $this->makeColumnName([static::TABLE_CONTRACT, Contract::COL_NAME_ID])); |
|
|
|
|
|
|
|
// 名前 |
|
|
|
$name = data_get($condition, static::CONDITION_NAME); |
|
|
|
if ($name) { |
|
|
|
$table->where($this->makeColumnName([static::TABLE_CONTRACT, Contract::COL_NAME_NAME]), 'like', "%{$name}%"); |
|
|
|
} |
|
|
|
|
|
|
|
$table->select($this->columns()); |
|
|
|
|
|
|
|
$main = DB::table($table, "main"); |
|
|
|
|
|
|
|
// ソート |
|
|
|
$this->sort($main, $condition); |
|
|
|
$main->orderBy(static::CONDITION_ID); |
|
|
|
|
|
|
|
// リミット |
|
|
|
$this->limit($main, $condition); |
|
|
|
|
|
|
|
|
|
|
|
return ContractRepositoryData::makeList($main->get()); |
|
|
|
} |
|
|
|
|
|
|
|
private function columns() |
|
|
|
{ |
|
|
|
$contract = static::TABLE_CONTRACT; |
|
|
|
$columns = [ |
|
|
|
$this->makeColumnNameForSelect([$contract, Contract::COL_NAME_ID]), |
|
|
|
$this->makeColumnNameForSelect([$contract, Contract::COL_NAME_NAME]), |
|
|
|
$this->makeColumnNameForSelect([$contract, Contract::COL_NAME_UPDATED_AT]), |
|
|
|
]; |
|
|
|
|
|
|
|
|
|
|
|
return $columns; |
|
|
|
} |
|
|
|
} |