Преглед изворни кода

契約一覧取得機能 追加

develop
sosuke.iwabuchi пре 2 година
родитељ
комит
39ba41a617
5 измењених фајлова са 166 додато и 1 уклоњено
  1. +52
    -0
      app/Http/Controllers/Web/Contract/ContractsController.php
  2. +26
    -0
      app/Http/Controllers/Web/Contract/ContractsParam.php
  3. +73
    -0
      app/Repositories/ContractRepository.php
  4. +10
    -0
      app/Repositories/ContractRepositoryData.php
  5. +5
    -1
      routes/api.php

+ 52
- 0
app/Http/Controllers/Web/Contract/ContractsController.php Прегледај датотеку

@@ -0,0 +1,52 @@
<?php

namespace App\Http\Controllers\Web\Contract;

use App\Codes\UserRole;
use App\Http\Controllers\Web\IParam;
use App\Http\Controllers\Web\WebController;
use App\Repositories\ContractRepository;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class ContractsController extends WebController
{
public function name(): string
{
return "契約一覧取得";
}

public function description(): string
{
return "契約一覧を取得する";
}

public function __construct(
protected ContractsParam $param,
private ContractRepository $repository
) {
parent::__construct();
$this->roleAllow(UserRole::SUPER_ADMIN);
}

protected function getParam(): IParam
{
return $this->param;
}

protected function run(Request $request): JsonResponse
{
$param = $this->param;

$condition = [
...$param->toArray(),
];

$list = $this->repository->get($condition);


return $this->successResponse([
'records' => $list
]);
}
}

+ 26
- 0
app/Http/Controllers/Web/Contract/ContractsParam.php Прегледај датотеку

@@ -0,0 +1,26 @@
<?php

namespace App\Http\Controllers\Web\Contract;

use App\Http\Controllers\Web\BaseParam;
use App\Repositories\ContractRepository as Repository;

/**
* @property ?string $id
* @property ?string $name
*/

class ContractsParam extends BaseParam
{
public function rules(): array
{
return
array_merge(
[
Repository::CONDITION_ID => $this->str(true),
Repository::CONDITION_NAME => $this->str(true),
],
$this->sortableRules(),
);
}
}

+ 73
- 0
app/Repositories/ContractRepository.php Прегледај датотеку

@@ -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;
}
}

+ 10
- 0
app/Repositories/ContractRepositoryData.php Прегледај датотеку

@@ -0,0 +1,10 @@
<?php

namespace App\Repositories;


/**
*/
class ContractRepositoryData extends BaseRepositoryData
{
}

+ 5
- 1
routes/api.php Прегледај датотеку

@@ -22,10 +22,14 @@ RouteHelper::post('/receipt-issuing-order/confirm', App\Http\Controllers\Web\Rec
RouteHelper::post('/receipt-issuing-order/mail-order', App\Http\Controllers\Web\ReceiptIssuingOrder\MailOrderController::class);
RouteHelper::post('/receipt-issuing-order/mail-complete', App\Http\Controllers\Web\ReceiptIssuingOrder\MailPostCompleteController::class);


RouteHelper::get('/receipt/download', App\Http\Controllers\Web\ReceiptIssuingOrder\TokenCheckController::class);




RouteHelper::get('/contracts', App\Http\Controllers\Web\Contract\ContractsController::class);


// Custom for HelloTechno
RouteHelper::get('/custom/hello-techno/customers', App\Http\Controllers\Web\Custom\HelloTechno\CustomersController::class);
RouteHelper::get('/custom/hello-techno/parkings', App\Http\Controllers\Web\Custom\HelloTechno\ParkingsController::class);


Loading…
Откажи
Сачувај