Browse Source

全体的に整備

develop
sosuke.iwabuchi 2 years ago
parent
commit
77b6217818
7 changed files with 121 additions and 48 deletions
  1. +17
    -3
      app/Http/Controllers/Web/Auth/Me.php
  2. +0
    -9
      app/Http/Controllers/Web/Auth/MeController.php
  3. +6
    -1
      app/Http/Controllers/Web/Custom/HelloTechno/ReceiptIssuingOrdersController.php
  4. +20
    -8
      app/Http/Controllers/Web/Custom/HelloTechno/ReceiptIssuingsOrdersParam.php
  5. +1
    -1
      app/Logic/ReceiptIssuingOrder/CreateManager.php
  6. +19
    -24
      app/Models/Ex/LoginUser.php
  7. +58
    -2
      app/Repositories/Custom/HelloTechno/ReceiptIssuingOrderRepository.php

+ 17
- 3
app/Http/Controllers/Web/Auth/Me.php View File

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


+ 0
- 9
app/Http/Controllers/Web/Auth/MeController.php View File

@@ -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 {
// }
} }
} }

+ 6
- 1
app/Http/Controllers/Web/Custom/HelloTechno/ReceiptIssuingOrdersController.php View File

@@ -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([


+ 20
- 8
app/Http/Controllers/Web/Custom/HelloTechno/ReceiptIssuingsOrdersParam.php View File

@@ -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(),
); );


+ 1
- 1
app/Logic/ReceiptIssuingOrder/CreateManager.php View File

@@ -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("契約不良");
} }


+ 19
- 24
app/Models/Ex/LoginUser.php View File

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

+ 58
- 2
app/Repositories/Custom/HelloTechno/ReceiptIssuingOrderRepository.php View File

@@ -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");


Loading…
Cancel
Save