| @@ -4,20 +4,34 @@ namespace App\Http\Controllers\Web\Auth; | |||||
| use App\Models\User; | use App\Models\User; | ||||
| use App\Codes\UserRole; | use App\Codes\UserRole; | ||||
| use App\Features\LoginUser; | |||||
| use Illuminate\Support\Arr; | |||||
| use Illuminate\Support\Facades\Auth; | use Illuminate\Support\Facades\Auth; | ||||
| trait Me | trait Me | ||||
| { | { | ||||
| use LoginUser; | |||||
| protected function me() | protected function me() | ||||
| { | { | ||||
| if (Auth::check()) { | if (Auth::check()) { | ||||
| $user = Auth::user()->toArray(); | |||||
| $user = Auth::user(); | |||||
| return array_intersect_key($user, array_flip([ | |||||
| $filteredUser = Arr::only($user->toArray(), [ | |||||
| User::COL_NAME_ID, | User::COL_NAME_ID, | ||||
| User::COL_NAME_CONTRACT_ID, | User::COL_NAME_CONTRACT_ID, | ||||
| User::COL_NAME_ROLE, | User::COL_NAME_ROLE, | ||||
| ])); | |||||
| User::COL_NAME_NAME, | |||||
| ]); | |||||
| $contract = $this->loginUser()->getCurrentContract(); | |||||
| if ($contract) { | |||||
| $filteredUser[User::COL_NAME_CONTRACT_ID] = $contract->id; | |||||
| $filteredUser['contract_name'] = $contract->name; | |||||
| $filteredUser['custom'] = $contract->custom(); | |||||
| }; | |||||
| return $filteredUser; | |||||
| } | } | ||||
| return null; | return null; | ||||
| } | } | ||||
| @@ -37,14 +37,5 @@ class MeController extends WebController | |||||
| return $this->successResponse($me); | return $this->successResponse($me); | ||||
| } | } | ||||
| return $this->failedResponse(); | return $this->failedResponse(); | ||||
| // if (Auth::check()) { | |||||
| // $user = Auth::user(); | |||||
| // $ret = $user->get([ | |||||
| // User::COL_NAME_CONTRACT_ID, | |||||
| // User::COL_NAME_ROLE, | |||||
| // ]); | |||||
| // } else { | |||||
| // } | |||||
| } | } | ||||
| } | } | ||||
| @@ -39,7 +39,12 @@ class ReceiptIssuingOrdersController extends HelloTechnoController | |||||
| { | { | ||||
| $param = $this->param; | $param = $this->param; | ||||
| $list = $this->repository->get($param->toArray()); | |||||
| $condition = [ | |||||
| ...$param->toArray(), | |||||
| ReceiptIssuingOrderRepository::CONDITION_CONTRACT_ID => Auth::user()->contract_id, | |||||
| ]; | |||||
| $list = $this->repository->get($condition); | |||||
| return $this->successResponse([ | return $this->successResponse([ | ||||
| @@ -3,8 +3,8 @@ | |||||
| namespace App\Http\Controllers\Web\Custom\HelloTechno; | namespace App\Http\Controllers\Web\Custom\HelloTechno; | ||||
| use App\Http\Controllers\Web\BaseParam; | use App\Http\Controllers\Web\BaseParam; | ||||
| use App\Models\ReceiptIssuingHTParkingCustomOrder as HT; | |||||
| use App\Models\ReceiptIssuingOrder; | |||||
| use App\Repositories\Custom\HelloTechno\ReceiptIssuingOrderRepository as Repository; | |||||
| use Illuminate\Support\Carbon; | |||||
| /** | /** | ||||
| * @property ?string $id | * @property ?string $id | ||||
| @@ -13,6 +13,12 @@ use App\Models\ReceiptIssuingOrder; | |||||
| * @property ?string $parkingManagementCode | * @property ?string $parkingManagementCode | ||||
| * @property ?string $parkingName | * @property ?string $parkingName | ||||
| * @property ?int $adjustSeqNo | * @property ?int $adjustSeqNo | ||||
| * @property ?bool $done | |||||
| * @property ?string $status | |||||
| * @property ?Carbon $orderDateFrom | |||||
| * @property ?Carbon $orderDateTo | |||||
| * @property ?string $smsPhoneNumber | |||||
| * @property ?string $handlerName | |||||
| */ | */ | ||||
| class ReceiptIssuingsOrdersParam extends BaseParam | class ReceiptIssuingsOrdersParam extends BaseParam | ||||
| @@ -22,12 +28,18 @@ class ReceiptIssuingsOrdersParam extends BaseParam | |||||
| return | return | ||||
| array_merge( | array_merge( | ||||
| [ | [ | ||||
| ReceiptIssuingOrder::COL_NAME_ID => $this->str(true), | |||||
| HT::COL_NAME_CUSTOMER_CODE => $this->str(true), | |||||
| HT::COL_NAME_CUSTOMER_NAME => $this->str(true), | |||||
| HT::COL_NAME_PARKING_MANAGEMENT_CODE => $this->str(true), | |||||
| HT::COL_NAME_PARKING_NAME => $this->str(true), | |||||
| HT::COL_NAME_ADJUST_SEQ_NO => $this->numeric(true), | |||||
| Repository::CONDITION_ID => $this->str(true), | |||||
| Repository::CONDITION_CUSTOMER_CODE => $this->str(true), | |||||
| Repository::CONDITION_CUSTOMER_NAME => $this->str(true), | |||||
| Repository::CONDITION_PARKING_MANAGEMENT_CODE => $this->str(true), | |||||
| Repository::CONDITION_PARKING_NAME => $this->str(true), | |||||
| Repository::CONDITION_ADJSUT_SEQ_NO => $this->numeric(true), | |||||
| Repository::CONDITION_SMS_PHONE_NUMBER => $this->str(true), | |||||
| Repository::CONDITION_DONE => $this->boolean(true), | |||||
| Repository::CONDITION_STATUS => $this->str(true), | |||||
| Repository::CONDITION_ORDER_DATE_FROM => $this->date(true), | |||||
| Repository::CONDITION_ORDER_DATE_TO => $this->date(true), | |||||
| Repository::CONDITION_HANDLER_NAME => $this->str(true), | |||||
| ], | ], | ||||
| $this->sortableRules(), | $this->sortableRules(), | ||||
| ); | ); | ||||
| @@ -54,7 +54,7 @@ class CreateManager extends ReceiptIssuingOrderManager | |||||
| $order->order_datetime = DateUtil::now(); | $order->order_datetime = DateUtil::now(); | ||||
| $this->refreshToken(); | $this->refreshToken(); | ||||
| $contractId = $this->loginUser()->getContractId(); | |||||
| $contractId = $this->loginUser()->getCurrentContractId(); | |||||
| if ($contractId === null) { | if ($contractId === null) { | ||||
| throw new LogicException("契約不良"); | throw new LogicException("契約不良"); | ||||
| } | } | ||||
| @@ -8,11 +8,12 @@ use App\Models\Contract; | |||||
| use App\Models\User; | use App\Models\User; | ||||
| use Illuminate\Database\Eloquent\Model; | use Illuminate\Database\Eloquent\Model; | ||||
| use Illuminate\Support\Facades\Auth; | use Illuminate\Support\Facades\Auth; | ||||
| use Illuminate\Support\Facades\Session; | |||||
| use LogicException; | use LogicException; | ||||
| class LoginUser | class LoginUser | ||||
| { | { | ||||
| private const SESSION_KEY_SADMIN_CONTRACT_ID = 'SESSION_KEY_SADMIN_CONTRACT_ID'; | |||||
| private const SESSION_KEY_CURERNT_CONTRACT_ID = self::class . "/SESSION_KEY_CURERNT_CONTRACT_ID"; | |||||
| public function __construct( | public function __construct( | ||||
| @@ -26,20 +27,6 @@ class LoginUser | |||||
| return Auth::user(); | return Auth::user(); | ||||
| } | } | ||||
| public function contract(): ?Contract | |||||
| { | |||||
| if (!Auth::check()) { | |||||
| return null; | |||||
| } | |||||
| if ($this->contract->isNotSavedModel()) { | |||||
| $this->contract = $this->user()->contract; | |||||
| } | |||||
| return $this->contract; | |||||
| } | |||||
| public function checkAuthorization(array|Model $target): bool | public function checkAuthorization(array|Model $target): bool | ||||
| { | { | ||||
| if (app()->runningInConsole()) { | if (app()->runningInConsole()) { | ||||
| @@ -62,18 +49,26 @@ class LoginUser | |||||
| return $contractId === $this->user()->contract_id; | return $contractId === $this->user()->contract_id; | ||||
| } | } | ||||
| public function getContractId(): ?string | |||||
| public function setCurrentContractId(string $contractId) | |||||
| { | { | ||||
| if ($this->user()->role === UserRole::SUPER_ADMIN) { | |||||
| $session = request()->session(); | |||||
| $user = $this->user(); | |||||
| if ($user && Auth::user()->role !== UserRole::SUPER_ADMIN) { | |||||
| throw new LogicException("スーパー管理者以外の成り代わりを検知"); | |||||
| } | |||||
| Session::put(self::SESSION_KEY_CURERNT_CONTRACT_ID, $contractId); | |||||
| } | |||||
| if ($session->exists(self::SESSION_KEY_SADMIN_CONTRACT_ID)) { | |||||
| return $session->get(self::SESSION_KEY_SADMIN_CONTRACT_ID); | |||||
| } | |||||
| return $this->contract()->id; | |||||
| public function getCurrentContractId(): string | |||||
| { | |||||
| $user = $this->user(); | |||||
| if ($user && $user->role === UserRole::SUPER_ADMIN) { | |||||
| return Session::get(self::SESSION_KEY_CURERNT_CONTRACT_ID, ""); | |||||
| } | } | ||||
| return data_get($user, User::COL_NAME_CONTRACT_ID, ""); | |||||
| } | |||||
| return data_get($this->contract(), Contract::COL_NAME_ID); | |||||
| public function getCurrentContract(): ?Contract | |||||
| { | |||||
| return Contract::find($this->getCurrentContractId()); | |||||
| } | } | ||||
| } | } | ||||
| @@ -7,6 +7,7 @@ use App\Models\ReceiptIssuingOrder; | |||||
| use App\Models\User; | use App\Models\User; | ||||
| use App\Repositories\BaseRepository; | use App\Repositories\BaseRepository; | ||||
| use Illuminate\Database\Query\JoinClause; | use Illuminate\Database\Query\JoinClause; | ||||
| use Illuminate\Support\Carbon; | |||||
| use Illuminate\Support\Collection; | use Illuminate\Support\Collection; | ||||
| use Illuminate\Support\Facades\DB; | use Illuminate\Support\Facades\DB; | ||||
| @@ -15,11 +16,24 @@ class ReceiptIssuingOrderRepository extends BaseRepository | |||||
| const CONDITION_ID = 'id'; | const CONDITION_ID = 'id'; | ||||
| const CONDITION_CONTRACT_ID = 'contract_id'; | |||||
| const CONDITION_CUSTOMER_CODE = 'customer_code'; | const CONDITION_CUSTOMER_CODE = 'customer_code'; | ||||
| const CONDITION_PARKING_MANAGEMENT_CODE = 'parking_management_code'; | const CONDITION_PARKING_MANAGEMENT_CODE = 'parking_management_code'; | ||||
| const CONDITION_CUSTOMER_NAME = 'customer_name'; | const CONDITION_CUSTOMER_NAME = 'customer_name'; | ||||
| const CONDITION_PARKING_MANAGEMENT_NAME = 'parking_name'; | |||||
| const CONDITION_PARKING_NAME = 'parking_name'; | |||||
| const CONDITION_ADJSUT_SEQ_NO = 'adjust_seq_no'; | |||||
| const CONDITION_DONE = 'done'; | |||||
| const CONDITION_STATUS = 'status'; | |||||
| const CONDITION_SMS_PHONE_NUMBER = 'sms_phone_number'; | |||||
| const CONDITION_HANDLER_NAME = 'handler_name'; | |||||
| const CONDITION_ORDER_DATE_FROM = 'order_date_from'; | |||||
| const CONDITION_ORDER_DATE_TO = 'order_date_to'; | |||||
| const TABLE_ORDER = "order"; | const TABLE_ORDER = "order"; | ||||
| @@ -37,6 +51,7 @@ class ReceiptIssuingOrderRepository extends BaseRepository | |||||
| { | { | ||||
| $order = ReceiptIssuingOrder::getBuilder(static::TABLE_ORDER); | $order = ReceiptIssuingOrder::getBuilder(static::TABLE_ORDER); | ||||
| $table = $order | $table = $order | ||||
| ->joinSub(CustomOrder::getBuilder(), static::TABLE_CUSTOM_ORDER, function (JoinClause $join) { | ->joinSub(CustomOrder::getBuilder(), static::TABLE_CUSTOM_ORDER, function (JoinClause $join) { | ||||
| $join->on( | $join->on( | ||||
| @@ -55,6 +70,40 @@ class ReceiptIssuingOrderRepository extends BaseRepository | |||||
| // ID | // ID | ||||
| $this->where($table, $condition, static::CONDITION_ID, $this->makeColumnName([static::TABLE_ORDER, ReceiptIssuingOrder::COL_NAME_ID])); | $this->where($table, $condition, static::CONDITION_ID, $this->makeColumnName([static::TABLE_ORDER, ReceiptIssuingOrder::COL_NAME_ID])); | ||||
| // 契約ID | |||||
| $this->where($table, $condition, static::CONDITION_CONTRACT_ID, $this->makeColumnName([static::TABLE_ORDER, ReceiptIssuingOrder::COL_NAME_CONTRACT_ID])); | |||||
| // 電話番号 | |||||
| $phoneNumber = data_get($condition, static::CONDITION_SMS_PHONE_NUMBER); | |||||
| if ($phoneNumber) { | |||||
| $table->where($this->makeColumnName([static::TABLE_ORDER, ReceiptIssuingOrder::COL_NAME_SMS_PHONE_NUMBER]), 'like', "%{$phoneNumber}%"); | |||||
| } | |||||
| // 完了確認 | |||||
| $done = data_get($condition, static::CONDITION_DONE); | |||||
| if ($done !== null) { | |||||
| $table->where($this->makeColumnName([static::TABLE_ORDER, ReceiptIssuingOrder::COL_NAME_STATUS_DONE]), $done); | |||||
| } | |||||
| // ステータス | |||||
| $status = data_get($condition, static::CONDITION_STATUS); | |||||
| if ($status) { | |||||
| $table->where($this->makeColumnName([static::TABLE_ORDER, ReceiptIssuingOrder::COL_NAME_STATUS_NAME]), 'like', "%{$status}%"); | |||||
| } | |||||
| // 受付日時 | |||||
| $orderDateFrom = data_get($condition, static::CONDITION_ORDER_DATE_FROM); | |||||
| if ($orderDateFrom instanceof Carbon) { | |||||
| $orderDateFrom->setTime(0, 0); | |||||
| $table->where($this->makeColumnName([static::TABLE_ORDER, ReceiptIssuingOrder::COL_NAME_ORDER_DATETIME]), '>=', $orderDateFrom); | |||||
| } | |||||
| $orderDateTo = data_get($condition, static::CONDITION_ORDER_DATE_TO); | |||||
| if ($orderDateTo instanceof Carbon) { | |||||
| $orderDateTo->setTime(0, 0)->addDay(); | |||||
| $table->where($this->makeColumnName([static::TABLE_ORDER, ReceiptIssuingOrder::COL_NAME_ORDER_DATETIME]), '<=', $orderDateTo); | |||||
| } | |||||
| // 運営会社 | // 運営会社 | ||||
| $this->where($table, $condition, $this->makeColumnName([static::TABLE_CUSTOM_ORDER, CustomOrder::COL_NAME_CUSTOMER_CODE])); | $this->where($table, $condition, $this->makeColumnName([static::TABLE_CUSTOM_ORDER, CustomOrder::COL_NAME_CUSTOMER_CODE])); | ||||
| $customerName = data_get($condition, static::CONDITION_CUSTOMER_NAME); | $customerName = data_get($condition, static::CONDITION_CUSTOMER_NAME); | ||||
| @@ -64,11 +113,18 @@ class ReceiptIssuingOrderRepository extends BaseRepository | |||||
| // 駐車場 | // 駐車場 | ||||
| $this->where($table, $condition, $this->makeColumnName([static::TABLE_CUSTOM_ORDER, CustomOrder::COL_NAME_PARKING_MANAGEMENT_CODE])); | $this->where($table, $condition, $this->makeColumnName([static::TABLE_CUSTOM_ORDER, CustomOrder::COL_NAME_PARKING_MANAGEMENT_CODE])); | ||||
| $parkihngName = data_get($condition, static::CONDITION_PARKING_MANAGEMENT_NAME); | |||||
| $parkihngName = data_get($condition, static::CONDITION_PARKING_NAME); | |||||
| if ($parkihngName) { | if ($parkihngName) { | ||||
| $table->where($this->makeColumnName([static::TABLE_CUSTOM_ORDER, CustomOrder::COL_NAME_PARKING_NAME]), 'like', "%{$parkihngName}%"); | $table->where($this->makeColumnName([static::TABLE_CUSTOM_ORDER, CustomOrder::COL_NAME_PARKING_NAME]), 'like', "%{$parkihngName}%"); | ||||
| } | } | ||||
| // 担当者 | |||||
| $handlerName = data_get($condition, static::CONDITION_HANDLER_NAME); | |||||
| if ($handlerName) { | |||||
| $table->where($this->makeColumnName([static::TABLE_HANDLER, User::COL_NAME_NAME]), 'like', "%{$handlerName}%"); | |||||
| } | |||||
| $table->select($this->columns()); | $table->select($this->columns()); | ||||
| $main = DB::table($table, "main"); | $main = DB::table($table, "main"); | ||||