| @@ -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-order', App\Http\Controllers\Web\ReceiptIssuingOrder\MailOrderController::class); | ||||
| RouteHelper::post('/receipt-issuing-order/mail-complete', App\Http\Controllers\Web\ReceiptIssuingOrder\MailPostCompleteController::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('/receipt/download', App\Http\Controllers\Web\ReceiptIssuingOrder\TokenCheckController::class); | ||||
| RouteHelper::get('/contracts', App\Http\Controllers\Web\Contract\ContractsController::class); | |||||
| // Custom for HelloTechno | // Custom for HelloTechno | ||||
| RouteHelper::get('/custom/hello-techno/customers', App\Http\Controllers\Web\Custom\HelloTechno\CustomersController::class); | 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); | RouteHelper::get('/custom/hello-techno/parkings', App\Http\Controllers\Web\Custom\HelloTechno\ParkingsController::class); | ||||