| @@ -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 | |||
| ]); | |||
| } | |||
| } | |||
| @@ -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(), | |||
| ); | |||
| } | |||
| } | |||
| @@ -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; | |||
| } | |||
| } | |||
| @@ -0,0 +1,10 @@ | |||
| <?php | |||
| namespace App\Repositories; | |||
| /** | |||
| */ | |||
| class ContractRepositoryData extends BaseRepositoryData | |||
| { | |||
| } | |||
| @@ -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); | |||